Thanks for the stack trace Duane! We'll have a look at it and get back to you :-)!
- Chris On 09/08/2006, at 1:49 AM, Duane McBride wrote: > Thanks for your feedback and I apologize for not being more thorough. > Normally, I wouldn't even bother to report errors I was > encountering and > would continue searching for another tool, but I really like this > particular > tool in comparison to the others I have located, particularly the > HTML view. > Even with only the Table Editor functional, this tool would make > maintaining > the partcular ldap directory I am working on far easier. I just > want to > make sure that I have not done something wrong to cause this error. > > I am using standard supplied schemas and have provided a copy of the > slapd.conf. This is just a development, test environment. I am > using a > Berkeley backend. Berkeley DB4 (4.3.27-3) and OpenLDAP (2.2.23-5) > running > on an FC4 box. > > Following is an example of trying to change the "Initials" in an > Inetorgperson using the HTML view, but as I indicated, the errors and > process are the same regardless of the field I attempt to update. The > message that appears in Jxplorer is "Unable to perform modify > operation". > In Jxplorer the details indicate the following: > > javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: > error > code 17 - Person: attribute type undefined]; remaining name 'cn=Test > User,ou=members,dc=mycompanytest,dc=com' > > Following is the ldap.log entries corresponding to the attempted > update. > > Aug 8 10:22:14 email2 slapd[26790]: daemon: activity on 1 descriptors > Aug 8 10:22:14 email2 slapd[26790]: daemon: activity on: > Aug 8 10:22:14 email2 slapd[26790]: 10r > Aug 8 10:22:14 email2 slapd[26790]: > Aug 8 10:22:14 email2 slapd[26790]: daemon: read activity on 10 > Aug 8 10:22:14 email2 slapd[26790]: connection_get(10) > Aug 8 10:22:14 email2 slapd[26790]: connection_get(10): got connid=23 > Aug 8 10:22:14 email2 slapd[26790]: connection_read(10): checking > for input > on id=23 > Aug 8 10:22:14 email2 slapd[26790]: ber_get_next on fd 10 failed > errno=11 > (Resource temporarily unavailable) > Aug 8 10:22:14 email2 slapd[26790]: do_modify > Aug 8 10:22:14 email2 slapd[26790]: daemon: select: listen=6 > active_threads=0 tvp=NULL > Aug 8 10:22:14 email2 slapd[26790]: do_modify: dn (cn=Test > User,ou=members,dc=mycompanytest,dc=com) > Aug 8 10:22:14 email2 slapd[26790]: daemon: select: listen=7 > active_threads=0 tvp=NULL > Aug 8 10:22:14 email2 slapd[26790]: => get_ctrls > Aug 8 10:22:14 email2 slapd[26790]: => get_ctrls: > oid="2.16.840.1.113730.3.4.2" (noncritical) > Aug 8 10:22:14 email2 slapd[26790]: <= get_ctrls: n=1 rc=0 err="" > Aug 8 10:22:14 email2 slapd[26790]: >>> dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:22:14 email2 slapd[26790]: <<< dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com>, <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:22:14 email2 slapd[26790]: modifications: > Aug 8 10:22:14 email2 slapd[26790]: add: initials > Aug 8 10:22:14 email2 slapd[26790]: one value, length 3 > Aug 8 10:22:14 email2 slapd[26790]: add: Person > Aug 8 10:22:14 email2 slapd[26790]: one value, length 6 > Aug 8 10:22:14 email2 slapd[26790]: conn=23 op=13 MOD dn="cn=Test > User,ou=members,dc=mycompanytest,dc=com" > Aug 8 10:22:14 email2 slapd[26790]: conn=23 op=13 MOD > attr=initials Person > Aug 8 10:22:14 email2 slapd[26790]: send_ldap_result: conn=23 > op=13 p=3 > Aug 8 10:22:14 email2 slapd[26790]: send_ldap_result: err=17 > matched="" > text="Person: attribute type undefined" > Aug 8 10:22:14 email2 slapd[26790]: send_ldap_response: msgid=14 > tag=103 > err=17 > Aug 8 10:22:14 email2 slapd[26790]: conn=23 op=13 RESULT tag=103 > err=17 > text=Person: attribute type undefined > > Now, if I try exactly the same activity using the Jxplorer Table > Editor > view, I get the following in the ldap.log. The change is made > successfully, and an ldapsearch run directly on the server > identifies the > record as having been changed. > > Aug 8 10:26:56 email2 slapd[26790]: daemon: activity on 1 descriptors > Aug 8 10:26:56 email2 slapd[26790]: daemon: activity on: > Aug 8 10:26:56 email2 slapd[26790]: 10r > Aug 8 10:26:56 email2 slapd[26790]: > Aug 8 10:26:56 email2 slapd[26790]: daemon: read activity on 10 > Aug 8 10:26:56 email2 slapd[26790]: connection_get(10) > Aug 8 10:26:56 email2 slapd[26790]: connection_get(10): got connid=23 > Aug 8 10:26:56 email2 slapd[26790]: connection_read(10): checking > for input > on id=23 > Aug 8 10:26:56 email2 slapd[26790]: do_modify > Aug 8 10:26:56 email2 slapd[26790]: ber_get_next on fd 10 failed > errno=11 > (Resource temporarily unavailable) > Aug 8 10:26:56 email2 slapd[26790]: do_modify: dn (cn=Test > User,ou=members,dc=mycompanytest,dc=com) > Aug 8 10:26:56 email2 slapd[26790]: daemon: select: listen=6 > active_threads=0 tvp=NULL > Aug 8 10:26:56 email2 slapd[26790]: => get_ctrls > Aug 8 10:26:56 email2 slapd[26790]: => get_ctrls: > oid="2.16.840.1.113730.3.4.2" (noncritical) > Aug 8 10:26:56 email2 slapd[26790]: <= get_ctrls: n=1 rc=0 err="" > Aug 8 10:26:56 email2 slapd[26790]: >>> dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:26:56 email2 slapd[26790]: daemon: select: listen=7 > active_threads=0 tvp=NULL > Aug 8 10:26:56 email2 slapd[26790]: <<< dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com>, <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:26:56 email2 slapd[26790]: modifications: > Aug 8 10:26:56 email2 slapd[26790]: add: initials > Aug 8 10:26:56 email2 slapd[26790]: one value, length 3 > Aug 8 10:26:56 email2 slapd[26790]: conn=23 op=14 MOD dn="cn=Test > User,ou=members,dc=mycompanytest,dc=com" > Aug 8 10:26:56 email2 slapd[26790]: conn=23 op=14 MOD attr=initials > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify: cn=Test > User,ou=members,dc=mycompanytest,dc=com > Aug 8 10:26:56 email2 slapd[26790]: bdb_dn2entry("cn=Test > User,ou=members,dc=mycompanytest,dc=com") > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify_internal: 0x00000004: > cn=Test User,ou=members,dc=mycompanytest,dc=com > Aug 8 10:26:56 email2 slapd[26790]: <= acl_access_allowed: granted to > database root > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify_internal: add > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify_internal: replace > Aug 8 10:26:56 email2 last message repeated 2 times > Aug 8 10:26:56 email2 slapd[26790]: oc_check_required entry (cn=Test > User,ou=members,dc=mycompanytest,dc=com), objectClass "inetOrgPerson" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "objectClass" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "cn" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "mail" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "givenName" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "sn" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "uid" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "o" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "telephoneNumber" > > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "mobile" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "pager" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "facsimileTelephoneNumber" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "title" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "structuralObjectClass" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "entryUUID" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "creatorsName" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "createTimestamp" > > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "labeledURI" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "homePhone" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "userPassword" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "initials" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "entryCSN" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "modifiersName" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "modifyTimestamp" > > Aug 8 10:26:56 email2 slapd[26790]: => entry_encode(0x00000004): > cn=Test > User,ou=members,dc=mycompanytest,dc=com > Aug 8 10:26:56 email2 slapd[26790]: > bdb_dn2entry("cn=ldapsync,dc=mycompanytest,dc=com") > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify_internal: 0x00000005: > cn=ldapsync,dc=mycompanytest,dc=com > Aug 8 10:26:56 email2 slapd[26790]: <= acl_access_allowed: granted to > database root > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify_internal: replace > Aug 8 10:26:56 email2 slapd[26790]: oc_check_required entry > (cn=ldapsync,dc=mycompanytest,dc=com), objectClass "subentry" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_required entry > (cn=ldapsync,dc=mycompanytest,dc=com), objectClass > "syncProviderSubentry" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "objectClass" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "structuralObjectClass" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type "cn" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "subtreeSpecification" > Aug 8 10:26:56 email2 slapd[26790]: oc_check_allowed type > "contextCSN" > Aug 8 10:26:56 email2 slapd[26790]: => entry_encode(0x00000005): > cn=ldapsync,dc=mycompanytest,dc=com > Aug 8 10:26:56 email2 slapd[26790]: bdb_modify: updated id=00000004 > dn="cn=Test User,ou=members,dc=mycompanytest,dc=com" > Aug 8 10:26:56 email2 slapd[26790]: send_ldap_result: conn=23 > op=14 p=3 > Aug 8 10:26:56 email2 slapd[26790]: send_ldap_result: err=0 > matched="" > text="" > Aug 8 10:26:56 email2 slapd[26790]: send_ldap_response: msgid=15 > tag=103 > err=0 > Aug 8 10:26:56 email2 slapd[26790]: conn=23 op=14 RESULT tag=103 > err=0 > text= > Aug 8 10:26:56 email2 slapd[26790]: daemon: activity on 1 descriptors > Aug 8 10:26:56 email2 slapd[26790]: daemon: activity on: > Aug 8 10:26:56 email2 slapd[26790]: 10r > Aug 8 10:26:56 email2 slapd[26790]: > Aug 8 10:26:56 email2 slapd[26790]: daemon: read activity on 10 > Aug 8 10:26:56 email2 slapd[26790]: connection_get(10) > Aug 8 10:26:56 email2 slapd[26790]: connection_get(10): got connid=23 > Aug 8 10:26:56 email2 slapd[26790]: connection_read(10): checking > for input > on id=23 > Aug 8 10:26:56 email2 slapd[26790]: ber_get_next on fd 10 failed > errno=11 > (Resource temporarily unavailable) > Aug 8 10:26:56 email2 slapd[26790]: do_search > Aug 8 10:26:56 email2 slapd[26790]: daemon: select: listen=6 > active_threads=0 tvp=NULL > Aug 8 10:26:56 email2 slapd[26790]: daemon: select: listen=7 > active_threads=0 tvp=NULL > Aug 8 10:26:56 email2 slapd[26790]: >>> dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:26:56 email2 slapd[26790]: <<< dnPrettyNormal: <cn=Test > User,ou=members,dc=mycompanytest,dc=com>, <cn=Test > User,ou=members,dc=mycompanytest,dc=com> > Aug 8 10:26:56 email2 slapd[26790]: SRCH "cn=Test > User,ou=members,dc=mycompanytest,dc=com" 0 2 > Aug 8 10:26:56 email2 slapd[26790]: 0 0 0 > Aug 8 10:26:56 email2 slapd[26790]: begin get_filter > Aug 8 10:26:56 email2 slapd[26790]: PRESENT > Aug 8 10:26:56 email2 slapd[26790]: end get_filter 0 > Aug 8 10:26:56 email2 slapd[26790]: filter: (objectClass=*) > Aug 8 10:26:56 email2 slapd[26790]: => get_ctrls > Aug 8 10:26:56 email2 slapd[26790]: => get_ctrls: > oid="2.16.840.1.113730.3.4.2" (noncritical) > Aug 8 10:26:56 email2 slapd[26790]: <= get_ctrls: n=1 rc=0 err="" > Aug 8 10:26:56 email2 slapd[26790]: attrs: > Aug 8 10:26:56 email2 slapd[26790]: > Aug 8 10:26:56 email2 slapd[26790]: conn=23 op=15 SRCH base="cn=Test > User,ou=members,dc=mycompanytest,dc=com" scope=0 deref=2 > filter="(objectClass=*)" > Aug 8 10:26:56 email2 slapd[26790]: => bdb_search > Aug 8 10:26:56 email2 slapd[26790]: bdb_dn2entry("cn=Test > User,ou=members,dc=mycompanytest,dc=com") > Aug 8 10:26:56 email2 slapd[26790]: base_candidates: base: "cn=Test > User,ou=members,dc=mycompanytest,dc=com" (0x00000004) > Aug 8 10:26:56 email2 slapd[26790]: => test_filter > Aug 8 10:26:56 email2 slapd[26790]: PRESENT > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: search > access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "objectClass" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: <= test_filter 6 > Aug 8 10:26:56 email2 slapd[26790]: => send_search_entry: dn="cn=Test > User,ou=members,dc=mycompanytest,dc=com" > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "entry" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "objectClass" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "cn" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "mail" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "givenName" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "sn" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "uid" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "o" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "telephoneNumber" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "mobile" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "pager" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" > "facsimileTelephoneNumber" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "title" requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "labeledURI" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "homePhone" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:56 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "userPassword" > requested > Aug 8 10:26:56 email2 slapd[26790]: <= root access granted > Aug 8 10:26:57 email2 slapd[26790]: => access_allowed: read access to > "cn=Test User,ou=members,dc=mycompanytest,dc=com" "initials" requested > Aug 8 10:26:57 email2 slapd[26790]: <= root access granted > Aug 8 10:26:57 email2 slapd[26790]: conn=23 op=15 ENTRY dn="cn=Test > User,ou=members,dc=mycompanytest,dc=com" > Aug 8 10:26:57 email2 slapd[26790]: <= send_search_entry > Aug 8 10:26:57 email2 slapd[26790]: send_ldap_result: conn=23 > op=15 p=3 > Aug 8 10:26:57 email2 slapd[26790]: send_ldap_result: err=0 > matched="" > text="" > Aug 8 10:26:57 email2 slapd[26790]: send_ldap_response: msgid=16 > tag=101 > err=0 > Aug 8 10:26:57 email2 slapd[26790]: conn=23 op=15 SEARCH RESULT > tag=101 > err=0 nentries=1 text= > > Here is the slapd.conf: > > # > # See slapd.conf(5) for details on configuration options. > # This file should NOT be world readable. > # > include /etc/openldap/schema/core.schema > include /etc/openldap/schema/cosine.schema > include /etc/openldap/schema/inetorgperson.schema > include /etc/openldap/schema/nis.schema > > # Allow LDAPv2 client connections. This is NOT the default. > allow bind_v2 > > loglevel -1 > > # Do not enable referrals until AFTER you have a working directory > # service AND an understanding of referrals. > #referral ldap://root.openldap.org > > pidfile /var/run/slapd.pid > argsfile /var/run/slapd.args > > # Load dynamic backend modules: > # modulepath /usr/sbin/openldap > # moduleload back_bdb.la > # moduleload back_ldap.la > # moduleload back_ldbm.la > # moduleload back_passwd.la > # moduleload back_shell.la > > # The next three lines allow use of TLS for encrypting connections > using a > # dummy test certificate which you can generate by changing to > # /usr/share/ssl/certs, running "make slapd.pem", and fixing > permissions on > # slapd.pem so that the ldap user or group can read it. Your client > software > # may balk at self-signed certificates, however. > # TLSCACertificateFile /usr/share/ssl/certs/ca-bundle.crt > # TLSCertificateFile /usr/share/ssl/certs/slapd.pem > # TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem > > # Sample security restrictions > # Require integrity protection (prevent hijacking) > # Require 112-bit (3DES or better) encryption for updates > # Require 63-bit encryption for simple bind > # security ssf=1 update_ssf=112 simple_bind=64 > > # Sample access control policy: > # Root DSE: allow anyone to read it > # Subschema (sub)entry DSE: allow anyone to read it > # Other DSEs: > # Allow self write access > # Allow authenticated users read access > # Allow anonymous users to authenticate > # Directives needed to implement policy: > # access to dn.base="" by * read > # access to dn.base="cn=Subschema" by * read > # access to * > # by self write > # by users read > # by anonymous auth > # > # if no access controls are present, the default policy > # allows anyone and everyone to read anything but restricts > # updates to rootdn. (e.g., "access to * by * read") > # > # rootdn can always read and write EVERYTHING! > > access to * > by * read > > ###################################################################### > # > # ldbm and/or bdb database definitions > ###################################################################### > # > > database bdb > suffix "dc=mycompanytest,dc=com" > directory /var/lib/ldap > rootdn "cn=Manager,dc=mycompanytest,dc=com" > # Cleartext passwords, especially for the rootdn, should > # be avoided. See slappasswd(8) and slapd.conf(5) for details. > # Use of strong authentication encouraged. > rootpw secret > > # The database directory MUST exist prior to running slapd AND > # should only be accessible by the slapd and slap tools. > # Mode 700 recommended. > directory /var/lib/ldap > > # Indices to maintain for this database > index objectClass eq,pres > index ou,cn,mail,surname,givenname eq,pres,sub > index uidNumber,gidNumber,loginShell eq,pres > index uid,memberUid eq,pres,sub > index nisMapName,nisMapEntry eq,pres,sub > > # Replicas of this database > #replogfile /var/lib/ldap/openldap-master-replog > #replica host=ldap-1.example.com:389 starttls=critical > # bindmethod=sasl saslmech=GSSAPI > # authcId=host/[EMAIL PROTECTED] > > > > ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Jxplorer-users mailing list Jxplorer-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jxplorer-users