qldapadmin-1.0-RC1/0040755000175000000000000000000007556437456013101 5ustar muratwheelqldapadmin-1.0-RC1/CHANGELOG0100644000175000000000000000176507403114413014271 0ustar muratwheel Mon Dec 4 01:44:00 GMT 2001 * As a graphical user interface, Using Qt development libraries, a GUI is available: qldapadmin * Fixed several "core dumps" in qlistdomain and qlistusers * Some crucial configuration parameters (Base Dn, Ldap Server, Ldap Password... ) have been removed to a configuration file, so that a minor change should not require a complete rebuilding. * Some more system binaries are addes: qaddforward for adding mail forwarding addresses qaddalternate for adding mail alternate addresses qdelforward for deleting mail forwarding addresses qdelalternate for deleting mail alternate addresses setaccountstatus setdeliverymode * configuration file and other file operations are secured. via umask() * nearly all code has been re-organized in ANSI C++ fashion. Both style and ANSI compliance problems have been solved. * Removed some fancy and buggy pointers from code. * code has been carried over CVS. Mon Jul 2 15:10:00 GMT 2001 * First Public Release qldapadmin-1.0-RC1/AUTHORS0100644000175000000000000000145107403114413014117 0ustar muratwheelEnderUNIX QLDAPAdmin 1.0 RC1 AUTHORS ======================================= Maintainers: Coders: ------- Murat BALABAN Coding & Documentation Ismail YENIGUL Coding & Testing Documentation and Manual Pages: ------------------------------- Omer Faruk Sen Building and Installing Qmail-LDAP and supplying knowledge base about LDAP Manual Pages Previous Contributors: --------------------- Recep ULGEN Coding & Design Sensei Darth Maul Giving valuable advice, debugging, security audit To send mail to all of us: roots@enderunix.org (c) 2001, EnderUNIX Software Development Team @ Istanbul, Turkiye http://www.EnderUNIX.org/ mailto:roots@enderunix.org Mon Dec 4 01:44:02 GMT 2001 qldapadmin-1.0-RC1/INSTALL-GUI0100644000175000000000000001066507403133432014533 0ustar muratwheelMaking and Installing EnderUNIX QLDAPAdmin v.1.0-Release Candidate 1 --------------======================================================= This file provides brief instructions on how to build and install QLDAPAdmin Graphical User Interface on UNIX (and UNIX-like) system. More detailed information and instructions can be found in EnderUNIX website: (http://www.enderunix.org/qldapadmin/INSTALL-GUI). It is recommended that you read, or at least skim through, ALL of the instructions in this file before attempting to build the software. PREREQUISITES: 1. Qt library 2.3.0 or higher from trolltech. If you don't have it, go and get it from http://www.trolltech.com Most popular Linux distros and BSDs provide this by default, so if you are running one of those, you won't need to bother about this. Making and Installing GUI version ----------------------------------------------- 1. For the gui version to be compiled, you should have successfully compiled the standart version found at qldapadmin-VERSION/src (replacing VERSION with the appropriate version string). 3. Edit Makefile and change SH, CC, CFLAGS, LDFLAGS, CPPFLAGS and LIBS values, in your qldapadmin-VERSION/src directory. Note that your LDAP distribution's header files and libraries should be pointed out by CPPFLAGS, LDFLAGS and LIBS directives. Variable Description Example CC C++ compiler g++ CPPFLAGS cpp flags -I/path/include LDFLAGS ld flags -L-L/usr/lib/qt-2.3.1/lib /usr/local/lib LIBS libraries -lqt -ldap -llber -lcrypt If your OS is FreeBSD, you can simply copy Makefile.FreeBSD to Makefile, for a running Makefile :) For the time being, we coulnd't test the GUI in Solaris. One single note for FreeBSD users, you should use "gmake" not the make program that comes with FreeBSD. 4. Type: % gmake If all goes well, a gui binary "qldapadmin" will be compiled. However for this step to become successfull, you will need to supply the needed variables in Makefile and qconfig.h 5. install the binary. You may need to become the super-user (e.g. root) to do this (depending on where you are installing things): % su root -c 'make install' Binary will be installed in /usr/local/bin 6. Copy qldapadmin-VERSION/src/qldapadmin.conf.sample as your CONFIGFILE and edit it with your favorite editor to change settings. LDAP_USER "cn=root, dc=enderunix, dc=org" This should be a user who is capable of doing write operations in the LDAP database. LDAP_PASSWORD "secret" Your password you use when binding to your LDAP server LDAP_BASEDN "dc=enderunix, dc=org" LDAP_SERVER "localhost" Self explanatory though, your ldap server's hostname or IP LDAP_PORT 389 Most of the time you won't need to change this. The port number that your LDAP server binds to MAILHOST "agayev.enderunix.org" Default mailhost ;) DEFAULT_QUOTA_SIZE="10000000" If you set HARDQUOTA directive in qconfig.h, this should not be left blank. This is the quota for the user in *bytes*. DEFAULT_QUOTA_COUNT="1000" If you set HARDQUOTA directive in qconfig.h, this should not be left blank. This is the quota for the user measured in units e.g. mails 7. That's it! Before you start using QLDAPAdmin you must create your base DN in the LDAP Server. To create base DN edit ld.txt file in this directory and run the following command. root# ldapadd -D"cn=root, dc=enderunix, dc=org" -w secret -f ld.txt change "cn=root, dc=enderunix, dc=org" value with your LDAP_USER value and "secret" value with your LDAP_PASSWORD value that you define in qconfig.h 8. To start playing around, just type: qldapadmin and have fun! PS. Of course I don't feel the need to tell that you need a running X server to run this. If you cannot figure this out, you are in a very very bad condition... (c) 2001, EnderUNIX Software Development Team @ Istanbul, Turkiye http://www.EnderUNIX.org/ mailto:roots@enderunix.org End of INSTALL file. Mon Dec 4 03:16:09 GMT 2001 qldapadmin-1.0-RC1/COPYING0100644000175000000000000000335707403111212014103 0ustar muratwheelCopyright (c) 2001 EnderUNIX Software Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code 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. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors. 4. Neither the name of the EnderUNIX Software Development Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. Tue Dec 4 09:08:23 GMT 2001 qldapadmin-1.0-RC1/INSTALL0100644000175000000000000002065307556435621014125 0ustar muratwheelMaking and Installing EnderUNIX QLDAPAdmin v.1.0-Release Candidate 1 ==================================================================== This file provides brief instructions on how to build and install QLDAPAdmin on UNIX (and UNIX-like) system. More detailed information and instructions can be found in EnderUNIX website: (http://www.enderunix.org/qldapadmin/INSTALL). It is recommended that you read, or at least skim through, ALL of the instructions in this file before attempting to build the software. Making and Installing ----------------------------------------------- 1. Unpack the software and change directory: % tar xfz qldapadmin-VERSION.tar.gz % cd qldapadmin-VERSION (replacing VERSION with the appropriate version string). If you are reading this file, you probably have already done this!:)) 2. Edit file named qconfig.h in qldapadmin-VERSION/src and make appropriate changes to suit your system. (NOTE: a "#" is NOT a comment! use "//" or "/* ... */" to comment out stuff!) If your OS is Linux, comment out #define LINUX directive, similarly, if you are using Solaris, #define SOLARIS should be commented out! If you like to force quota addition to users when they are first created set this uncommented. If you uncomment this, make sure that you set the DEFAULT_QUOTA_SIZE and DEFAULT_QUOTA_COUNT parameters in your configuration file. #define HARDQUOTA 1 If you want your configuration file in a different place, change this to your liking... #define CONFIGFILE "/usr/local/etc/qldapadmin.conf" #define MAXFORWARDS 3 Maximun number of mailForwardingAddress values #define MAXALTERNATES 3 Maximum number of mailAlternateAddress values 3. Edit Makefile and change SH, CC, CFLAGS, LDFLAGS, CPPFLAGS and LIBS values, in your qldapadmin-VERSION/src directory. Note that your LDAP distribution's header files and libraries should be pointed out by CPPFLAGS, LDFLAGS and LIBS directives. Variable Description Example CC C++ compiler g++ CFLAGS C++ flags -O2 --pipe CPPFLAGS cpp flags -I/path/include LDFLAGS ld flags -L/usr/local/lib LIBS libraries -ldap -llber -lcrypt If your OS is Solaris, you can simply copy Makefile.Solaris to Makefile, for a running Makefile :) 4. Type: % make If all goes well, all binaries will be compiled. However for this step to become successfull, you will need to supply the needed variables in Makefile and qconfig.h 5. install the binaries. You may need to become the super-user (e.g. root) to do this (depending on where you are installing things): % su root -c 'make install' Binaris will be installed in /usr/local/bin Installed tools are: qaddaltaddr qadddomain qaddforward qadduser qdelaltaddr qdeldomain qdelforward qdeluser qlistdomains qlistusers qmodifyuser qpasswd qsetacctstatus qsetdeliverymode qsetmailhost qsetmsgstore qsetquota quserinfo 6. Copy qldapadmin-VERSION/src/qldapadmin.conf.sample as your CONFIGFILE and edit it with your favorite editor to change settings. LDAP_USER "cn=root, dc=enderunix, dc=org" This should be a user who is capable of doing write operations in the LDAP database. LDAP_PASSWORD "secret" Your password you use when binding to your LDAP server LDAP_BASEDN "dc=enderunix, dc=org" LDAP_SERVER "localhost" Self explanatory though, your ldap server's hostname or IP LDAP_PORT 389 Most of the time you won't need to change this. The port number that your LDAP server binds to MAILHOST "freefall.enderunix.org" Default mailhost ;) DEFAULT_QUOTA_SIZE="10000000" If you set HARDQUOTA directive in qconfig.h, this should not be left blank. This is the quota for the user in *bytes*. DEFAULT_QUOTA_COUNT="1000" If you set HARDQUOTA directive in qconfig.h, this should not be left blank. This is the quota for the user measured in units e.g. mails 7. That's it! Before you start using QLDAPAdmin you must create your base DN in the LDAP Server. To create base DN edit ld.txt file in this directory and run the following command. root# ldapadd -D"cn=root, dc=enderunix, dc=org" -w secret -f ld.txt change "cn=root, dc=enderunix, dc=org" value with your LDAP_USER value and "secret" value with your LDAP_PASSWORD value that you define in qconfig.h 8. GUI If you also want to have a GUI at hand, you should compile the GUI. For this, read the file INSTALL-GUI and follow the instructions explained there. How to Add Domain: ================== You should've created the BASE_DN entry in your LDAP server. If you didn't consult OpenLDAP documentation or the docs of your LDAP distribution. If your BASE_DN exists, then simply type: # qadddomain or # qaddomain -c domain_description domainname How to Add Users: ================= simply run qadduser. If no argument is given qadduser will ask you the questions about the user and will create the appropriate entries in the LDAP server. Avalible options to qadduser: -u mail address -s mail server -p password -q mail quota in the format: 10000S, 100C -d mailMessageStore -c Gecos -h help secreen -v version information Example: # qadduser -u tosbi@enderunix.org -p aaa -s freefall.enderunix.org \ -c "Big Tosbi" -q "10000000S, 1000C" -d /usr/home/foo/bar or # qadduser How to Delete Domain: ===================== run qdeldomain! # qdeldomain or # qdeldomain -d enderunix.org -f -f is to force deletion (do not ask for confirmation) How to Delete User: =================== run qdeluser! # qdeluser or # qdeluser tosbi@enderunix.org How to Change Password: ======================= # qpasswd -p new_password deliali@enderunix.org or # qpasswd How to Modify a User: ===================== # qmodifyuser How to get information about a user: ==================================== # quserinfo roots@enderunix.org How to Set User Quota: ====================== # qsetquota -s 10000000 -c 1000 ali@veli.com where -s specifies mail size and -c specifies mail count. How to Set Mail Host: ===================== # qsetmailhost -m ali@enderunix.org freefall.enderunix.org How to Set User Mail Message Store: =================================== # qsetmsgstore -m /usr/home/alibaba alibaba@enderunix.org How to List Qmail Domains: ========================== # qlistdomains How to List Qmail Users for a Domain: ===================================== # qlistusers enderunix.org How to add Mail Forwarding Address for a user: ============================================== # qaddforward -f forward@other_domain.com user@domain.com How to delete Mail Forwarding Address for a user: ================================================= # qdelforward -f forward@other_domain.com user@domain.com How to add Mail Alternate Address for a user: ============================================== # qaddaltaddr -a forward@other_domain.com user@domain.com How to delete Mail Alternate Address for a user: ================================================= # qdelaltaddr -a forward@other_domain.com user@domain.com How to set account status for a user: ===================================== # qsetacctstatus -s [active|disabled|nopop] username e.g. # qsetacctstatus -s active isa@enderunix.com How to set delivery mode for a user ===================================: # qsetdeliverymode -m [echo|forwardonly|localdelivery|normal|reply|nombox] username e.g. # qsetdeliverymode -m forwardonly ahmet@enderunix.com You may use -h switch to get help! or you can use man [qldapadmin binary] to get the man page. (c) 2001, EnderUNIX Software Development Team @ Istanbul, Turkiye http://www.EnderUNIX.org/ mailto:roots@enderunix.org End of INSTALL file. Mon Dec 4 03:06:09 GMT 2001 qldapadmin-1.0-RC1/gui/0040755000175000000000000000000007403171420013636 5ustar muratwheelqldapadmin-1.0-RC1/gui/AboutBox.cpp0100644000175000000000000015773307403134047016106 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'aboutbox.ui' ** ** Created: Tue Dec 4 16:43:13 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "AboutBox.h" #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "288 82 256 2", "b2 c #000033", "b4 c #330000", "ac c #330033", "bU c #333300", "#Q c #333333", "#4 c #333366", "b5 c #336633", "av c #336666", "bh c #336699", "b8 c #343434", "bO c #3d3d3d", ".U c #404040", "#U c #414040", "bQ c #414141", ".D c #454545", "aL c #46413e", "ai c #491a00", "aX c #4c423c", "bq c #4c4c4c", "aY c #503b2f", "#D c #505050", ".W c #584438", "#w c #5a5a5a", ".X c #616161", "ah c #652400", ".9 c #654534", ".G c #656565", "at c #660033", "aG c #660066", "#A c #663333", "#G c #663366", "b1 c #666633", "#z c #666666", "a1 c #666699", "b0 c #6666cc", "bM c #669966", "aU c #669999", "a8 c #6699cc", "bY c #673467", "bC c #683535", "b7 c #683668", "aK c #686868", "bS c #6b3939", "#u c #6b6b6b", "aN c #6f4730", ".F c #70544d", "#O c #707070", ".H c #716e6b", ".V c #73472f", "bK c #74645b", "#. c #757575", ".I c #7c7c7c", "#Y c #7d482c", "a2 c #808080", "aW c #82492a", "bp c #834320", "#x c #848484", "bW c #89b1b1", "ap c #8a3100", "#p c #8a4a28", "bI c #8a5f48", ".C c #8c4a27", ".w c #8c8c8c", "aQ c #909090", ".8 c #924b24", "aJ c #928f8d", "#e c #949494", "#H c #984c22", "a5 c #984c23", "au c #990000", "ao c #990033", "#J c #993333", "#L c #993366", "bE c #996448", "#V c #996633", "#P c #996666", "#K c #999967", "#F c #999999", "#W c #9999cc", "aV c #99cccc", "bR c #9a3535", "#B c #9a679a", ".Y c #9a9a9a", ".B c #9c4d22", "as c #9cce9c", "#0 c #9d6c6c", ".J c #9d9997", "bk c #9d9d9d", "bs c #9f3f3f", "bT c #9f7070", "aZ c #a04c1e", "## c #a1a1a1", "bm c #a37676", "bj c #a4430e", "#1 c #a4a4a4", "bw c #a55930", "#m c #a6a6a6", "a0 c #a74e1e", "#q c #a7a7a7", "br c #a86b4a", "bx c #a87458", "#f c #a9a9a9", "#j c #adadad", "bB c #add2d2", "ad c #af4f1b", "a7 c #b0643b", "bl c #b29d92", ".K c #b2a9a4", ".A c #b3501a", "#a c #b3b3b3", "aj c #b54000", "#i c #b7b7b7", ".Z c #b9b9b9", "ba c #bb4300", "bP c #bbe1de", "a9 c #bc7147", "bu c #be957e", "#k c #bebebe", ".7 c #bf5115", "bV c #c2a3c2", ".L c #c3c3c3", "aR c #c68c6b", "#r c #c9cbc9", ".z c #cb5311", "bo c #cb5e22", "bL c #cc0000", "bD c #cc0033", "#8 c #cc3333", "#Z c #cc3366", "ab c #cc6633", "af c #cc6666", "aC c #cc6699", "aT c #cc9966", "#9 c #cc9999", "#t c #cc99cc", "#3 c #cccc99", "#y c #cccccc", "#5 c #ccccff", "aa c #cdcdcd", "aO c #cea792", "bH c #cf845a", "#v c #cfcfcf", "#C c #d1540f", "#2 c #d1a3a3", "a3 c #d1d1d4", "b9 c #d5ffd5", "bi c #d68a61", ".T c #d6d6d6", "ax c #da4d00", "#I c #dadada", "#7 c #db550c", "a6 c #dc9167", "#l c #dcdcdc", "bf c #e06927", "aI c #e07f4a", ".y c #e1570b", "bG c #e27438", "a4 c #e2b69f", "#b c #e2e2e2", "aA c #e46f2e", "#T c #e65708", ".4 c #e7e7e7", ".6 c #e95708", "b# c #e9631a", "aE c #e9e9e9", "bZ c #e9e9ff", "am c #ea9668", "bn c #eaddd7", "aq c #ebcab8", "ag c #ec5300", "b. c #eda178", ".5 c #ededed", "aS c #ee6920", "by c #ee6f2b", "#o c #ef5805", "bb c #f1f1f1", "be c #f25804", "bF c #f3722c", "aP c #f46314", ".3 c #f4f4f4", "aM c #f65700", "a# c #f75903", "bJ c #f86a1c", ".0 c #f9f9f9", ".x c #fb5a02", "#c c #fbfbfb", "#6 c #fd7e38", "bc c #fdfdfd", "aD c #fe5a00", "bd c #fe5b01", "al c #fe5c03", ".o c #fe752b", ".R c #fec7a9", "#d c #fefefe", ".p c #ff5a00", "bA c #ff5a01", ".k c #ff5b01", ".j c #ff5e06", ".i c #ff610a", ".h c #ff6511", "bN c #ff6917", ".g c #ff6f21", ".v c #ff7226", ".f c #ff782e", "#X c #ff7a31", ".l c #ff813d", "#n c #ff8340", "bg c #ff8745", "ak c #ff8746", "#S c #ff8a4b", ".m c #ff8f51", ".u c #ff9155", "aw c #ff955b", ".e c #ff9c66", ".S c #ff9f6a", "#N c #ffa270", ".O c #ffa676", ".d c #ffa97a", ".N c #ffae82", "ay c #ffb186", "bt c #ffb389", "az c #ffb38a", ".t c #ffb48b", ".P c #ffb68e", ".c c #ffb993", ".M c #ffbe9a", "aB c #ffc09e", ".q c #ffc3a2", "ae c #ffc8aa", ".b c #ffcbaf", "an c #ffcccc", "b3 c #ffceff", "bv c #ffd0b6", ".2 c #ffd1b8", "bX c #ffd2d2", "#R c #ffd3bb", ".s c #ffd7c0", ".a c #ffdcc9", "#h c #ffe0cf", "#s c #ffe3d4", ".E c #ffe5d7", "#M c #ffe8dc", ".1 c #ffeadf", ".Q c #ffeee4", ".# c #fff0e7", "a. c #fff3ec", "aH c #fff5ef", "#E c #fff6f2", ".r c #fff9f5", ".n c #fffaf8", "bz c #fffdfe", "ar c #fffefd", "#g c #fffefe", "aF c #ffffcc", "b6 c #ffffd0", "Qt c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.d.eQtQt.f.g.h.i.j.k.k.jQtQt.g.f.l.m.e.d.c.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.n.aQtQt.m.o.i.p.p.p.p.pQtQt.p.p.p.p.p.p.p.pQtQt.p.p.p.p.p.p.p.pQtQt.o.m.d.q.a.nQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.r.s.t.u.v.pQtQt.p.p.p.p.p.p.p.p.wQt.p.p.x.y.z.A.B.C.DQt.E.F.G.H.I.w.J.K.LQt.a.b.M.N.e.e.O.PQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.Q.R.S.f.p.p.p.p.p.TQt.p.p.p.p.p.p.p.p.UQt.t.V.W.U.U.U.U.U.UQtQt.U.U.U.U.U.U.U.UQtQt.X.I.Y.Z.T.0.1QtQt.q.2.QQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.3.4.4QtQtQtQtQtQtQt.0.4.4.4.0Qt.4.3Qt.5.5Qt.0.4.4.3QtQt.5.5Qt.4.5Qt.5.4.4.3.3.4.0.0.4.3QtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.r.b.S.v.p.p.p.p.p.p.p.p.UQt.p.p.p.p.6.7.8.9.UQtQt.U.U.D.X#..w###aQtQt#b.5.3#c#d#d#c.3QtQt.T.L#a##.w.w#e#fQtQt#g#h.s.a.rQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b#i#j#k#i#j#lQtQtQtQtQt#l#m#m#m.5.3#m.TQt#a.LQt#l#m#m#m.4Qt#a.L.T#m.TQt#a#m#m.T#b#m.T.T#m.4QtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.E.t#n.p.p.p.p.p.p.p.p.p.p.p.UQt.p#o.7#p.W.U.U.U.UQtQt#q#r.4QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.4QtQt.Z#r.5Qt.##s.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#t#u.LQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#l#j.4QtQtQt.4#m.5QtQtQtQt.3#r#m.4Qt.4#m.4Qt#m.TQt.T#m.3#m.TQt#m#r#j#a.0Qt#m#r.4.3.0#m.L#m#vQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#h.d.o.p.p.p.p.p.p.p.p.p.p.p.p.p.UQt.N.9.U.U.U#w#x#j.TQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#d#l#v.T.0Qt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#y#z#A#BQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b#j.0.4.L.L.L.5#r.TQtQtQtQtQt#k#iQtQt.T#m.0.4#m#bQt#k#i.T#m#b.4#m#m#m#bQt.4#m.L.TQtQt#i#m#a.0QtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.1.N.o.p.p.p.p.p.p.p.p.p.p.p.p.p.p#C.UQtQt.U#D#x#i.4QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5#l.5Qt#E#EQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#F#A#G#zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#F#yQtQtQtQtQtQtQtQtQtQtQtQtQtQt#i#l.4#m.4#v#aQt#r.TQtQtQtQtQt#a.LQtQt#r#jQt#l#m.5Qt#a#m#m#rQt#l#m#m#jQtQt#l#m#m#iQtQt.T#m#bQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.q#n.p.p.p.p.p.p.p.p.p.p.p.p.p.p.y#H.W.UQtQt###IQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5.5Qt.rQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z#J#A#zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#K#L#FQtQtQtQtQtQtQtQtQtQtQtQtQt#mQt#i#vQt#a.T.3#m.3QtQtQtQt.0#m.TQtQt#k#kQt#v#mQt.0#m#m#m.3Qt#v#m#j#m.0Qt#v#mQtQtQtQt#v#mQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#M#N.j.p.p.p.p.p.p.p.p.p.p.p.p.p.p.A.9.U.U#OQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.3.3Qt.nQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#P#J#G#QQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#J#J#FQtQtQtQtQtQtQtQtQtQtQtQt#mQt#m.T.T#m#l#a#lQtQtQtQtQt.4#m.4QtQt#m.L.0#a#kQt.4#m.L#m#lQt#k#k.L#m.4Qt#k#a.T.4QtQt#k#kQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt#R#S.p.p.p.p.p.p.p.p.p.p.p.p.p.p#T.8#U.U.X#q.5QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.0QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#P#V#G#A#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#B#P#A#WQtQtQtQtQtQtQtQtQtQtQt#j.4.T#k.T.L#k.TQtQtQtQtQtQt.T#m.3QtQt#k#m#m#j.4Qt.T#m#b#m.LQt#j#r.T#m.TQt#j#m#m.TQtQt#j#rQtQtQtQtQtQt", "QtQtQtQtQtQtQt.b#X.p.p.p.p.p.p.p.p.p.p.p.p.p.p#C#Y.U.U.w.TQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.0QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#P#Z#J#A#A#QQtQtQtQt#F.Y#0#O#1#2QtQtQtQtQtQtQtQtQtQtQt#3#J#A#AQtQtQtQtQtQtQtQtQtQtQt#l#m#v.4.4.T#a#lQtQtQtQtQtQt.3.4QtQtQtQt.4.4.0QtQt.3.4Qt.4.5Qt.4.3.0.4.3Qt.4.4.4.0QtQt.4.3QtQtQtQtQtQt", "QtQtQtQtQtQt.b.o.p.p.p.p.p.p.p.p.p.p.p.p.p.p#C.V.U#w#j#dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#L#J#z#A#A#Q#G#K#G#A#J#G#A#A#A#4#A#z#FQtQtQtQtQtQtQtQt#5#J#A#G#zQtQtQtQtQtQtQtQtQtQtQt.4#r#k#k#v.3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.s#6.p.p.p.p.p.p.p.p.p.p.p.p.p.p#7.V.U#u.LQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#B#8#8#L#Q#G#A#Q#A#A#L#A#A#A#A#Q#A#A#Q#A#G#9QtQtQtQtQtQt#y#J#A#A#4#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQta..u.p.p.p.p.p.p.p.p.p.p.p.p.p.pa##p.U#uaaQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a#hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#L#8#8#A#A#Gab#L#J#J#A#J#L#A#Q#Aac#A#A#Q#A#Q#PQtQtQtQtQt#F#J#G#Q#A#BQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQt.P.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pad.U.X#rQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtae.l#MQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#A#Jab#G#J#L#V#L#Aaf#J#Z#J#8#A#Q#A#Aac#A#Q#A#Q#FQtQtQt#L#J#J#A#A#Q#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.1#X.p.p.p.p.p.p.p.p.p.p.p.p.p.pagahaiaj.p.p.p.p.p.p.pQtQtak.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.RalamQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#L#Z#A#J#J#9Qtan#P#J#L#K#P#Z#L#A#A#A#A#A#A#A#A#A#A#J#Jao#8#G#A#Q#A#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.M.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pajaiap.p.p.p.p.p.p.p.pQtQt.p.p.v.d.sQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.pa#aqQtQtQtQt.r.1arQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#P#J#P#J#yQtQt#y#8#PQtQtQtas#J#J#Qat#G#Aat#G#A#A#Z#Jau#J#Aat#Q#A#AavQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtaw.p.p.p.p.p.p.p.p.p.p.p.p.p.p.papaiax.p.p.p.p.p.p.p.p.UQt.p.p.p.p.p.i#Say.q.aa.QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaz.p.paA.##h.M.S#6aBQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#W#V#L#FQtQtQtaC#PQtQtQtQtQt#P#Z#A#A#A#A#A#A#L#J#J#J#J#A#A#A#A#Q#A#BQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pahap.p.p.p.p.p.p.p.p.p.UQt.p.p.p.p.p.p.p.p.p.p.p.i#X.u#N.M.s#sQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#aw.paDa#.g.i.p.p.O.0aE#dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaF#G#PQtQtQtQt#P#9QtQtQtQtQt#9#J#8#L#A#A#A#A#A#J#AaG#J#A#A#4ac#A#G#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.i.p.p.p.p.p.p.p.p.p.p.p.p.p.p.paiaj.p.p.p.p.p.p.p.p.p.UQt.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.v#X#S.e.e#N.MQtQtaHae.c.O.m#X.i.p.p.paD.p.paIaJaK#iQtQtQtQtQt#hazazazaeQtQtQtQtQtQtQtQtQtQtQtazazazazaHQtQtQtQt#hazazazazazazazazazazazazazazazaHQtQtQtQtQtQtQtQtQt#hazazazazazazazazazazazazazazazazazazazQtQtQtQtQtQtQtQtQt#hazazazazazazazazazazazazazazazaHQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#y#A#tQtQtQt#3#BQtQtQtQtQtQt#t#8#L#A#J#G#J#G#A#A#A#A#A#4#A#Q#A#A#zQtQt#hazazazaeQtQtQtQtQtQtQtQtQtQtQtazazazazaHQtQtQtQt#hazazazaeQtQtQtQtQt#hazazazaeQtQtQtQtQtQtQtQtQtQtQtazazazazaHQtQtQt", "QtQtQt.i.p.p.p.p.p.p.p.p.p.p.p.p.p.p.paiax.p.p.p.p.p.p.p.p.p.UQt.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.v#X#S.e.e#N.MQtQt.#aw.h.p.p.p.p.p.p.p.p.p.7aL.U.YQtQtQtQtQtQtaz.p.p.pazQtQtQtQtQtQtQtQtQtQtQt.p.p.p.pQtQtQtQtQtaz.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pQtQtQtQtQtQtQtQtQtQtaz.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pQtQtQtQtQtQtQtQtQtaz.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#F#PQtQtQtQtaC#yQtQtQtQtQtQt#y#Z#8#J#A#A#A#A#A#4#A#A#Aat#Q#A#4#QQtQtQtaz.p.p.pazQtQtQtQtQtQtQtQtQtQtQt.p.p.p.pQtQtQtQtQtaz.p.p.pazQtQtQtQtQtaz.p.p.pazQtQtQtQtQtQtQtQtQtQtQt.p.p.p.pQtQtQtQt", "QtQtQt.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pahaM.p.p.p.p.p.p.p.p.p.UQt.p.p.p.p.p.p.p.p.p.p.pa##7.7ad.CaN.9.U.U#w#z#..w.w#e#aQtar.5aOaIaPaD.p.p.p.p.p#o.9#UaQ#cQtQtQtQtQtQt.u.p.p.paR#kQtQtQtQtQtQtQtQtQt#h.p.p.paS#q.3QtQtQt.u.p.p.p.p.p.p.p.p.p.p.p.p.p.paS#q.3QtQtQtQtQtQtQtQt.u.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.paA#qQtQtQtQtQtQtQtQt.u.p.p.p.p.p.p.p.p.p.p.p.p.p.paS#q.3QtQtQtQtQtQtQtQtQtQtQtQtQtQt#FaT#5aUaVQt#z#yQtQtQtQtQtQt#y#8#J#J#Jat#A#A#Q#A#Q#A#Q#A#A#Q#A#tQtQtQt.u.p.p.paR#kQtQtQtQtQtQtQtQtQt#h.p.p.paS#q.3QtQtQt.u.p.p.paR#kQtQtQtQt.u.p.p.paR#kQtQtQtQtQtQtQtQtQt#h.p.p.paS#q.3QtQt", "QtQtQtaw.p.p.p.p.p.p.p.p.p.p.p.p.p.p.papaM.p.p.p.p.p.p.p.p.p.UQt.p.p.p.p.pa#.z.BaW.9aX.U.U.U.U.U.U.U.U.U#w#z#..w.w#e#aQtQt.5.IaLaYaZ#o.p.p.p.p.pad.I.0QtQtQtQtQtQtQt#X.p.p.p.9#qQtQtQtQtQtQtQtQtQtae.p.p.p.7.UQtQtQtQt#X.p.p.p.p.p.p.p.p.p.p.p.p.p.p.7.UQtQtQtQtQtQtQtQtQt#X.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pa0.UQtQtQtQtQtQtQtQt#X.p.p.p.p.p.p.p.p.p.p.p.p.p.p.7.UQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#A#Wa1ava1#y#G#Fa1aVQtQtQtQt#y#J#Z#J#G#A#Q#A#Q#A#Aat#Q#A#Q#GQtQtQtQtQt#X.p.p.p.9#qQtQtQtQtQtQtQtQtQtae.p.p.p.7.UQtQtQtQt#X.p.p.p.9#qQtQtQtQt#X.p.p.p.9#qQtQtQtQtQtQtQtQtQtae.p.p.p.7.UQtQtQt", "QtQtQt.M.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pajax.p.p.p.p.p.p.p.p.p.UQt.p.p.yaZaN.U.U.U.U.U.U.U.D#za2#e#a#v#bQtQtQtQtQtQtQtQtQtQt#d#ca3aQ.F.6.p.p.p.p.pa#a4QtQtQtQtQtQtQtQt.p.p.p.pa5a6az.MQtQtQtQtQtQtQtaz.p.p.pa5.GQtQtQtQt.p.p.p.pa5a5a5a5a5a5a5a5a5a5a5a5a7azaz#RQtQtQtQtQtQt.p.p.p.pa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5.V#.QtQtQtQtQtQtQtQt.p.p.p.pa5a5a5a5a5a5a5a5a5a5a5a5a7azaz#RQtQtQtQtQtQtQtQtQtQtQt#y#G#A#4#4#z#P#Qa8#za1QtQtQtQt#W#8#8#J#A#A#A#Q#Aat#Q#A#A#A#zQtQtQtQtQtQt.p.p.p.pa5a6az.MQtQtQtQtQtQtQtaz.p.p.pa5.GQtQtQtQt.p.p.p.p.U#kQtQtQtQtaza9a5a5a5a6az.MQtQtQt.1azazazazb.a5a5.V.GQtQtQt", "QtQtQt.1b#.p.p.p.p.p.p.p.p.p.p.p.p.p.pagba.p.p.p.p.p.p.p.p.p.UQtak.9.U.U.U.U.D#.#1.Z#IbbQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbcaqbd.p#o.8.Abe.pbfa.QtQtQtQtQtQt#R.p.p.p.p.p.p.pazQtQtQtQtQtQtQtbg.p.p.p.Va2QtQtQt#R.p.p.p.z.U.U.U.U.U.U.U.U.U.U.U.z.p.p.p#RQtQtQtQtQt#R.p.p.p.z.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U#FQtQtQtQtQtQtQt#R.p.p.p.z.U.U.U.U.U.U.U.U.U.U.U.z.p.p.p#RQtQtQtQtQtQtQtQtQtQtQt#z#A#4#Q#Q#z#A#4#4#GbhQtQtQtQt#F#8#J#J#L#A#A#Q#A#Qat#A#Aa1QtQtQtQtQtQt#R.p.p.p.p.p.p.pazQtQtQtQtQtQtQtbg.p.p.p.Va2QtQtQt#R.p.p.p.z.U#IQtQtQtQtQt.G.U.V.p.p.pazQtQtQtaz.p.p.p#R#k.U.U.Ua2QtQtQt", "QtQtQtQtbi.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pbj#U.U.U.U.U.U.U.U.U.UQtQt#U.U#wbka3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.R.ja#aW.U#U.9a0.yamQtQtQtQtQtQt.M.p.p.p.p.p.p.paR#aQtQtQtQtQtQt.g.p.p.p.W#qQtQtQt.M.p.p.p.A.U#q#q#q#q#q#q#q#q#q#qaP.p.p.pbl#yQtQtQtQt.M.p.p.p.A.U#q#q#q#q#q#q#q#q#q#q#q#q#q#q#q#yQtQtQtQtQtQtQt.M.p.p.p.A.U#q#q#q#q#q#q#q#q#q#qaP.p.p.pbl#yQtQtQtQtQtQtQtQtQtbm#J#J#J#Q#Q#A#A#Qav#4#zQtQtQtQt#P#8#L#J#A#Aat#A#Q#A#A#Q#9QtQtQtQtQtQtQt.M.p.p.p.p.p.p.paR#aQtQtQtQtQtQt.g.p.p.p.W#qQtQtQt.M.p.p.p.A.UQtQtQtQtQtQt#q#qaR.p.p.paR#aQtQt.e.p.p.pbl#q#q#q#q#yQtQtQt", "QtQtQtQtbnbo.p.p.p.p.p.p.p.p.p.p.p.p.p.paMbp.U.U.U.U.U.U.U.U.UQtQt#..TQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.p.C.U#D#j.wbq.WbrbbQtQtQtQtQtaz.p.p.p.p.p.p.p.V#qQtQtQtQtQtQt.p.p.p.p.U#yQtQtQtaz.p.p.pa5#.QtQtQtQtQtQtQtQtQtQt.p.p.p.p.U#yQtQtQtQtaz.p.p.pa5#.QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaz.p.p.pa5#.QtQtQtQtQtQtQtQtQtQt.p.p.p.p.U#yQtQtQtQtQtQtQtQt.Lbs#8#L#J#A#G#A#J#4#4#4aUQtQtQt#y#L#J#J#J#A#A#A#Q#A#A#Q#A#yQtQtQtQtQtQtQtaz.p.p.p.p.p.p.p.V#qQtQtQtQtQtQt.p.p.p.p.U#yQtQtQtaz.p.p.pa5#.QtQtQtQtQtQtQtQtbt.p.p.p.V#qQtQtbg.p.p.p.U#yQtQtQtQtQtQtQt", "QtQtQtQtQtbu#C.p.p.p.p.p.p.p.p.p.p.p.p.p.pb#bvQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.daI.Dbq.ZQt#d#l#F.X#1QtQtQtQtQtbg.p.p.p.Aa5a5a5a5biazazQtQtQt#R.p.p.p.z.U.4QtQtQtbg.p.p.p.V.wQtQtQtQtQtQtQtQtQt#R.p.p.p.z.U.4QtQtQtQtbg.p.p.p#7bfbgbgbgbgbgbgbgbgbgbgbgbgbg.OQtQtQtQtQtQtQtQtQtbg.p.p.p.Aa9azazazazazazazazazazazbwa5.C.U.4QtQtQtQtQtQtQtQt.F#8ao#J#J#J#J#J#L#A#4#QQtQtQtQt#P#J#L#J#A#AaG#A#Q#Q#Aat#Q#yQtQtQtQtQtQtQtbg.p.p.p.Aa5a5a5a5biazazQtQtQt#R.p.p.p.z.U.4QtQtQtbg.p.p.p.V.wQtQtQtQtQtQtQtQt.Mbia5a5a5biazazaza9a5.C.U.4QtQtQtQtQtQtQt", "QtQtQtQtQtbbbx.y.p.p.p.p.p.p.p.p.p.p.p.p.p.pby#RQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbz.s#a.U#aQtQtQtQtQt.4#k#dQtQtQtQt.h.p.p.paX.U.U.9.p.p.p#XQtQtQtaz.p.p.pa0.UQtQtQtQt.h.p.p.paX#qQtQtQtQtQtQtQtQtQtaz.p.p.pa0.UQtQtQtQtQt.h.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pazQtQtQtQtQtQtQtQtQt.h.p.p.p.pbA.p.p.p.p.p.p.p.p.p.OQt.U.U.U.UQtQtQtQtbBQtQtQtQtbCbD#8#J#J#JbD#J#A#G#A#z#tan#9#P#A#L#J#A#J#A#A#Qat#A#Q#A#A#yQtQtQtQtQtQtQt.h.p.p.paX.U.U.9.p.p.p#XQtQtQtaz.p.p.pa0.UQtQtQtQt.h.p.p.paX#qQtQtQtQtQtQtQtQtQt#q.U.9.p.p.p#XQt#..U.U.UQtQtQtQtQtQtQtQt", "QtQtQtQtQtQta3bE#7.p.p.p.p.p.p.p.p.p.p.p.p.p.pbF.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.Y.wQtQtQtQtQtQtQt#dQtQtQtQtaH.p.p.pbe.U.w#qaR.p.p.pbG#qQtQt.O.p.p.pa5#.QtQtQtaH.p.p.pbe.U#yQtQtQtQtQtQtQtQtQt.O.p.p.pa5#.QtQtQtQtaH.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pbr#FQtQtQtQtQtQtQtaH.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pbH#q#q#q#q#aQtQtQtQt.Ta1#BQtQt#A#Jao#Jao#J#J#J#A#A#Q#J#V#G#J#A#A#J#J#A#G#A#Q#A#A#Qat#A#QQtQtQtQtQtQtQtaH.p.p.pbe.U.w#qaR.p.p.pbG#qQtQt.O.p.p.pa5#.QtQtQtaH.p.p.pbe.U#yQtQtQtQtQtQtQtQtQt#a#qaR.p.p.pbG#q#q#q#q#aQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.LbI.z.p.p.p.p.p.p.p.p.p.p.p.p.p.pbJ.c#gQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbc.TQtQtQtQtQtQtQtQtQtQtQtQtQt#R.p.p.p.z.U.3Qtaz.p.p.pa5.GQtQtbg.p.p.p.V#FQtQtQt#R.p.p.p.z.U.3QtQtQtQtQtQtQtQtQtbg.p.p.p.V#FQtQtQtQt#R.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.9#qQtQtQtQtQtQtQt#R.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.V#FQtQtQtQtQtQtQtQtQt#z#z#FQt#z#J#J#J#J#A#A#A#A#Q#A#J#L#8#8#8bD#8ao#Aat#A#A#Q#Q#A#A#Q#GQtQtQtQtQtQtQt#R.p.p.p.z.U.3Qtaz.p.p.pa5.GQtQtbg.p.p.p.V#FQtQtQt#R.p.p.p.z.U.3QtQtQtQtQtQtQtQtQtQtQtaz.p.p.pa5.GQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.LbKa0.x.p.p.p.p.p.p.p.p.p.p.p.p.p.p.e.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaz.p.p.pa0bq.nQtaea6a5a5a0a9azaz.h.p.p.paX#qQtQtQtaz.p.p.pa0bqQtQtQtQtQtQtQtQtQtQt.h.p.p.paX#qQtQtQtQtaz.p.p.p.A.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.U#aQtQtQtQtQtQtQtaz.p.p.p.za5a5a5a5a5a5a5a5a5a5a5a0bHazazQtQtQtQtQtQtQtQtQt#4aF#t#A#J#A#G#J#A#G#A#Aac#J#8#8ao#8bL#8ao#J#A#A#A#Q#A#A#A#A#FQtQtQtQtQtQtQtaz.p.p.pa0bqQtQtaea6a5a5a0a9azaz.h.p.p.paX#qQtQtQtaz.p.p.pa0bqQtQtQtQtQtQtQtQt#Razazazaza6a5a5a0a9azazQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#v#.aW#C.p.p.p.p.p.p.p.p.p.p.p.p.p.p.obt.QQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e.p.p.p.C#.QtQtQt#q.U.U#T.p.p.p.p.p.p#T.U#yQtQtQt.e.p.p.p.C#.QtQtQtQtQtQtQtQtQt.1.p.p.p#T.U#yQtQtQtQt.e.p.p.p.C.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U#IQtQtQtQtQtQtQt.e.p.p.p.C.U.U.U.U.U.U.U.U.U.U.W.p.p.p.gQtQtQt#WaU#yQtQtQt#B#FQt#W#A#A#QaG#J#J#J#J#J#Jao#J#8#J#J#J#A#Aat#A#Q#Aac#A#Q#GQtQtQtQtQtQtQtQt.e.p.p.p.C#.QtQtQt#q.U.U#T.p.p.p.p.p.p#T.U#yQtQtQt.e.p.p.p.C#.QtQtQtQtQtQtQtQt.e.p.p.p.1#q.U.U#T.p.p.gQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt#b#e.W.B.y.p.p.p.p.p.p.p.p.p.p.p.p.p.p.lQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbg.p.p.p.V#FQt.0Qt#k#q#q.p.p.p.p.p.p.p.z.U.3QtQtQtbg.p.p.p.V#FQtQtQtQtQtQtQtQtQt#R.p.p.p.z.U.3QtQtQtQtbg.p.p.p.V.w#y#y#y#y#y#y#y#y#y#y#y#y#y#y#yQtQtQtQtQtQtQtQtbg.p.p.p.V#.#q#q#q#q#q#q#q#q#qbu.p.p.paA#qQtQt#y#4a1#yQtQtbM#FQtQt#y#z#G#A#A#A#J#L#J#8#Jao#A#A#A#A#A#A#Q#A#Q#A#Q#A#G#yQtQtQtQtQtQtQtQtbg.p.p.p.V#FQtQtQt#k#q#q.p.p.p.p.p.p.p.z.U.3QtQtQtbg.p.p.p.V#FQtQtQtQtQtQtQtQtbg.p.p.p#q#q#q#q.p.p.paA#qQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.Z#O.9aZ.y.p.p.p.p.p.p.p.p.p.p.p.p.p.5Qt.N#hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.p.p.p.p.U#jQtQtQtQtQt#R.p.p.p.p.p.p.pa5#wQtQtQtQt.p.p.p.p.U#aQtQtQtQtQtQtQtQtQtaz.p.p.pa5#wQtQtQtQtQt.p.p.p.p.U#aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.p.p.p.p.U#aQtQtQtQtQtQtQtQtQtaz.p.p.pa5#wQtQtQtQt#Fava1ana1#FQtQtQtQtQt#z#A#A#G#J#J#A#J#JaG#A#A#Q#A#Q#A#Q#Qat#A#Q#3QtQtQtQtQtQtQtQtQt.p.p.p.p.U#aQtQtQtQtQt#R.p.p.p.p.p.p.pa5#wQtQtQtQt.p.p.p.p.U#aQtQtQtQtQtQtQtQt.p.p.p.z.U.4Qt#R.p.p.pa5#wQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.4#1.X.Wa5#C.p.p.p.p.p.p.p.p.p.p.p#OQt.pbNawaB.1QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.##s.a.p.p.p#TbO#yQtQtQtQtQt.1aza5a5#T.p.p.p.C#.QtQtQt.1.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.M#y.U.U.U#.QtQtQtQt.1.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p#RQtQtQtQt.1.p.p.p#T.U#yQtQtQtQtQtQtQtQtQt.e.p.p.p.C#.QtQtQtQtQt#tav#G#QQtQtQtQtQtQtQt#B#A#G#A#A#G#A#Q#A#Q#Aat#Q#G#Q#A#A#A#A#tQtQtQtQtQtQtQtQtQt.1.p.p.p#T.U#yQtQtQtQtQt.1aza5a5#T.p.p.p.C#.QtQtQt.1.p.p.p#T.U#yQtQtQt.1azazazazaza7a5.C.UQtQt.1aza5a5.Aa7azaz.1QtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#lbk.XaL#Yad.y.p.p.p.p.p.p.p.p.UQt.p.p.p.p.gaw.c.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#g#h.s.a.rQtae.p.p.p.7.UQtQtQtQtQtQtQt#y.U.U#7.p.p.p.9#qQtQtQtae.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p#h#q.U.U.U#qQtQtQtQtae.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pQtQtQtQtQtae.p.p.p.7.UQtQtQtQtQtQtQtQtQtQt#X.p.p.pbPa8aU#yQtQtQt#5#z#Q#G#FQtQt#z#J#PQtQt#y#G#Q#A#A#A#A#A#A#G#A#Q#A#A#A#Q#GQtQtQtQtQtQtQtQtQtQtQtae.p.p.p.7.UQtQtQtQtQtQtQt#y.U.U#7.p.p.p.9#qQtQtQtae.p.p.p.7.UQtQtQtQtae.p.p.p.uQt.U.U.U#.QtQtQt#y.U.U#7.p.p.p#hQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b#q#O.U.WaWad#7.p.p.p.p.p.UQt.p.p.p.p.p.p.p.pQtQt.tbv.1QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1QtQt.q.2.QQtQtQt.5b..p.p.pa5#wQtQtQtQtQtQtQt.4#q#q.p.p.p.p.U#aQtQtQtaz.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.U#aQtQtQtQtQtQtQtQtaz.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p#7.U#yQtQtQtaz.p.p.pa5#wQtQtQtQtQtQtQtQtQtQt.p.p.p.p.U.3a1#F#taV#za1#4#F#z#4#z#AbD#J#J#PQtQtQt#F#G#A#A#G#A#Q#A#Q#A#Q#A#Q#AQtQtQtQtQtQtQtQtQtQtQtQtaz.p.p.pa5#wQtQtQtQtQtQtQt.4#q#q.p.p.p.p.U#aQtQtQtaz.p.p.pa5#wQtQtQtQtaz.p.p.pbH#q#q#q#q#aQtQtQt.4#q#q.p.p.p.p#q.4QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.0.LaQ#w.UaLaNa5.7.y.p.UQt.p.p.p.p.p.p.p.p.TQt.p.p.j.o#S.e.N.MQtQt.E.Q#E.n#g#g.n#EQtQt.a.b.M.N.e.e.O.PQtQtQtQt#d#l#v.T.0.u.p.p.paWa2QtQtQtQtQtQtQtQtQt#h.p.p.p#7.U#IQtQtQt.u.p.p.p.p.p.p.p.p.p.p.p.p.p.p#7.U#IQtQtQtQtQtQtQtQt.u.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.7.UQtQtQtQt.u.p.p.paWa2QtQtQtQtQtQtQtQtQt#h.p.p.p#7.U#IQtasa1#za1#F#yQtQt#P#4#Aao#J#A#QQtQtQtQtQt#Gac#A#Qat#A#A#A#A#A#A#GQtQtQtQtQtQtQtQtQtQtQtQt.u.p.p.paWa2QtQtQtQtQtQtQtQtQt#h.p.p.p#7.U#IQtQtQt.u.p.p.paWa2QtQtQtQt.u.p.p.paWa2QtQtQtQtQtQtQtQtQt#h.p.p.p#7.U#IQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5#kaQ.G.U.UaL.9.UQt.m.ya#.p.p.p.p.p.UQt.p.p.p.p.p.p.p.pQtQt.p.p.p.p.p.p.p.pQtQt.o.m.d.q.a.nQtQt.4QtQt.Z#r.5QtQtQtQt#q.U.U.U#qQtQtQtQtQtQtQtQtQtQtQt.U.U.U.UQtQtQtQtQt#q.U.U.U.U.U.U.U.U.U.U.U.U.U.U.UQtQtQtQtQtQtQtQtQtQt#q.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.GQtQtQtQtQt#q.U.U.U#qQtQtQtQtQtQtQtQtQtQtQt.U.U.U.UQtQtQtQtQtQtQtQtQtQtQt#A#A#J#Aac#zQtQtQtQt#P#A#A#J#A#A#G#Jao#A#A#A#GQtQtQtQtQtQtQtQtQtQtQtQtQt#q.U.U.U#qQtQtQtQtQtQtQtQtQtQtQt.U.U.U.UQtQtQtQtQt#q.U.U.U#qQtQtQtQtQt#q.U.U.U#qQtQtQtQtQtQtQtQtQtQtQt.U.U.U.UQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.0#v#qa2#w.UQtQt.UaX.9#Y.8a0.A.UQt.f#T#oa#.xaDbAal#aQt.g.v#6#S.e.d.c.R.3QtQt.T.L#a##.w.w#e#fQtQtQtQtQtQtQtQtQta2.U.U.U#kQtQtQtQtQtQtQtQtQtQt#I.U.U.U.GQtQtQtQtQta2.U.U.U.U.U.U.U.U.U.U.U.U.U.U.GQtQtQtQtQtQtQtQtQtQta2.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Ua2QtQtQtQtQta2.U.U.U#kQtQtQtQtQtQtQtQtQtQt#I.U.U.U.GQtQtQtQtQtQtQtQtQtQt#F#J#A#A#A#Q#AQtQtQt#5#A#J#J#JbD#J#J#A#8#J#J#A#Q#KQtQtQtQtQtQtQtQtQtQtQtQta2.U.U.U#kQtQtQtQtQtQtQtQtQtQt#I.U.U.U.GQtQtQtQtQta2.U.U.U#kQtQtQtQtQta2.U.U.U#kQtQtQtQtQtQtQtQtQtQt#I.U.U.U.GQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.0.TQtQt.I.X.D.U.U.U.U.UQtQt.U.U.U.U.U.U.U.UQtQt.U.U.U.U.U.U.U.UQtQt.X.I.Y.Z.T.0QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#G#J#J#JaG#A#Q#A#Q#A#A#A#AbDao#J#A#J#J#Jao#J#A#Q#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5.T.L#j.Y.wQtQt.X#w#D.D.DbQbQ.DQtQt#w.X#O.I.w.Y#j.LQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#A#8ao#J#A#Q#A#A#G#Q#Q#J#A#J#A#J#J#A#G#A#J#A#G#Q#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1#RQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1#RQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1#RQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaH#RaH#G#A#Jat#Q#Aac#A#Q#A#G#J#8#8ao#A#Aat#Q#A#A#J#A#A#A#FQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#R.1QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.O.hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.O.hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.O.hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtae.p#hQt#P#A#Q#A#Q#A#Aac#Q#Aao#8aubD#J#A#Q#A#A#4#A#A#A#Q#BQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaH.pazQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbgbgQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbgbgQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbgbgQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaz.pQtQtQt#P#L#A#A#A#Q#A#A#A#8au#8ao#8#J#A#A#Q#A#A#Q#A#A#zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#R.p#RQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#R#R#R#R#R#hQtQtQtaH#R#R#R#RQtQtQtQtQt#h#R#R#R#R#RQtQt.1#R.h.u#RQtQt#h#hQtQtQtQtQtQtaH#RaHQtQtQt.1#R#R#R#hQtQtQtQtQt#R#R#R#RaHQtQtQt#h#R#R#R#R#RQtQtQtQtQtQtQtQtQtQtaH#R#R#hQt.h.OQtQtQt.1#R#R#R#R#RaHQtaH#RaHQtQtQtaH#RaHQtQtQt#R#R#R#R#R#hQtQt.h.OQtQtQtQtQt#R#R#R#RaHQtQtQtQt.1#R#R#R#hQtQtQtQtQt#h#R#RQt.1#R#RaHQtQtQtQtaH#R#R#R#R#R.1QtQtQt.1#R#R#R#hQtQtQtaH#Rbg.g#RaHQtQtQt#y#P#Q#A#Q#Aauao#JbL#Jao#A#A#A#G#Q#Aat#A#Q#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#R.O.pae.1QtQtQtQtQt#h#R#R#R#R#RQtQtQtQtQtaH#R#R#R#RQtQtQtQtQtQtQt#h#R#RQt.1#R#RaHQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.1.p.p.p.p.p.eQtQtQt.M.p.p.p.gQtQtQtQtQt.g.p.p.p.p.gQtQt.e.p.p.p.gQtQt.g.eQtQtQtQtQtQt.M.p.1QtQtQt.e.p.p.p.eQtQtQtQt.1.p.p.p.p.1QtQtQt.g.p.p.p.p.gQtQtQtQtQtQtQtQtQtQt.M.p.p.e.1.p.MQtQtQt.e.p.p.p.p.p.1Qt.M.p.1QtQtQt.M.p.1QtQt.1.p.p.p.p.p.eQt.1.p.MQtQtQtQt.1.p.p.p.p.1QtQtQtQt.e.p.p.p.eQtQtQtQtQt.g.p.gQt.e.p.p.1QtQtQtQt.M.p.p.p.p.p.MQtQtQt.e.p.p.p.eQtQtQt.M.p.p.p.p.1QtQtQtQtQt#t#Q#A#JbD#J#8ao#J#A#A#A#A#Q#A#A#Q#A#A#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1.p.p.p.p.MQtQtQtQtQt.g.p.p.p.p.gQtQtQtQtQt.M.p.p.p.gQtQtQtQtQtQtQt.g.p.gQt.e.p.p.1QtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.O.e#R#R#R#R#R.1QtQtbgaz#R#R#R.Mbg#hQt.Mbg#R#R#R#R#R#hQtQt#haz.paz#hQtQt.pazQtQtQtQtQtQtaz.pQtQt#hbg.M#R#R#RazbgQtQt.O.e#R#R#R#RQtQt.Mbg#R#R#R#R#R#hQtQtQtQtQtQtQtQtQtbgaz#R#R.1#R.p#RQt#hbg.M#R#R#R#R#RQtQtaz.pQtQtQtQtaz.pQtQt.O.e#R#R#R#R#R.1Qt#R.p#RQtQtQt.O.e#R#R#R#Rbg.MQt#hbg.M#R#R#RazbgQtQt.Mbg#R#R.Mbg.M#R#Rbg.MQtQtbgaz#R#R#R#R#RaHQt#hbg.M#R#R#RazbgQtQt.1#R.p.e#RQtQtQtQtQtQtQt#Gac#A#J#A#J#A#A#A#A#Qat#Q#A#Q#Aat#A#4QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaH#R#X#X#RaHQtQtQt.Mbg#R#R#R#R#R#hQtQtQtQtbgaz#R#R#R.Mbg#hQtQtQt.Mbg#R#R.Mbg.M#R#Rbg.MQtQtQtQtQtQt", "QtQtQtQtQtQtQtbgaz#R#R#R#hQtQtQt#R.p#RQtQtQtaz.pQtQtbgbgQt#R#R#RQtQtQtQtQtaz.pQtQtQt#R.p#RQtQtQtQtQtQtbgbgQtQtaz.pQtQtQtQtbgbgQtQt.pazQtQtQtQtQtQtbgbgQt#R#R#RQtQtQtQtQtQtQtQtQtQt#R.p#RQtQtQtaz.pQtQtaz.pQt#h#R#RaHQtQtQtbgbgQtQtQtQtbgbgQtQt.pazaH#R#R#hQtQtQtaz.pQtQtQtQt.pazQtQtQt#R.p#RQtaz.pQtQtQtQtbgbgQtQtbgbgQtQt.MbgQtQt#R.p#RQt#R.p#R.1#R#R.1QtQtQtaz.pQtQtQtQtbgbgQtQtQt#R.p#RQtQtQtQtQtQtQtQt#3#A#A#Q#A#A#A#Aat#Q#Q#A#Qat#A#A#Q#A#zQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.pazQtQtQtQtQtbgbgQt#R#R#RQtQtQtQtQt#R.p#RQtQtQtaz.pQtQtQtQtbgbgQtQt.MbgQtQt#R.p#RQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.e.p.p.p.eQtQtQt.M.p.1QtQtQt.e.gQtQt.g.e.1.p.p.gQtQtQtQtQt.e.gQtQtQt.M.p.1QtQtQtQtQtQt.g.eQtQt.e.gQtQtQtQt.g.eQt.1.p.MQtQtQtQtQtQt.g.e.1.p.p.gQtQtQtQtQtQtQtQtQtQt.M.p.1QtQtQt.e.gQtQt.e.gQt.g.p.p.1QtQtQt.g.eQtQtQtQt.g.eQt.1.p.M.M.p.p.eQtQtQt.e.gQtQtQt.1.p.MQtQtQt.M.p.1Qt.e.gQtQtQtQt.g.eQtQt.g.eQtQtQtQtQtQt.M.p.1Qt.M.p.1.e.p.p.MQtQtQt.e.gQtQtQtQt.g.eQtQtQt.M.p.1QtQtQtQtQtQtQtQt#W#Q#A#A#Q#A#Q#A#Q#Q#A#Q#A#A#A#Q#A#Q#tQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.1.p.MQtQtQtQtQt.g.e.1.p.p.gQtQtQtQtQt.M.p.1QtQtQt.e.gQtQtQtQt.g.eQtQtQtQtQtQt.M.p.1QtQtQtQtQtQt", "QtQtQtQtQtQtQtQt#h#R#R#R.O.uQtQt.O.hQtQtQtQt#X.uQtaH.pazaH#R#R#hQtQtQtQtQt#X.uQtQtQt.O.hQtQtae.p#hQtaH.pazQtQt#X.uQtQtQtaH.pazQtae.p#hQtQtQtQtQtaH.pazaH#R#R#hQtQtQtQtQtQtQtQtQtQt.O.hQtQtQtQt#X.uQtQt#X.uQt#R#R#RQtQtQtQtQt.O.hQt.O.hQtQtQtae.p#h.1#R#R.1QtQtQt#X.uQtQtQtae.p#hQtQtQt.O.hQtQt#X.uQtQtQtaH.pazQtaH.pazQtQtQtQtQtQt.O.hQtQt.O.hQt#h#R#RaHQtQtQt#X.uQtQtQtaH.pazQtQtQt.O.hQtQtQtQtQtQtQtQtQt#Pao#A#Q#A#4#A#Q#A#A#Q#Q#Q#Q#A#Q#Q#QQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtae.p#hQtQtQtQtaH.pazaH#R#R#hQtQtQtQtQt.O.hQtQtQtQt#X.uQtQtQtaH.pazQtQtQtQtQtQt.O.hQtQtQtQtQtQtQt", "QtQtQtQtQtQt#Razazazazazaz.MQtQt.Mazazazazazaz#RQt#R.p#RQtQtQtQtQtQtQtQtQtazazazQtQt.Mazazazazazazazazaz.1QtQtazazazazaz.e.p#RQtaz.pQtQtQtQtQtQt.1azazazazazazazQtQtQtQtQtQtQtQtQt.Mazazazazaz.pazQtQtazazazazazazaz.1QtQtQt.Mazazaz.MQtQtQt#Razazazazazaz.MQtQtazazazQtQt#Razazazazazaz.MQtQt.paz.1azazazaz.1Qt#R.p#RQtQtQtQtQtQtbgbgQtQt.Mazazazazazaz#RQtQt.pazQtQtQt#R.p#RQtQtQt.Mazaz.1QtQtQtQtQtQtQtbR#Jao#J#Q#A#A#Q#A#Qac#A#Qat#Q#A#Q#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#Razaz#RQtQtQt.1azazazazazazazQtQtQtQt.Mazazazazaz.pazQtQtQt#R.p#RQtQtQtQtQtQtbgbgQtQtQtQtQtQtQt", "QtQtQtQtQtQt.u.p.p.p.p.paHQtQtQtQtaz.p.p.p#XQtQtQtaz.paHQtQtQtQtQtQtQtQtQtQt.u#XQtQtQtaz.p.pae#h.p.p.OQtQtQtQtQt.u.p.p.p.p.paHQt.u#XQtQtQtQtQtQtQtQt.h.p.p.p.p#XQtQtQtQtQtQtQtQtQtQtaz.p.p.p.p.paeQtQtQt.u.p.p.p.p.paHQtQtQtQtaz.paHQtQtQtQtQt#h.p.p.p.p.p.OQtQtQt.u#XQtQtQt#h.p.p.p.paHQtQt#h.paeaz.p.p.OQtQtQtaz.paHQtQtQtQtQtQt.h.OQtQtQtaz.p.p.p.p.paeQt#h.paeQtQtQtaz.paHQtQtQtQtaz.paHQtQtQtQtQtQtQtbSao#8ao#A#Aac#A#Q#Qac#Q#Q#Q#Q#Q#A#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#h.paeQtQtQtQtQt.h.p.p.p.p#XQtQtQtQtQtaz.p.p.p.p.paeQtQtQtaz.paHQtQtQtQtQtQt.h.OQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtae.p#hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbT#J#8#J#J#L#A#Q#A#A#A#A#Aac#Q#A#Q#Q#AQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbcbcQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaz.pQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v#A#JbL#Jao#A#J#A#Q#A#Q#AbU#A#Q#Q#Q#A#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#gbzQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u#XQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#B#J#Jao#J#J#Aat#A#Q#Aac#A#Qac#A#Q#Q#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z#G#A#A#J#A#Aac#A#A#A#Q#A#A#Q#Q#A#Q#9QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#G#A#A#A#A#Q#A#A#Qat#Q#A#Qac#A#A#Q#A#QQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#b.LQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#G#Q#A#4#A#Q#Q#Q#A#Q#Q#Q#A#Q#Q#A#Q#A#Q#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.T.ZQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.Y.5QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z#A#L#A#A#Q#A#G#A#A#A#A#Q#A#A#G#Q#Q#A#A#G#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.T.ZQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#y#A#z#z#P#A#A#G#z#G#A#Q#A#A#Q#A#Q#z#A#Q#Q#A#A#z#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt#y#yQt.T.ZQt.3#1QtQt#y#yQt.T.ZQt.3#1QtQt#y#yQt.T.ZQt.3#1QtQtQtQtQtQtQtQtQtQtQtQtQtQt.ZaQ#1.3QtQtQtQtQt.L.LaQ#1.3QtQtQtQtQt#b.Y.Y.Z.ZQtQtQtQtQtQt.ZaQ#1.3QtQtQtQtQtQt.L.L#1QtQtQtQtQtQt#b.LQtQt#jQtQtQtQtQt.L.LaQ#1.3QtQtQtQtQtQtQt.LQtQtQtQtQtQtQt.T.ZQt#b.ZQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.3.ZaQ.Z.3QtQtQtQtQtQt.L.L#1QtQtQtQtQtQt.3#1aQ#y#jQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#z#G#z#B#P#L#A#4#A#A#A#G#A#A#Q#G#z#GQt#F#4#A#A#A#Q#A#z#tQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.3aQQt#1#xQt.Z.LQtQt.3aQQt#1#xQt.Z.LQtQt.3aQQt#1#xQt.Z.LQtQtQtQtQtQtQtQtQtQtQtQtQt.Z.LQt.L#1QtQtQtQtQt.Z#1Qt.Z.ZQtQtQtQtQtaQ.5.3.Y.ZQtQtQtQtQt.Z.LQt.L#1QtQtQtQtQtQtaQ.LQtQtQtQtQtQtQt.T.ZQtQtaQQtQtQtQtQt.Z#1Qt.Z.ZQtQtQtQtQtQtQtaQQtQtQtQtQtQtQtQtaQ#b.Y.3QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.Y#yQt.L#1QtQtQtQtQtQtaQ.LQtQtQtQtQtQtQt.Y.TQt.ZaQQtQtQtQtQtQtQtQtQtQtQtQtQt.5#vbVbW#1#Bav#G#A#z#P#P#P#P#P#A#Aav#G#A#z#z#G#A#Q#Ga1#4#A#yQtQt#F#4#Qat#Q#A#A#Q#z#9QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt#1.T.Y.Z.LaQQtQtQtQt#1.T.Y.Z.LaQQtQtQtQt#1.T.Y.Z.LaQQtQtQtQtQtQtQtQtQtQtQtQtQtQtaQaQaQaQ#jQtQtQtQtQt.Z.TQt.T.ZQtQtQtQt.T.ZQtQt.T.ZQtQtQtQtQtaQaQaQaQ#jQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt.T.ZQtQtaQQtQtQtQtQt.Z.TQt.T.ZQtQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt.3#z.TQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaQQtQtQtaQQtQtQtQtQtQtaQQtQtQtQtQtQtQtQtaQQtQtQtaQQtQtQtQtQtQtQtQtQtQtbXa3##aV#v#vaV#WaUa1#z#A#G#A#z#z#G#Q#G#z#G#A#Aat#A#Q#A#A#Q#z#G#A#PQtQtQtQt#9#z#Q#Q#A#Q#G#A#Q#Q#P#taaQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.5.I#y.3#O.ZQtQtQtQt.5.I#y.3#O.ZQtQtQtQt.5.I#y.3#O.ZQtQtQtQtQtQtQtQtQtQtQtQtQtQt#1.TQt.3#yQtQtQtQtQt.Z.TQt.T.ZQtQtQtQt.5aQQtQt.Z.ZQtQtQtQtQt#1.TQt.3#yQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt.T#1Qt.3.YQtQtQtQtQt.Z.TQt.T.ZQtQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt.Z#1aQQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaQ#bQt.5aQQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt#x.3Qt.TaQQtQtQtQtQtQtQtQtQtQtaU#W#yaa#yaV#Wa8a8a8a1#F#y#y#y#y#y#F#z#A#A#A#G#A#A#A#A#A#A#A#Q#A#4#K#F#y#y#5aFan#F#4#A#Q#Q#Q#A#A#Q#AbY#PbkQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#1QtQt#j.3QtQtQtQtQt#1QtQt#j.3QtQtQtQtQt#1QtQt#j.3QtQtQtQt.I.5QtQtQtQtQtQtQtQt.3aQaQ#x.TQtQtQtQtQt.Z.TQt.T.ZQtQtQtQtQt.LaQaQ.Y.ZQtQtQtQtQt.3aQaQ#x.TQtQtQtQtQtQtaQQtQtQtQtQtQtQtQtQt#j#x#x#bQtQtQtQtQt.Z.TQt.T.ZQtQtQtQtQtQtQtaQQtQtQtQtQtQtQt.T.I.3.Z.ZQtQtQtQtQt.I.5QtQtQtQtQtQtQtQt#b.YaQ.Y#bQtQtQtQtQtQtaQQtQtQtQtQtQtQtQt#b#xaQ#1aQQtQtQtQtQtQtQtQtQt.T#9aVaV#WaVaV#Wa8aUaU#y#y#5#y#y#WaV#WaUa1#A#A#A#Q#A#A#A#Qat#A#A#A#G#Aac#z#z#P#z#Pa1#K#P#F#z#G#z#Q#Q#Q#Q#A#Q#A#G#FQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.TQtQt.3aQQtQtQtQtQtQtQtQtQtbZ#ia3#v#y#WaVa8a8#F#W#yaVaVaVaV#Wa8aUb0#z#4#A#Aat#A#Jac#J#Q#A#Q#Gav#4bU#Q#Q#z#4#z#A#za1#P#F#F#yQtan#F#P#G#A#A#A#A#GQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.LaQ.Z.Y#yQtQtQtQtQtQtQtQtQtQtQt.3a3bB#WaUa8aUa1aV#W#W#W#Fa8a8bha1bhav#G#A#A#A#A#Q#Gb1#G#Gbhbhbh#Qb2#Qacb1#4#A#z#z#B#K#B#y#yQtQtQtQtQt#ya1#A#A#A#z#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.5.T.3QtQtQtQtQtQtQtQtQtQtQtQtQtbcQtQtQtb3#y#z#FaVaVaV#WaUaUb0bhbhbh#4bhbhbhbhbhbhbhbhbh#4#4bUacb4#Q#Q#Q#A#z#z#PaU#F#taFQtQtQtQtQtQtQtQt#y#z#G#A#P#WQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#W#F#F#WaUb0a8bha8bha1bhbhbhbhbhbha1av#4#Q#Qb4#Qb2#Q#Q#Qb5#G#Q#z#z#F#3QtQtQtQt#z#BQtQtQtQtQt#F#A#Q#z#A#z#F#F#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#v.YaU#za1bh#Gbh#4av#4#G#4#Q#4#Q#Q#Qb4#Q#Q#Q#Q#Q#Q#G#Q#G#z#P#F#WQtQtQt#y#z#J#JQtQtQtQt#9#A#Q#A#Gb5#G#z#za1.Y.TQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtb6#v.Y#B#z#Q#Q#Q#Q#Q#Q#Q#A#Q#4#Q#Q#A#4#A#z#z#z#K#F#WaFQtQtQt#P#A#J#J#A#F#F#P#G#A#4#A#Q#Q#A#G#z#K#P#FbkaEQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbX#v#v#tbkbkbkbkbk#W.Y#F#y#y#yQtQtQtQtQtQt#y#B#A#J#A#J#A#J#A#A#A#Q#Q#Q#Q#4#z#z#z#z#B#F#tQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#J#A#J#Aao#A#G#A#A#Q#A#Q#Qac#Q#A#z#z#z#z#F#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbT#B#K#BbT#ub7b8#A#Q#Q#QbU#Q#Q#Q#A#z#z#P#F#yQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtb9b3.Ybk#B#0#uaK#Pa1bkbk#vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#d#dbcQtQtQtQtQtQtQtb9a3.LbBbV#kbP#larQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; /* * Constructs a AboutBox which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ AboutBox::AboutBox( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "AboutBox" ); resize( 422, 532 ); QPalette pal; QColorGroup cg; cg.setColor( QColorGroup::Foreground, black ); cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, QColor( 241, 241, 241) ); cg.setColor( QColorGroup::Dark, QColor( 114, 114, 114) ); cg.setColor( QColorGroup::Mid, QColor( 152, 152, 152) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, black ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, QColor( 10, 95, 137) ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setActive( cg ); cg.setColor( QColorGroup::Foreground, black ); cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, white ); cg.setColor( QColorGroup::Dark, QColor( 114, 114, 114) ); cg.setColor( QColorGroup::Mid, QColor( 152, 152, 152) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, black ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, QColor( 10, 95, 137) ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setInactive( cg ); cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Button, QColor( 228, 228, 228) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, white ); cg.setColor( QColorGroup::Dark, QColor( 114, 114, 114) ); cg.setColor( QColorGroup::Mid, QColor( 152, 152, 152) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, QColor( 10, 95, 137) ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setDisabled( cg ); setPalette( pal ); setCaption( tr( "About QLDAPAdmin" ) ); TextLabel2 = new QLabel( this, "TextLabel2" ); TextLabel2->setGeometry( QRect( 30, 160, 370, 290 ) ); TextLabel2->setText( tr( "by;\n" "EnderUNIX Software Development Team, Istanbul/Turkiye\n" "(c) 2001\n" "\n" "Maintainers:\n" "-------------\n" "Coding:\n" "Murat Balaban (murat@enderunix.org)\n" "Ismail Yenigul (ismail@enderunix.org)\n" "\n" "Documentation:\n" "Omer Faruk Sen (ofsen@enderunix.org)\n" "\n" "Code Audit:\n" "Darth Maul (maul@enderunix.org)\n" "\n" " http://www.enderunix.org\n" " roots@enderunix.org" ) ); PushButton28 = new QPushButton( this, "PushButton28" ); PushButton28->setGeometry( QRect( 170, 470, 91, 21 ) ); PushButton28->setText( tr( "OK" ) ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 90, 120, 250, 20 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 13 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setText( tr( "EnderUNIX QLDAPAdmin - Visual" ) ); PixmapLabel1 = new QLabel( this, "PixmapLabel1" ); PixmapLabel1->setGeometry( QRect( 60, 20, 290, 90 ) ); PixmapLabel1->setPixmap( image0 ); PixmapLabel1->setScaledContents( TRUE ); // signals and slots connections connect( PushButton28, SIGNAL( clicked() ), this, SLOT( reject() ) ); } /* * Destroys the object and frees any allocated resources */ AboutBox::~AboutBox() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool AboutBox::event( QEvent* ev ) { bool ret = QDialog::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 13 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); } return ret; } qldapadmin-1.0-RC1/gui/AboutBox.h0100644000175000000000000000155607403134047015542 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'aboutbox.ui' ** ** Created: Tue Dec 4 16:43:13 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef ABOUTBOX_H #define ABOUTBOX_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QLabel; class QPushButton; class AboutBox : public QDialog { Q_OBJECT public: AboutBox( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~AboutBox(); QLabel* TextLabel2; QPushButton* PushButton28; QLabel* TextLabel1; QLabel* PixmapLabel1; protected: bool event( QEvent* ); }; #endif // ABOUTBOX_H qldapadmin-1.0-RC1/gui/AddDomainView.cpp0100644000175000000000000000774307403134047017031 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'addnewdomain.ui' ** ** Created: Tue Dec 4 16:43:14 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "AddDomainView.h" #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "33 33 12 1", ". c None", "g c #000008", "a c #202020", "e c #414141", "j c #497969", "f c #515151", "d c #595959", "h c #8e5930", "i c #8e8686", "c c #b67949", "# c #d7a679", "b c #ffffff", ".................................", ".....##...aaa....................", ".....#b##.a#aaa..................", ".....#bbb##cccaaa................", ".....#bbbbb##cccaaa....dd........", "aaa..#bbbbbbb##cccaaa..efdde.....", "acaea#bbbbbbbbb###ccceaadafddd...", "a###eeg#bbbbbbbbbb###ccaaaeaed...", "c#####eaacbbbbbbbbbbb##cccaeea...", "ac######eha#bbbbbbbbbbb##hhcae...", "#c########eaa#bbbbbbbbbb#ahaa....", ".hc#########eeg#bbbbbbbb#aaha....", ".hc###########eeg#bbbbbb#ahaf....", ".hc#############eea#bbbb#aahi....", ".#e###############eaa#bb#eaa.....", "..h#################ea#b#aaa.....", "..cc################cha##aae.....", "..dcc#######c##ccccccce##eai.....", "..#hc####ccccccccccccca#daa......", "...accccccccccccccccccadjaa......", "...eccccc#ccccccccccccajdaa......", "...#hccccccccccccccchcaafaa......", "....accccccccccchchchhcaddi......", "....echchcchchhchhhhhhhaaa.......", ".....aaachhhhhhhhhhhhhhaaa.......", "......caaahhhhhhhhhhhheaaf.......", "........caeahhhhhhhhhhhaaa.......", "..........caaahhhchhhhhaaa.......", "............caaahhhhhhhaaj.......", "..............caeahhhhahai.......", "................caaahhhaa........", "..................caaahhe........", "....................caaa........."}; /* * Constructs a AddDomainView which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ AddDomainView::AddDomainView( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "AddDomainView" ); resize( 383, 219 ); setCaption( tr( "QLDAPAdmin -- Adding new domain..." ) ); setIcon( image0 ); setBackgroundOrigin( QDialog::ParentOrigin ); L_DomainDescription = new QLineEdit( this, "L_DomainDescription" ); L_DomainDescription->setGeometry( QRect( 160, 79, 201, 22 ) ); TextLabel1_2_2 = new QLabel( this, "TextLabel1_2_2" ); TextLabel1_2_2->setGeometry( QRect( 30, 80, 120, 20 ) ); TextLabel1_2_2->setText( tr( "Domain description" ) ); TextLabel1_2 = new QLabel( this, "TextLabel1_2" ); TextLabel1_2->setGeometry( QRect( 30, 50, 90, 20 ) ); TextLabel1_2->setText( tr( "Domain Name" ) ); P_Dismiss = new QPushButton( this, "P_Dismiss" ); P_Dismiss->setGeometry( QRect( 250, 140, 110, 30 ) ); P_Dismiss->setText( tr( "Dismiss" ) ); P_AddDomain = new QPushButton( this, "P_AddDomain" ); P_AddDomain->setGeometry( QRect( 140, 140, 110, 30 ) ); P_AddDomain->setText( tr( "Add new domain" ) ); L_DomainName = new QLineEdit( this, "L_DomainName" ); L_DomainName->setGeometry( QRect( 160, 49, 201, 22 ) ); // signals and slots connections connect( P_Dismiss, SIGNAL( clicked() ), this, SLOT( reject() ) ); // tab order setTabOrder( L_DomainName, L_DomainDescription ); setTabOrder( L_DomainDescription, P_AddDomain ); setTabOrder( P_AddDomain, P_Dismiss ); } /* * Destroys the object and frees any allocated resources */ AddDomainView::~AddDomainView() { // no need to delete child widgets, Qt does it all for us } qldapadmin-1.0-RC1/gui/AddDomainView.h0100644000175000000000000000170307403134047016464 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'addnewdomain.ui' ** ** Created: Tue Dec 4 16:43:14 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef ADDDOMAINVIEW_H #define ADDDOMAINVIEW_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QLabel; class QLineEdit; class QPushButton; class AddDomainView : public QDialog { Q_OBJECT public: AddDomainView( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~AddDomainView(); QLineEdit* L_DomainDescription; QLabel* TextLabel1_2_2; QLabel* TextLabel1_2; QPushButton* P_Dismiss; QPushButton* P_AddDomain; QLineEdit* L_DomainName; }; #endif // ADDDOMAINVIEW_H qldapadmin-1.0-RC1/gui/AddDomainViewImpl.cpp0100644000175000000000000000317707401632545017654 0ustar muratwheel#include #include #include #include #include #include #include #include "MainMenuImpl.h" #include "AddDomainViewImpl.h" #include "AddDomainView.h" #include "../src/EnderLDAP.h" #include "../src/QmailUser.h" #include "../src/QmailDomain.h" AddDomainViewImpl::AddDomainViewImpl(EnderLDAP *l, QWidget *parent = 0, const char *name = 0, WFlags f = 1) : AddDomainView(parent, name, f) { ld = l; pr = (MainMenuImpl *)parent; connect(P_AddDomain, SIGNAL(clicked()), this, SLOT(addDomain())); } AddDomainViewImpl::~AddDomainViewImpl() { } void AddDomainViewImpl::addDomain() { QmailDomain *d = new QmailDomain(); int ret; if (L_DomainName->text().isEmpty() || L_DomainDescription->text().isEmpty()) { switch( QMessageBox::warning( this, "Add new domain...", "The requested values domain name and description are compulsory.\n" "You cannot leave them blank.\n\n", "Try again", "Quit", 0, 0, 1)) { case 0: return; break; case 1: emit reject(); break; } } d->setOu(L_DomainName->text()); d->setDescription(L_DomainDescription->text()); if ((ret = ld->AddDomain (d)) != LDAP_SUCCESS) { switch( QMessageBox::warning( this, "Add new domain...", "Domain addition failed!\n\n", "Try again", "Quit", 0, 0, 1)) { case 0: return; break; case 1: emit reject(); break; } } else { QMessageBox::information( this, "Add new domain...", "New domain has been added sucessfully.\n"); pr->ListDomains(); emit reject(); } } qldapadmin-1.0-RC1/gui/AddDomainViewImpl.h0100644000175000000000000000066207400123262017303 0ustar muratwheel#ifndef ADDDOMAINVIEWIMPL_H #define ADDDOMAINVIEWIMPL_H #include "AddDomainView.h" #include "../src/qconfig.h" class EnderLDAP; class MainMenuImpl; class AddDomainViewImpl : public AddDomainView { Q_OBJECT public: AddDomainViewImpl(); AddDomainViewImpl(EnderLDAP *, QWidget *, const char *, WFlags); ~AddDomainViewImpl(); public slots: virtual void addDomain(); private: EnderLDAP *ld; MainMenuImpl *pr; }; #endif qldapadmin-1.0-RC1/gui/AddUserView.cpp0100644000175000000000000006531507403134047016537 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'addnewuser.ui' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "AddUserView.h" #include #include #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "48 48 716 2", "Qt c None", ".f c #000000", "jg c #010101", "aA c #020201", "jj c #020202", "b2 c #030302", "hG c #040403", ".O c #050503", "bD c #050505", "b0 c #070604", "io c #070706", ".g c #080705", ".V c #080805", "hY c #090805", "j# c #090908", ".D c #0a0906", "b8 c #0a0a08", "#q c #0a0a09", "ja c #0b0b09", "gO c #0b0b0b", "b1 c #0c0b08", "ji c #0c0c0b", "d2 c #0d0c07", "h8 c #0d0d0a", "ia c #0d0d0d", ".C c #0e0d0a", "br c #0f0d08", "hb c #0f0e0c", "iD c #0f0f0e", "ii c #0f0f0f", "cT c #100f0a", ".s c #100f0c", "i5 c #10100e", "je c #101010", "#p c #11110f", "i1 c #12120f", "g1 c #121211", "h3 c #131311", "#3 c #131313", "j. c #141411", "iG c #141412", "ad c #151411", "hH c #151513", "eO c #16140d", "ey c #161613", "ep c #17150d", "#J c #171611", "hB c #18160d", ".t c #18170e", "iz c #191919", "jh c #1a1a17", "a8 c #1a1a1a", "dZ c #1c1a11", "hZ c #1c1c19", "eh c #1d1b13", ".j c #1d1c13", "hq c #1d1d16", "gj c #1e1c12", "aL c #1e1e1e", "hX c #1f1c13", ".U c #1f1d18", "eM c #201d13", "i7 c #20201c", "gs c #211f12", ".G c #211f13", "aY c #21201e", "i6 c #21211d", "dz c #242114", "#7 c #242119", "hC c #262215", "fc c #262216", "d# c #262316", "hk c #262621", "fI c #262626", ".w c #272519", "fn c #272624", "i0 c #272727", "ex c #28251b", "cQ c #282825", "#8 c #282828", "hR c #2a2a2a", "aB c #2b281e", "ac c #2c2921", "i2 c #2c2c2a", "#b c #2d2a1d", "gX c #2d2c26", "an c #2d2d2d", "be c #2e2c26", "#W c #2f2c1d", "ie c #2f2f29", "#4 c #2f2f2e", "dD c #302c1a", "jd c #30302f", "f4 c #312d1c", "gV c #312e1d", "jb c #31312b", "fB c #322e1d", "hW c #322f20", "gW c #322f22", "du c #323028", "bW c #323232", "gR c #332f1c", "jc c #33332f", "iU c #333331", "cv c #343022", "fY c #353535", "fD c #36321f", ".P c #363225", "#u c #363329", ".7 c #363428", "gU c #37321f", "g2 c #373425", "i8 c #383837", "#e c #393623", "fO c #39362e", "ha c #3b3724", "h9 c #3b3b3b", ".o c #3d3828", "h2 c #3d3d35", "dh c #3e3925", "gv c #3e3a26", ".8 c #3e3c32", "#5 c #3e3c33", "dL c #3e3d3a", "fi c #3e3e3e", "bP c #3f3d37", "eP c #423d24", "#6 c #423f36", "iv c #42423a", ".h c #433e2c", "gb c #434032", "gq c #43433d", "iY c #434342", "iw c #434343", "fd c #443e25", "b3 c #443f31", "es c #44402d", "iT c #44443b", "eu c #454545", "eG c #46412c", "iN c #464644", "hv c #474439", "if c #474742", "bF c #474747", "hj c #484228", "d. c #48432a", "e. c #484433", "hc c #494949", "er c #4a4329", "bf c #4a4531", "d0 c #4b4429", ".i c #4b4633", "ib c #4b4b42", "iC c #4b4b44", "#2 c #4b4b4b", "eF c #4c4a3b", ".Z c #4d4932", "gD c #4d493c", "hO c #4d4c47", "gY c #4d4d4d", "jf c #4e4e45", "cr c #4e4e4e", "fy c #4f4938", "iu c #4f4f4e", "bO c #52514d", "iM c #525249", "e# c #54534d", "eV c #54534e", "c# c #545454", "aC c #555145", "aH c #555246", "hI c #55554e", "iZ c #56564f", ".Q c #575344", "#y c #585234", "hN c #585851", "dc c #59564f", "bm c #595958", "g4 c #5a594c", "h7 c #5c5c5b", "dB c #5e5c54", "ay c #5f5c4f", "g3 c #5f5e59", "#9 c #626262", "dH c #636363", "f5 c #645b38", "cy c #646464", "ew c #655b39", "gk c #655d3b", "dt c #656255", "dR c #666149", "bs c #686041", "bd c #68665d", "dV c #69603a", "hp c #696964", "iF c #696968", "i4 c #6b6b6a", "en c #6c654c", "g0 c #6c6c63", "dX c #6d664f", "iP c #6d6d6d", "bL c #6e6d65", "bZ c #6f6643", "fP c #6f6849", "eQ c #6f6f6f", "gi c #706948", "it c #70706b", "hQ c #716d5b", "ig c #71716f", ".5 c #726b4c", "ao c #736f61", "i9 c #737373", "iJ c #75756c", "ih c #757571", "da c #776d42", "cj c #78766e", "aj c #797250", "h6 c #7b7b7a", "dC c #7b7b7b", "gP c #7d7d7d", "hF c #7e7345", "hf c #7e7449", "gN c #7f7a64", "iO c #7f7f7b", "hP c #80795f", "e7 c #817959", "d6 c #818181", "gQ c #82794e", "dv c #837b55", "d7 c #83817c", "aZ c #838383", "cz c #848484", "gl c #857b50", "eU c #858170", "iH c #878787", ".B c #8d856c", "hJ c #8d8d85", "h4 c #8d8d87", "h# c #8f8255", "fo c #8f8a7d", "ei c #908657", "hr c #928963", ".T c #928c74", "iE c #92928d", "b9 c #929292", "bn c #939393", "ea c #94928b", "dY c #949494", "fX c #958857", "ip c #96968e", "hl c #969693", "f6 c #97906f", "cA c #989585", "dA c #998b52", "#1 c #999998", "ax c #9b8c5a", "gp c #9b8f63", "eR c #9b9584", "eg c #9d9782", "hg c #9e9057", "dy c #9e9360", "i3 c #9e9e9a", "gJ c #9f9159", "gK c #a09259", "cq c #a09a82", "dd c #a0a0a0", "dW c #a19256", "cN c #a1965f", "aK c #a1a1a1", "bC c #a3986f", "fN c #a39e8f", "cM c #a4985f", "bK c #a5a296", "eo c #a5a5a5", ".u c #a79c62", "fz c #a7a7a7", "dS c #a89d67", "dI c #a8a088", "hu c #a99959", "g5 c #a9a077", "h1 c #a9a9a4", "eL c #ab9b5b", "eE c #aba17c", "#a c #aba48b", "fm c #acaaa1", ".W c #ada16d", ".r c #ada27c", "#m c #aea276", "gM c #aea475", "bc c #aea88b", "iB c #aeaea9", "#V c #afa167", "ck c #afa680", "a1 c #b0a372", "hm c #b0b0ae", "d1 c #b1a262", "ht c #b3a05e", "iV c #b3b3b0", "is c #b3b3b1", "c. c #b4b4b4", "db c #b5a360", "c9 c #b5a86a", "gm c #b6a767", "dE c #b6ad7f", "az c #b6b6b6", "aw c #b7aa7c", "el c #b8a865", "fx c #b9a964", "c7 c #b9b08f", "bG c #b9b5a8", "iL c #b9b9b1", "h. c #baa864", "hD c #baa966", "gI c #baac6e", "gL c #baad6e", "i. c #bababa", ".v c #bbaf71", "#t c #bbb395", "hd c #bbbbbb", "gT c #bcac68", "eW c #bcb8ad", "iA c #bcbcb9", "em c #bdac65", "d8 c #beae73", "#v c #beb181", "dl c #beb697", "fW c #bfae68", ".9 c #bfb9a0", "#r c #bfb9a8", "et c #bfbfbf", "go c #c0af68", "cW c #c1b999", "c6 c #c1bcaa", "hs c #c2b071", ".Y c #c2b36f", "aM c #c2beaf", "gC c #c2c2c0", "a. c #c2c2c2", "cP c #c3b375", "h5 c #c3c3c1", "iK c #c3c3c2", "gt c #c4b36c", "e1 c #c5ba86", "eH c #c6b975", "dp c #c6c3b8", "h0 c #c6c6c4", "bX c #c7c7c7", "dg c #c8b76e", "gu c #c9b76f", "#d c #c9b875", "fQ c #cabc7d", "gw c #cabf87", "hM c #cacac4", "cx c #cbbb7a", "#C c #cbcac4", "#D c #cbcac9", "#E c #cbcbcb", "gS c #ccba70", "bM c #cccac1", "e6 c #cdbc70", "gn c #cdbc71", "hi c #cebc71", "gZ c #cecece", "cU c #cfbc75", "aR c #cfc18a", "gh c #cfc493", "ds c #cfcab9", "id c #cfcfc8", "iX c #cfcfce", "cp c #d1bc70", "cO c #d1bf72", "bQ c #d1c482", "hE c #d2bf73", "fC c #d2c074", "cV c #d2cfbc", "fw c #d3c074", "hK c #d4d4d1", "fV c #d5c374", "b7 c #d5c380", "fv c #d5c47b", "ic c #d5d5d1", "eN c #d5d5d5", "eq c #d6c376", "bb c #d6ca97", "dK c #d6d2c6", "hh c #d7c476", "aX c #d7c480", "bV c #d7c896", "df c #d8c577", "av c #d8c78e", "dw c #d8ca82", "eK c #d9c677", "bg c #d9ca8a", "hS c #d9d9d9", "de c #dac77b", "fU c #dac87e", "aQ c #dace99", "ho c #dadad8", "cR c #dadada", "g8 c #dbc77c", "#x c #dbc880", "g9 c #dbc97c", "dQ c #dbd2b4", ".F c #dcc981", "bt c #dccd92", "ez c #dcd9d0", "bN c #dcdad1", "hw c #dcdcdc", ".X c #ddcc87", "a7 c #ddcc8a", ".6 c #ddd09d", "#o c #ddd3b0", "b. c #ddd9ca", "b6 c #dece8d", "#K c #ded2aa", "fh c #dededc", "bU c #dfcb80", "#c c #dfcd8b", "bB c #dfce8c", "#w c #dfcf8e", "e2 c #dfd088", "aG c #dfd095", "bz c #dfd09b", "bl c #dfd2a9", "iq c #dfdfde", "ap c #e0ce8a", "#U c #e0cf8f", "a6 c #e0cf91", "bA c #e0d094", "cw c #e1d092", "b5 c #e1d195", "aW c #e2cd7f", "bu c #e2d39d", "b4 c #e2d4a0", "by c #e2d5a3", "ai c #e3d49a", "#T c #e3d49b", "eD c #e3d69f", "ae c #e3dcbe", "e5 c #e4d07f", ".p c #e4d59d", ".q c #e4d6a1", "#S c #e4d7a5", "e0 c #e4d9a2", "ga c #e4e4e2", "bk c #e5d187", "fu c #e5d48d", "dx c #e5d58a", "fT c #e5d58b", "a5 c #e5d9ad", "#Q c #e5dbb9", "ce c #e5e0d1", "aF c #e6d8a3", "bv c #e6daab", "ci c #e6e2d6", "g7 c #e7d180", "bI c #e7d27f", ".E c #e7d68c", "eI c #e7d78d", "fS c #e7d894", "#n c #e7d9a6", "a2 c #e7daa7", "bw c #e7dbaf", "g6 c #e8d48d", "co c #e8d68b", "cL c #e8d888", "bx c #e8dcb1", "eJ c #e9d789", ".z c #e9ddae", "a4 c #e9deb6", "aD c #e9dfbd", "e4 c #eada91", "c8 c #eadb98", "a3 c #eadeb1", ".A c #eadeb2", "#R c #eadeb3", "ev c #ebd78e", "fR c #ebdb91", "aV c #ebdb99", "aP c #ebdc9d", "cJ c #ebe2b9", "au c #ecd78c", "bH c #ecdb9d", "cl c #ecdc93", "fp c #ece1a9", "aE c #ece1b9", "ah c #ece2bc", "cf c #ece7d6", "ij c #ececec", "dU c #eddb90", "eT c #eddc97", "#L c #ede3bf", "#0 c #edecec", "#F c #ededed", "cB c #eed681", "ba c #eed98d", "cb c #eeda8a", "fj c #eeda8d", "aS c #eedd8f", ".R c #eee4be", ".S c #eee4c0", "hn c #eeeeed", "dm c #efd881", "cX c #efd882", "b# c #efd986", "ek c #efdd8e", "aq c #efdd8f", "bT c #efdd92", "bj c #efdd93", "fs c #efdf99", "ag c #efe7c8", "iW c #efefef", "ca c #f0dd9c", "ft c #f0df92", "#B c #f0f0ef", "a9 c #f0f0f0", "eS c #f1dc86", "aN c #f1dc92", "gG c #f1dfa1", "fq c #f1e19b", "fr c #f1e3a0", "gg c #f1e6be", "eC c #f1e7c4", "## c #f1e9ca", "#P c #f1e9cc", "dP c #f1ecd8", "c5 c #f1ecdb", "cF c #f1edde", "aO c #f2de8e", "fJ c #f2e097", "cK c #f2e29c", "#. c #f2eacd", "#M c #f2ebd5", "gc c #f3de87", "as c #f3e090", "at c #f3e093", "gH c #f3e3a7", "bJ c #f3e6b1", "gf c #f3eac1", "af c #f3ecd3", "cE c #f3edda", "cI c #f3eee0", "cC c #f4e192", "e3 c #f4e290", "d9 c #f4e294", "ar c #f4e298", "ej c #f4e392", "gF c #f4e7bb", "ef c #f4e8b5", "gE c #f4e9bb", "#s c #f4edd4", "aI c #f4f2e5", "bE c #f4f4f4", "cn c #f5e391", "aU c #f5e49c", ".a c #f5e590", ".c c #f5e591", "eY c #f5e9b6", "dJ c #f5eab7", "hx c #f5f5f5", "bS c #f6e38f", "dn c #f6e498", "cY c #f6e499", "bR c #f6e58f", "dT c #f6e59b", "cc c #f6e59e", "eZ c #f6e7a7", "gx c #f6eaac", "gy c #f6ebb4", "cd c #f6edcd", "#O c #f6efd9", "hL c #f6f6f6", "bi c #f7e493", ".m c #f7e691", ".e c #f7e692", ".# c #f7e693", ".N c #f7e694", ".d c #f7e695", "iS c #f7e696", "iR c #f7e698", ".J c #f7e795", ".n c #f7e796", ".b c #f7e797", ".k c #f7e798", "fb c #f7e799", "iI c #f7e79a", "iQ c #f7e79c", "f0 c #f7e89b", "bY c #f7e89c", "f2 c #f7e89d", "ct c #f7e89e", "iy c #f7e8a0", "fk c #f7e8a7", "f3 c #f7e99e", "f1 c #f7e9a0", "fM c #f7f0db", "eX c #f7f0e2", "do c #f7f3e2", "#A c #f7f7f7", "cm c #f8e691", "bh c #f8e793", "aT c #f8e796", "cD c #f8e8a9", ".x c #f8e99f", "im c #f8e9a3", "fa c #f8eaa4", "bq c #f8eaa5", "in c #f8eaa6", "il c #f8eaa7", "cu c #f8ebaa", "ix c #f8ebab", "gd c #f8ebb1", "fA c #f8ecae", "cZ c #f8edba", "f8 c #f8eeb9", "f7 c #f8eebb", "eA c #f8f1db", "dN c #f8f5e4", "e8 c #f8f8f6", "fK c #f9ebb1", "i# c #f9ecb0", ".y c #f9edb0", "#l c #f9edb3", ".K c #f9edb4", "ee c #f9edba", ".4 c #f9eeb7", ".l c #f9eeb8", "ak c #f9eeba", "#H c #f9efba", ".I c #f9efbc", ".1 c #f9efbe", "#f c #f9efbf", "f9 c #f9efc1", "gz c #f9f0c5", "#X c #f9f1c7", "fl c #f9f1d1", "c4 c #f9f1db", "g. c #f9f2cd", "ge c #f9f2db", "cG c #f9f4e2", "c1 c #f9f4e4", "ch c #f9f4e6", "eB c #f9f4e7", "cH c #f9f5e4", "dr c #f9f5e5", "#N c #f9f5e6", "ed c #f9f5eb", "eb c #f9f6e7", "dO c #f9f6ea", "a0 c #f9f9f9", "dF c #faf0c0", "d3 c #faf0c1", "f# c #faf1c3", "hV c #faf1c4", "di c #faf1c6", "ik c #faf2c9", "bp c #faf2ca", "al c #faf3cf", "hU c #faf3d0", "fL c #faf3db", "fF c #faf4d6", "fE c #faf4d7", "fG c #faf5d8", "gA c #faf5da", "c0 c #faf5e4", "c3 c #faf5e6", "ec c #faf5e8", "dq c #faf6e8", "dM c #faf7eb", "a# c #fafafa", "f. c #fbf4d1", "d4 c #fbf4d2", "dj c #fbf4d5", "cS c #fbf5d6", "cs c #fbf5d8", "hy c #fbf5d9", "c2 c #fbf5e6", "#G c #fbf6da", ".2 c #fbf6db", "cg c #fbf6e7", "#Y c #fbf7df", "g# c #fbf8e5", "#z c #fbf8e6", "am c #fbf8e7", "gB c #fbfaf4", "fe c #fbfbf8", "ir c #fbfbfb", "hz c #fcf6d8", "gr c #fcf8e3", "#I c #fcf8e6", "e9 c #fcf8e7", "fZ c #fcf9ea", ".0 c #fcf9eb", "dk c #fcfaec", "d5 c #fcfaee", "ff c #fcfaf2", "fg c #fcfcf7", "fH c #fcfcfa", "#Z c #fcfcfc", "hT c #fdfaef", "hA c #fdfbee", "dG c #fdfbf1", ".L c #fdfbf2", "#k c #fdfbf3", "aa c #fdfbf4", "#i c #fdfcf5", "bo c #fdfcf6", ".3 c #fdfcf9", ".H c #fdfdf9", "aJ c #fdfdfa", "ab c #fdfdfb", "#h c #fdfdfc", "#j c #fdfdfd", "he c #fefdf9", ".M c #fefefe", "#g c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.dQtQtQtQtQtQtQtQtQtQtQt.b.e.dQtQtQtQtQtQt", "QtQtQtQt.f.g.h.iQtQtQtQtQtQt.f.jQtQtQtQtQtQtQtQtQtQt.k.#.lQtQtQtQtQtQtQtQtQtQt.e.m.nQtQtQtQtQtQt", "QtQtQtQt.o.p.q.r.sQtQtQtQt.t.u.v.wQtQtQtQtQtQtQtQtQt.x.m.yQtQtQtQtQtQtQtQtQt.n.e.nQtQtQtQtQtQtQt", "QtQtQtQtQt.f.z.A.B.CQtQtQt.D.E.F.GQtQtQtQtQtQtQtQt.H.I.J.K.L.M.MQtQtQtQtQt.k.e.NQtQtQtQtQtQtQtQt", "QtQt.O.PQtQt.Q.R.S.T.UQtQt.V.W.X.Y.ZQtQtQtQtQt.M.M.M.0.1.2.3.M.M.M.M.MQt.4.#.kQtQtQtQtQtQtQtQtQt", "Qt.f.5.6.7.f.8.9#.###a.fQtQt#b#c#d#e#fQtQt#g.M.M.M.M#h#i.H#j.M.M.M.M.M#k.K.d#lQtQtQtQtQtQtQtQtQt", "Qt.f#m#n.A#o#p#q#r#s###t#u.f#v#w#x#y#f#z#A.M.M.M#h.M#B#C#D#E#F.M.M.M.M.3#G#H#IQtQtQtQtQtQtQtQtQt", "QtQt.f#J#K#L#.#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z.M.M#0#1#2#3#4#5#6#7#8#9a.a##j.HaaabQtQtQtQtQtQtQtQtQt", "QtQtQtQtacadaeaf#O#sagah.A#nai#wajakalam.M.Ma.anaoapaqarasatauavawaxayaz.M.M.M.MQtQtQtQtQtQtQtQt", "QtQtaAaB.C.faC###.##aDaE.zaFaG#caHaI#IaJ.MaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa0.M.M#gQtQtQtQtQtQtQt", "Qt.fa1.pa2a3aE.R.S.Ra4a5a2.pa6a7a8a9.M.Ma.aLb.b#babbbcbdbebfbgbhbibjbkblbmbn.M.M.Mbobpbq.n.eQtQt", "Qtbrbsbtbu#Sbvbwbx.A.zbybzbAbBbCbDbE.Ma#bFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbX.M.M.2bY.e.e.bQtQt", "QtQtbZ.Db0.g.gb1b2b3b4.pb5b6b7b8b9.M.Mc.c#cacbcccdcecfcgchcicjckclcmcncocpcqcr.M.McsbYctcuQtQtQt", "QtQtQtQtQtQtQtQtQtQtcvcwbBcx.fcy#Z.M.MczcAcBcCcDcEcFcGcHcG#NcIcJcKcLcMcNcOcPcQcR.MbocSQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtcT.X.FcU.fcV.0.3#jcycWcXcYcZc0c1c2c3c4c5c6c7c8c9d.d#dadbdcdd.M.M.MQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtaAdedfdgdhdidjdk#hcydldmdncZdodpdqdrcGdsdtdudvdwdxdydzdAdBdC.M.M#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtdDdfdf.fdEdFcSdG#hdHdIdmcCdJdKdLdMdNdOdPdQdR.jdSdTdUdVdWdXdY.M#g#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtdZd0dfd1d2d3d4d5ab.Md6d7d8d9e.e#eaebecedeeefegeheiejekelemeneo.M.M#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtepeqdferesQtQtQt#h.MeteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeN.M.M.MQtQtQtQtQt", "QtQtQtQtQtQtQtQtQteOdfdfePQtQtQtQt#Z#ha0eQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7cre8e9f.f##lfafb.bQt", "QtQtQtQtQtQtQtQtQtfcdfdffdQtQtQtQtfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfz.0fAfb.d.e.m.m.eQt", "QtQtQtQtQtQtQtQtQtfBfCdffDQtQtQtfEfFfGamfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYbEfZfAf0f1f2f3QtQtQt", "QtQtQtQtQtQtQtQtQtf4fCdff5f6Qtf7f8f9g.g#gagbgcgdgegfggghgigjgkglgmgngogpgqaK.MaJgrf.QtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtgsgtdfgugvgwgxgygzgAgBgCgDcBgEgFgGgHfJcogIgJgKgLgMgNgOgPa#.M.MQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtgQgRgSgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9h.h#hahbhchd#haahe.MQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b.khfePhghhhihhdfhhdghjhkhlhmhnhohphqhrhshthuhv#9hwhx.MdGhyhzhAQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.kf0QtephBhChDhEeqhhhFhGhHhIhJhKhLhMhNhOhPhQhRhS#h#h.MhThUhVhVQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQthWhXeOhYgRhZh0h1h2h3h4h5h6h7h8h9i.#h#h#h.M.Hhy.I#li#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaLiaibic#Z#Aidieifigihiiij#Z#Z#ZQtQtQtQtiki#iliminQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fioieipiqirisitiuiviwQtQtQtQtQtQtQtQtQtQtixiyctctQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiz.fiAiBiCiDiEb9eQiFiGiHQtQtQtQtQtQtQtQtQtQtQtQtctiIfbiIQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fiJiKa9a9iLiMiNiOiPbDQtQtQtQtQtQtQtQtQtQtQtQtQtQtiQiRiSQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.fiTiUiViWiXiFiYiZi0QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiSQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.feyi1iei2i3eQi4.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.fi5i6i7i8iFi9.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtj.j#eyh3jajbjcjdjeQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtjfjgj.jhjii5.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtjgjjQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; /* * Constructs a AddUserView which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ AddUserView::AddUserView( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "AddUserView" ); resize( 761, 399 ); setCaption( tr( "QLDAPAdmin -- Add New User" ) ); setIcon( image0 ); TextLabel1_2_4 = new QLabel( this, "TextLabel1_2_4" ); TextLabel1_2_4->setGeometry( QRect( 10, 160, 130, 20 ) ); TextLabel1_2_4->setFrameShape( QLabel::NoFrame ); TextLabel1_2_4->setText( tr( "MailHost" ) ); TextLabel1_2_2 = new QLabel( this, "TextLabel1_2_2" ); TextLabel1_2_2->setGeometry( QRect( 390, 130, 130, 20 ) ); TextLabel1_2_2->setText( tr( "Mail Message Store" ) ); TextLabel1_2_3_2_2_2 = new QLabel( this, "TextLabel1_2_3_2_2_2" ); TextLabel1_2_3_2_2_2->setGeometry( QRect( 390, 70, 130, 20 ) ); TextLabel1_2_3_2_2_2->setText( tr( "Password" ) ); TextLabel1_2_3 = new QLabel( this, "TextLabel1_2_3" ); TextLabel1_2_3->setGeometry( QRect( 10, 130, 130, 20 ) ); TextLabel1_2_3->setText( tr( "Home Directory" ) ); TextLabel1_2_5 = new QLabel( this, "TextLabel1_2_5" ); TextLabel1_2_5->setGeometry( QRect( 10, 190, 130, 20 ) ); TextLabel1_2_5->setText( tr( "Mail Reply Text" ) ); ButtonGroup2_2 = new QButtonGroup( this, "ButtonGroup2_2" ); ButtonGroup2_2->setGeometry( QRect( 280, 240, 190, 150 ) ); ButtonGroup2_2->setTitle( tr( "DeliveryMode" ) ); R_NoMailbox = new QRadioButton( ButtonGroup2_2, "R_NoMailbox" ); R_NoMailbox->setGeometry( QRect( 10, 40, 94, 20 ) ); R_NoMailbox->setText( tr( "No mailbox" ) ); R_LocalDelivery = new QRadioButton( ButtonGroup2_2, "R_LocalDelivery" ); R_LocalDelivery->setGeometry( QRect( 10, 60, 120, 20 ) ); R_LocalDelivery->setText( tr( "Local delivery" ) ); R_NormalDelivery = new QRadioButton( ButtonGroup2_2, "R_NormalDelivery" ); R_NormalDelivery->setGeometry( QRect( 10, 120, 170, 20 ) ); R_NormalDelivery->setText( tr( "Normal (Default)" ) ); R_NormalDelivery->setChecked( TRUE ); R_Reply = new QRadioButton( ButtonGroup2_2, "R_Reply" ); R_Reply->setGeometry( QRect( 10, 80, 120, 20 ) ); R_Reply->setText( tr( "Reply" ) ); R_EchoMessage = new QRadioButton( ButtonGroup2_2, "R_EchoMessage" ); R_EchoMessage->setGeometry( QRect( 10, 100, 170, 20 ) ); R_EchoMessage->setText( tr( "Echo the message" ) ); R_ForwardOnly = new QRadioButton( ButtonGroup2_2, "R_ForwardOnly" ); R_ForwardOnly->setGeometry( QRect( 10, 20, 100, 20 ) ); R_ForwardOnly->setText( tr( "Forward only" ) ); TextLabel1_2_3_2_2_2_2 = new QLabel( this, "TextLabel1_2_3_2_2_2_2" ); TextLabel1_2_3_2_2_2_2->setGeometry( QRect( 390, 100, 130, 20 ) ); TextLabel1_2_3_2_2_2_2->setText( tr( "Password Confirm" ) ); L_MailHost = new QLineEdit( this, "L_MailHost" ); L_MailHost->setGeometry( QRect( 150, 160, 221, 22 ) ); TextLabel1_2_3_2_2_2_3 = new QLabel( this, "TextLabel1_2_3_2_2_2_3" ); TextLabel1_2_3_2_2_2_3->setGeometry( QRect( 10, 70, 130, 20 ) ); TextLabel1_2_3_2_2_2_3->setText( tr( "E-Mail Address (uid)" ) ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 310, 0, 150, 30 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setText( tr( "QLDAPAdmin" ) ); L_MailMessageStore = new QLineEdit( this, "L_MailMessageStore" ); L_MailMessageStore->setGeometry( QRect( 530, 130, 221, 22 ) ); L_MailMessageStore->setEchoMode( QLineEdit::Normal ); L_Gecos = new QLineEdit( this, "L_Gecos" ); L_Gecos->setGeometry( QRect( 150, 100, 221, 22 ) ); L_MailReplyText = new QLineEdit( this, "L_MailReplyText" ); L_MailReplyText->setGeometry( QRect( 150, 190, 221, 22 ) ); ButtonGroup6 = new QButtonGroup( this, "ButtonGroup6" ); ButtonGroup6->setGeometry( QRect( 480, 240, 191, 90 ) ); ButtonGroup6->setTitle( tr( "Account Status" ) ); R_Active = new QRadioButton( ButtonGroup6, "R_Active" ); R_Active->setGeometry( QRect( 10, 20, 110, 20 ) ); R_Active->setText( tr( "Active (Default)" ) ); R_Active->setChecked( TRUE ); R_Disabled = new QRadioButton( ButtonGroup6, "R_Disabled" ); R_Disabled->setGeometry( QRect( 10, 40, 110, 20 ) ); R_Disabled->setText( tr( "Disabled" ) ); R_NoPop = new QRadioButton( ButtonGroup6, "R_NoPop" ); R_NoPop->setGeometry( QRect( 10, 60, 150, 20 ) ); R_NoPop->setText( tr( "Pop access denied" ) ); TextLabel1_2_3_2_2 = new QLabel( this, "TextLabel1_2_3_2_2" ); TextLabel1_2_3_2_2->setGeometry( QRect( 10, 100, 130, 20 ) ); TextLabel1_2_3_2_2->setText( tr( "Gecos" ) ); L_HomeDirectory = new QLineEdit( this, "L_HomeDirectory" ); L_HomeDirectory->setGeometry( QRect( 150, 130, 221, 22 ) ); ButtonGroup2 = new QButtonGroup( this, "ButtonGroup2" ); ButtonGroup2->setGeometry( QRect( 80, 240, 190, 150 ) ); ButtonGroup2->setTitle( tr( "QmailDotMode" ) ); R_NoDotMode = new QRadioButton( ButtonGroup2, "R_NoDotMode" ); R_NoDotMode->setGeometry( QRect( 10, 110, 170, 20 ) ); R_NoDotMode->setText( tr( "None - Normal Delivery" ) ); R_LdapOnly = new QRadioButton( ButtonGroup2, "R_LdapOnly" ); R_LdapOnly->setGeometry( QRect( 10, 50, 94, 20 ) ); R_LdapOnly->setText( tr( "LdapOnly" ) ); R_LdapWithProg = new QRadioButton( ButtonGroup2, "R_LdapWithProg" ); R_LdapWithProg->setGeometry( QRect( 10, 70, 120, 20 ) ); R_LdapWithProg->setText( tr( "LdapWithProgram" ) ); R_BothDotMode = new QRadioButton( ButtonGroup2, "R_BothDotMode" ); R_BothDotMode->setGeometry( QRect( 10, 90, 120, 20 ) ); R_BothDotMode->setText( tr( "Both (Default)" ) ); R_BothDotMode->setChecked( TRUE ); R_DotOnly = new QRadioButton( ButtonGroup2, "R_DotOnly" ); R_DotOnly->setGeometry( QRect( 10, 30, 94, 20 ) ); R_DotOnly->setText( tr( "DotOnly" ) ); L_Password = new QLineEdit( this, "L_Password" ); L_Password->setGeometry( QRect( 530, 70, 221, 22 ) ); L_Password->setEchoMode( QLineEdit::Password ); L_PasswordConfirm = new QLineEdit( this, "L_PasswordConfirm" ); L_PasswordConfirm->setGeometry( QRect( 530, 100, 221, 22 ) ); L_PasswordConfirm->setEchoMode( QLineEdit::Password ); T_UserName = new QLabel( this, "T_UserName" ); T_UserName->setGeometry( QRect( 150, 30, 400, 20 ) ); QFont T_UserName_font( T_UserName->font() ); T_UserName_font.setFamily( "adobe-helvetica" ); T_UserName_font.setItalic( TRUE ); T_UserName->setFont( T_UserName_font ); T_UserName->setText( tr( "Adding new user..." ) ); T_UserName->setAlignment( int( QLabel::AlignCenter ) ); B_Accept = new QPushButton( this, "B_Accept" ); B_Accept->setGeometry( QRect( 510, 350, 71, 31 ) ); B_Accept->setText( tr( "OK" ) ); B_Discard = new QPushButton( this, "B_Discard" ); B_Discard->setGeometry( QRect( 580, 350, 71, 31 ) ); B_Discard->setText( tr( "Cancel" ) ); L_DeliveryProgramPath = new QLineEdit( this, "L_DeliveryProgramPath" ); L_DeliveryProgramPath->setGeometry( QRect( 530, 160, 221, 22 ) ); TextLabel1_2_3_2 = new QLabel( this, "TextLabel1_2_3_2" ); TextLabel1_2_3_2->setGeometry( QRect( 390, 160, 130, 20 ) ); TextLabel1_2_3_2->setText( tr( "Delivery Prog. Path" ) ); TextLabel1_2_3_2_3 = new QLabel( this, "TextLabel1_2_3_2_3" ); TextLabel1_2_3_2_3->setGeometry( QRect( 640, 190, 40, 20 ) ); TextLabel1_2_3_2_3->setText( tr( "Count" ) ); TextLabel1_2_3_2_4 = new QLabel( this, "TextLabel1_2_3_2_4" ); TextLabel1_2_3_2_4->setGeometry( QRect( 390, 190, 70, 20 ) ); TextLabel1_2_3_2_4->setText( tr( "Quota Size" ) ); L_QuotaC = new QLineEdit( this, "L_QuotaC" ); L_QuotaC->setGeometry( QRect( 680, 190, 70, 22 ) ); L_QuotaS = new QLineEdit( this, "L_QuotaS" ); L_QuotaS->setGeometry( QRect( 530, 190, 100, 22 ) ); L_UserName = new QLineEdit( this, "L_UserName" ); L_UserName->setGeometry( QRect( 150, 70, 221, 22 ) ); // signals and slots connections connect( B_Discard, SIGNAL( clicked() ), this, SLOT( reject() ) ); // tab order setTabOrder( L_UserName, L_Gecos ); setTabOrder( L_Gecos, L_HomeDirectory ); setTabOrder( L_HomeDirectory, L_MailHost ); setTabOrder( L_MailHost, L_MailReplyText ); setTabOrder( L_MailReplyText, L_Password ); setTabOrder( L_Password, L_PasswordConfirm ); setTabOrder( L_PasswordConfirm, L_MailMessageStore ); setTabOrder( L_MailMessageStore, L_QuotaS ); setTabOrder( L_QuotaS, L_DeliveryProgramPath ); setTabOrder( L_DeliveryProgramPath, R_BothDotMode ); setTabOrder( R_BothDotMode, R_ForwardOnly ); setTabOrder( R_ForwardOnly, R_Reply ); setTabOrder( R_Reply, R_EchoMessage ); setTabOrder( R_EchoMessage, R_NormalDelivery ); setTabOrder( R_NormalDelivery, R_Active ); setTabOrder( R_Active, R_Disabled ); setTabOrder( R_Disabled, R_NoPop ); setTabOrder( R_NoPop, B_Accept ); setTabOrder( B_Accept, B_Discard ); setTabOrder( B_Discard, R_NoDotMode ); setTabOrder( R_NoDotMode, R_DotOnly ); } /* * Destroys the object and frees any allocated resources */ AddUserView::~AddUserView() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool AddUserView::event( QEvent* ev ) { bool ret = QDialog::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); QFont T_UserName_font( T_UserName->font() ); T_UserName_font.setFamily( "adobe-helvetica" ); T_UserName_font.setItalic( TRUE ); T_UserName->setFont( T_UserName_font ); } return ret; } qldapadmin-1.0-RC1/gui/AddUserView.h0100644000175000000000000000415607403134047016200 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'addnewuser.ui' ** ** Created: Tue Dec 4 16:43:14 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef ADDUSERVIEW_H #define ADDUSERVIEW_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QButtonGroup; class QLabel; class QLineEdit; class QPushButton; class QRadioButton; class AddUserView : public QDialog { Q_OBJECT public: AddUserView( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~AddUserView(); QLabel* TextLabel1_2_4; QLabel* TextLabel1_2_2; QLabel* TextLabel1_2_3_2_2_2; QLabel* TextLabel1_2_3; QLabel* TextLabel1_2_5; QButtonGroup* ButtonGroup2_2; QRadioButton* R_NoMailbox; QRadioButton* R_LocalDelivery; QRadioButton* R_NormalDelivery; QRadioButton* R_Reply; QRadioButton* R_EchoMessage; QRadioButton* R_ForwardOnly; QLabel* TextLabel1_2_3_2_2_2_2; QLineEdit* L_MailHost; QLabel* TextLabel1_2_3_2_2_2_3; QLabel* TextLabel1; QLineEdit* L_MailMessageStore; QLineEdit* L_Gecos; QLineEdit* L_MailReplyText; QButtonGroup* ButtonGroup6; QRadioButton* R_Active; QRadioButton* R_Disabled; QRadioButton* R_NoPop; QLabel* TextLabel1_2_3_2_2; QLineEdit* L_HomeDirectory; QButtonGroup* ButtonGroup2; QRadioButton* R_NoDotMode; QRadioButton* R_LdapOnly; QRadioButton* R_LdapWithProg; QRadioButton* R_BothDotMode; QRadioButton* R_DotOnly; QLineEdit* L_Password; QLineEdit* L_PasswordConfirm; QLabel* T_UserName; QPushButton* B_Accept; QPushButton* B_Discard; QLineEdit* L_DeliveryProgramPath; QLabel* TextLabel1_2_3_2; QLabel* TextLabel1_2_3_2_3; QLabel* TextLabel1_2_3_2_4; QLineEdit* L_QuotaC; QLineEdit* L_QuotaS; QLineEdit* L_UserName; protected: bool event( QEvent* ); }; #endif // ADDUSERVIEW_H qldapadmin-1.0-RC1/gui/AddUserViewImpl.cpp0100644000175000000000000001024607403100243017341 0ustar muratwheel#include #include #include #include #include #include #include #include #include "DomainViewImpl.h" #include "MainMenuImpl.h" #include "AddUserViewImpl.h" #include "AddUserView.h" #include "../src/EnderLDAP.h" #include "../src/QmailUser.h" #include "../src/QmailDomain.h" AddUserViewImpl::AddUserViewImpl(EnderLDAP *l, const char *domain, QWidget *parent = 0, const char *name = 0, WFlags f = 1) : AddUserView(parent, name, f) { ld = l; pr = (DomainViewImpl *)parent; strncpy(m_domain, domain, BUFSIZ); QString tmp = "@"; tmp += m_domain; L_MailHost->setText(ld->cfg->mailhost); L_QuotaS->setText(ld->cfg->default_quota_size); L_QuotaC->setText(ld->cfg->default_quota_count); L_UserName->setText(tmp); connect(B_Accept, SIGNAL(clicked()), this, SLOT(addUser())); tmp = "Adding new user to "; tmp += m_domain; T_UserName->setText(tmp); } AddUserViewImpl::~AddUserViewImpl() { } void AddUserViewImpl::addUser() { QmailUser *u; QString tmpquota; u = new QmailUser(); if (L_UserName->text().isEmpty() || L_Gecos->text().isEmpty() || L_MailMessageStore->text().isEmpty() || L_MailHost->text().isEmpty() || L_Password->text().isEmpty()) { QMessageBox::information( this, "Add user...", "The values user name, password, gecos, mailhost and message store are compulsory.\n" "You cannot leave them blank.\n\n"); return; } if (L_Password->text() != L_PasswordConfirm->text()) { QMessageBox::information(this, "Add user...", "Passwords do not match, please check your password!.\n\n"); return; } if (!L_QuotaS->text().isEmpty() || !L_QuotaC->text().isEmpty()) { if (L_QuotaS->text().isEmpty() || L_QuotaC->text().isEmpty()) { QMessageBox::information( this, "Add user...", "You selected to set quota,\n" "however, you have left either quota size or quota count blank.\n\n"); return; } } u->setMail(L_UserName->text()); tmpquota = L_QuotaS->text(); tmpquota += "S,"; tmpquota += L_QuotaC->text(); tmpquota += "C"; u->setMailQuota(tmpquota); if (!L_Gecos->text().isEmpty()) u->setCn(L_Gecos->text()); if (!L_Password->text().isEmpty()) u->setUserPassword(L_Password->text()); if (!L_MailMessageStore->text().isEmpty()) u->setMailMessageStore(L_MailMessageStore->text()); if (!L_MailHost->text().isEmpty()) u->setMailHost(L_MailHost->text()); if (!L_HomeDirectory->text().isEmpty()) u->setHomeDirectory(L_HomeDirectory->text()); if (!L_MailReplyText->text().isEmpty()) u->setMailReplyText(L_MailReplyText->text()); if (!L_DeliveryProgramPath->text().isEmpty()) u->setDeliveryProgramPath(L_DeliveryProgramPath->text()); if (R_DotOnly->isChecked()) u->setQmailDotMode("dotonly"); else if (R_LdapOnly->isChecked()) u->setQmailDotMode("ldaponly"); else if (R_LdapWithProg->isChecked()) u->setQmailDotMode("ldapwithprog"); else if (R_BothDotMode->isChecked()) u->setQmailDotMode("both"); else u->setQmailDotMode("none"); if (R_ForwardOnly->isChecked()) u->setDeliveryMode("forwardonly"); else if (R_NoMailbox->isChecked()) u->setDeliveryMode("nombox"); else if (R_LocalDelivery->isChecked()) u->setDeliveryMode("localdelivery"); else if (R_Reply->isChecked()) u->setDeliveryMode("reply"); else if (R_EchoMessage->isChecked()) u->setDeliveryMode("echo"); else u->setDeliveryMode("normal"); if (R_Active->isChecked()) u->setAccountStatus("active"); else if (R_Disabled->isChecked()) u->setAccountStatus("disabled"); else u->setAccountStatus("nopop"); if ((ld->AddUser(u)) != LDAP_SUCCESS) { ldap_perror(ld->getSessionHandle(), "Add"); switch( QMessageBox::warning( this, "Add New User...", "Oops, something strange happened!\n" "I couldn't create user information!.\n\n", "Try again", "Quit", 0, 0,1)) { case 0: return; break; case 1: return; break; } } else { QMessageBox::information(this, "Add new user...", "User has been created successfully.\n"); pr->ListDomainUsers(); delete u; reject(); } } void AddUserViewImpl::updateL_MailMessageStore() { } qldapadmin-1.0-RC1/gui/AddUserViewImpl.h0100644000175000000000000000101007401645043017005 0ustar muratwheel#ifndef ADDUSERVIEWIMPL_H #define ADDUSERVIEWIMPL_H #include #include "AddUserView.h" #include "../src/qconfig.h" class EnderLDAP; class DomainViewImpl; class AddUserViewImpl : public AddUserView { Q_OBJECT public: AddUserViewImpl(); AddUserViewImpl(EnderLDAP *, const char *, QWidget *, const char *, WFlags); ~AddUserViewImpl(); public slots: virtual void addUser(); virtual void updateL_MailMessageStore(); private: EnderLDAP *ld; DomainViewImpl *pr; char m_domain[BUFSIZ]; }; #endif qldapadmin-1.0-RC1/gui/DomainView.cpp0100644000175000000000000003045607403134047016415 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'domainview.ui' ** ** Created: Tue Dec 4 16:43:14 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "DomainView.h" #include #include #include #include #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "48 48 199 2", "Qt c None", ".a c #000000", "a# c #020202", ".v c #050505", "aK c #070707", "am c #0f0f0f", ".b c #111110", ".e c #111111", "af c #17181a", ".f c #181813", ".k c #181818", ".p c #191919", ".h c #1f1f1f", "aR c #202020", "aq c #212121", "a0 c #212223", "a9 c #212224", ".s c #222222", "a8 c #222425", "as c #242424", "b. c #29333f", "aQ c #2a2a2a", "bc c #2a3544", "#C c #2c2c2c", "aN c #2d2d2d", "aa c #2d2f31", "aM c #2d3034", ".3 c #2e3034", "b# c #2e3d51", ".o c #303030", "a1 c #31455c", "aO c #323232", "aA c #32669a", "aP c #333333", "#c c #33587f", "aI c #33689c", "ap c #346ca4", "#i c #35393f", ".j c #363636", "aH c #3670aa", "ag c #383d45", "aG c #3973ad", "al c #3a6898", "ae c #3b79b5", "aC c #3c4249", ".l c #3d3d3d", "aF c #3e75ae", "az c #3f77b2", "#9 c #3f84c7", "aB c #414141", "#V c #4186c9", "ak c #4280bf", "#W c #4290dc", ".O c #43464b", "#Q c #4391dd", "ao c #4481bd", "au c #448ad0", ".q c #454545", "aE c #45709e", "ay c #4683c0", "#Z c #4779af", "#1 c #4786c8", "#U c #487eb7", "ax c #4886c8", "av c #4887cb", "#F c #4895df", ".d c #494c47", "#5 c #496e99", "#0 c #4974a2", "aw c #4987c9", "#P c #4a80b9", "#4 c #4a8acc", "aY c #4a98e7", "#Y c #4b8dd3", ".2 c #4b98e6", ".c c #4c4c4c", "#J c #4c93dc", "#w c #4c9ae9", "#L c #4c9be9", "#T c #4d90d7", "#6 c #4e5e73", "ad c #4e8ed2", "#O c #4e91d8", "ah c #4f5a6a", "#K c #4f76a5", "#8 c #4f95db", "at c #5077a6", "#B c #5090d5", "aj c #5094db", "an c #5096dc", "aJ c #515151", "#u c #5199df", ".5 c #519be7", "#3 c #529ae0", "#b c #529ce8", ".8 c #53523e", "a. c #535353", "aU c #536f91", "#A c #539be6", ".1 c #539de9", "#R c #548dca", "#E c #549be3", "#g c #549ce7", ".6 c #559de8", ".g c #565656", "#x c #567397", "#7 c #5696d6", "ar c #5696d8", ".w c #569fea", "aZ c #5779a6", "aL c #579ee7", "#s c #57a0ea", "aS c #585858", "#H c #587394", "#S c #588cc6", "ac c #5898dc", "#l c #589ae2", "aD c #595959", "#X c #597ba4", "ai c #5994d5", "#k c #59a0e8", "be c #5a9ce4", ".4 c #5a9ee8", "a7 c #5aa0e9", "#a c #5aa1e9", "#2 c #5b8fc9", "bd c #5b9fe9", "#r c #5ba2eb", "bb c #5c9ce2", "#j c #5c9de1", "ba c #5c9ee5", ".K c #5ca0ea", "aX c #5ca0eb", "#G c #5d5d5d", "#M c #5d8bc1", "#o c #5d8eca", "#e c #5da0e7", ".J c #5da1ec", ".m c #5e5e5e", ".W c #5ea1e9", "a5 c #5ea1ea", "a6 c #5ea2ea", "ab c #5f7ea1", "#h c #5f8dc3", "#I c #5f90c9", "a3 c #5f9ee4", ".R c #5fa2ea", ".D c #606977", "#d c #6091ca", "#N c #6181a9", "a2 c #619de0", "#n c #62a4e9", ".i c #636363", ".# c #636b67", ".V c #6492c5", ".T c #6496d1", ".U c #6496d4", ".7 c #649bdb", ".Q c #64a3e9", ".t c #656763", ".u c #656863", "#D c #659ad6", "a4 c #65a1e3", "#z c #65a4ea", "aW c #66a5ea", ".L c #66a5ec", ".r c #676b60", ".N c #677e9c", ".S c #6797d2", ".Y c #6881a2", ".X c #68a5e8", "## c #68a5ea", ".M c #699bd6", ".n c #6a6a6a", "#y c #6ea7e9", ".I c #6ea8ed", ".C c #6f819a", ".0 c #70a9ed", ".A c #717885", "#p c #72abeb", ".H c #73acec", "#. c #74adef", ".G c #75aef0", "#q c #77aeee", "#v c #79abe9", "aT c #7aaae5", ".P c #7b8392", ".B c #7e96b7", ".F c #80a0ca", ".z c #8294ae", ".E c #8295b1", "#t c #82a6d3", ".9 c #8391aa", "#m c #83adde", "#f c #83b1e9", "aV c #83b1ea", ".x c #8495ad", ".Z c #85afe1", ".y c #889dbf", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.a.a.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b.a.a.a.c.d.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.a.a.eQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.f.a.a.a.gQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.aQtQt.a.a.a.hQtQtQtQtQtQtQtQtQt", "QtQtQt.a.a.a.iQtQtQtQtQtQtQt.j.gQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQt.a.a.a.hQtQtQtQtQtQt", ".k.a.l.mQtQtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.nQtQtQtQtQtQtQt.o.a.a.a.a.a.p.q", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.gQtQtQtQtQtQtQtQtQtQtQtQtQt.r.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.s.gQtQtQtQtQtQtQtQtQtQtQt.t.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQt.a.uQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.gQtQt.a.v.v.v.v.v.v.v.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.g.a.v.w.w.x.y.z.A.B.C.D.v.vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.v.E.F.G.H.H.I.J.J.J.K.L.M.N.O.vQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.P.G.H.L.Q.Q.R.S.T.U.V.J.W.R.X.Y.vQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.v.Z.0.R.w.w.w.w.1.2.e.3.4.5.e.e.6.7.vQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.8.9#.###a.w.w.w.w.w#b#c.e#d.2#c.e#e.W.R.vQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.v#f.0.R.w.w.w.w.w.w#g#c.e#h.2#c#i#j.K.J#k.vQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.8.9#.##.K.w.w.w.w.w.w.w#c#c#g.6#c#c.w.w.K#k#l.vQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.v#m.H#n.w.w.w.w.w.w.w.w.w.1.6.w.6.1.6.w.w#a.1#o.vQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.8#p#q.I#r.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6.6.w.w#s.2.vQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.8#t#p.L#k.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6.w.w#g#u.vQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.v#v.I.R.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6.6.w.6#w#x.oQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.e#y#z.K.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6.6.6#A#B#CQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.e#D.K#s.6.1.2.5.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6.6#E#F.v#GQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt#H#w.6.1#I.e.e.6.6.w.w.w.w.w.w.w.w.w.w.w.w.w.w.6#A#J#K.vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.e#J#L#M.e.e#N.5.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w#g#O#P.vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e#Q#R#S.e#I.1.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w#g#T#U.vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e#V#W#X.e.2.6.6.w.w.w.w.w.w.w.w.w.w.w.w.w.w#A#Y#Z.vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e#0#1.e#2#L.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w#3#4#5.vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e#0#6.e#7#w#g.6.6.w.w.w.w.w.w.w.w.w.w.6#8#9a..vQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e.ea#aaabac#g.5.1.6.6.6.6.w.w.w.w.6#Aadae.v.qQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.aa#a#afagahai.5#3#g.6.6.w.w.w#gajakalamQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtam#b#b#b#b.a#i#R#Fajan#3#A#E#u#Baoap.v.vQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaq#b#bar#7#b.vasatauavawawaxayazaAaB.vQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaq#b#b#b#b.2aCaD.v.vaEaFaGaHaIaJ.v.vQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaqaK#baL#w#L.5aMaKQtQtaNaNaOaPaQaRaSQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaqaTaK#w#w#w#waKaUaqQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaqaVaWaXaKaKaKaK#gaYaZaqQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQta0a1a2a3a4.W.K.Ka5a6.Ka7a8a9QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtb.b#ba.K.K.K.K.K.K.K.K.K.Kbbbcb.QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbd.K.K.K.K.K.K.K.K.K.K.K.KbeQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; /* * Constructs a DomainView which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ DomainView::DomainView( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "DomainView" ); resize( 460, 460 ); setCaption( tr( "QLDAPAdmin -- Domain Information" ) ); setIcon( image0 ); L_UserName = new QLineEdit( this, "L_UserName" ); L_UserName->setGeometry( QRect( 210, 320, 160, 31 ) ); L_UserName->setText( tr( "User" ) ); P_Find = new QToolButton( this, "P_Find" ); P_Find->setGeometry( QRect( 380, 327, 70, 19 ) ); P_Find->setText( tr( "Find user" ) ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 30, 20, 150, 30 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setText( tr( "QLDAPAdmin" ) ); DomainTextBox = new QLabel( this, "DomainTextBox" ); DomainTextBox->setGeometry( QRect( 190, 23, 220, 27 ) ); QFont DomainTextBox_font( DomainTextBox->font() ); DomainTextBox_font.setFamily( "adobe-helvetica" ); DomainTextBox_font.setItalic( TRUE ); DomainTextBox->setFont( DomainTextBox_font ); DomainTextBox->setFrameShape( QLabel::MShape ); DomainTextBox->setFrameShadow( QLabel::MShadow ); DomainTextBox->setText( tr( "enderunix.com" ) ); UsersList = new QListView( this, "UsersList" ); UsersList->addColumn( tr( "Email " ) ); UsersList->addColumn( tr( "Name " ) ); UsersList->header()->setClickEnabled( FALSE, UsersList->header()->count() - 1 ); UsersList->setGeometry( QRect( 20, 60, 430, 240 ) ); GroupBox1 = new QGroupBox( this, "GroupBox1" ); GroupBox1->setGeometry( QRect( 20, 310, 170, 130 ) ); GroupBox1->setTitle( tr( "Quick Links" ) ); P_AddUser = new QPushButton( GroupBox1, "P_AddUser" ); P_AddUser->setGeometry( QRect( 20, 70, 120, 20 ) ); P_AddUser->setText( tr( "Add new user" ) ); P_DeleteUser = new QPushButton( GroupBox1, "P_DeleteUser" ); P_DeleteUser->setGeometry( QRect( 20, 50, 120, 20 ) ); P_DeleteUser->setText( tr( "Delete user" ) ); P_Dismiss = new QPushButton( this, "P_Dismiss" ); P_Dismiss->setGeometry( QRect( 280, 390, 91, 31 ) ); P_Dismiss->setText( tr( "Close" ) ); // signals and slots connections connect( P_Dismiss, SIGNAL( clicked() ), this, SLOT( reject() ) ); // tab order setTabOrder( UsersList, P_DeleteUser ); setTabOrder( P_DeleteUser, P_AddUser ); setTabOrder( P_AddUser, L_UserName ); setTabOrder( L_UserName, P_Dismiss ); } /* * Destroys the object and frees any allocated resources */ DomainView::~DomainView() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool DomainView::event( QEvent* ev ) { bool ret = QDialog::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); QFont DomainTextBox_font( DomainTextBox->font() ); DomainTextBox_font.setFamily( "adobe-helvetica" ); DomainTextBox_font.setItalic( TRUE ); DomainTextBox->setFont( DomainTextBox_font ); } return ret; } qldapadmin-1.0-RC1/gui/DomainView.h0100644000175000000000000000214007403134047016047 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'domainview.ui' ** ** Created: Tue Dec 4 16:43:14 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef DOMAINVIEW_H #define DOMAINVIEW_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QGroupBox; class QLabel; class QLineEdit; class QListView; class QListViewItem; class QPushButton; class QToolButton; class DomainView : public QDialog { Q_OBJECT public: DomainView( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~DomainView(); QLineEdit* L_UserName; QToolButton* P_Find; QLabel* TextLabel1; QLabel* DomainTextBox; QListView* UsersList; QGroupBox* GroupBox1; QPushButton* P_AddUser; QPushButton* P_DeleteUser; QPushButton* P_Dismiss; protected: bool event( QEvent* ); }; #endif // DOMAINVIEW_H qldapadmin-1.0-RC1/gui/DomainViewImpl.cpp0100644000175000000000000000642007403100243017220 0ustar muratwheel#include #include #include #include #include #include #include #include #include "DomainViewImpl.h" #include "DomainView.h" #include "UserViewImpl.h" #include "UserView.h" #include "AddUserView.h" #include "AddUserViewImpl.h" #include "../src/EnderLDAP.h" #include "../src/QmailUser.h" #include "../src/QmailDomain.h" #include "main.h" DomainViewImpl::DomainViewImpl(EnderLDAP *l, const char *domain, int dm, QWidget *parent = 0, const char *name = 0, WFlags f = 1) : DomainView(parent, name, f) { dialogMode = dm; ld = l; strncpy(m_domain, domain, MAXBUFSIZ); DomainTextBox->setText(m_domain); connect(UsersList, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(viewUserSlot(QListViewItem *))); connect(P_AddUser, SIGNAL(clicked()), this, SLOT(viewAddUserSlot())); connect(P_DeleteUser, SIGNAL(clicked()), this, SLOT(deleteUserSlot())); connect(P_Find, SIGNAL(clicked()), this, SLOT(FindUserSlot())); ListDomainUsers(); } DomainViewImpl::~DomainViewImpl() { delete UsersList; } void DomainViewImpl::ListDomainUsers() { QmailUser *usr[MAXUSERS]; int i; memset(usr, 0, MAXDOMAINS); UsersList->clear(); ld->ListDomainUsers_(NULL, m_domain, usr); for (i = 0; usr[i] != NULL; i++) UsersList->insertItem(new QListViewItem(UsersList, usr[i]->getMail(), usr[i]->getCn())); } void DomainViewImpl::viewUserSlot(QListViewItem *p) { UserViewImpl *uw = new UserViewImpl(ld, (const char *)p->text(0), MODIFY, this, 0, 1); uw->show(); delete uw; } void DomainViewImpl::viewAddUserSlot() { AddUserViewImpl *u = new AddUserViewImpl(ld, m_domain, this, 0, 1); u->show(); delete u; } void DomainViewImpl::deleteUserSlot() { QListViewItem *i = UsersList->selectedItem(); if (i == NULL) return; switch(QMessageBox::warning(this, "Deleting user...", "I'm deleting this user, are you sure?\n\n", "No", "Yes", 0, 0, 1)) { case 0: return; break; case 1: break; } if (ld->DeleteUser(i->text(0), m_domain) != LDAP_SUCCESS) { QMessageBox::information(this, "Delete user", "Ooops, something strange happened!.\n" "I couldn't delete user!\n\n"); return; } else { QMessageBox::information(this, "Delete user", "User has been successfuly deleted!.\n\n"); ListDomainUsers(); } } void DomainViewImpl::FindUserSlot() { QmailUser *usr[256]; int i; /* initialize NULL */ for (i = 0; i < 256; i++) usr[i] = NULL; if (L_UserName->text().isEmpty() | L_UserName->text() == "User") return; if (L_UserName->text().find("@", 0, FALSE) == -1) { QMessageBox::information(this, "Find user", "Please give me a valid e-mail address\n\n"); return; } if (L_UserName->text().find(m_domain, 0, FALSE) == -1) { QMessageBox::information(this, "Find user", "You can only search current domain users\n\n"); return; } QmailUser tmp; tmp.setMail(L_UserName->text()); if (!ld->isExistUser(&tmp)) { QMessageBox::information(this, "Find user", "Couldn't find user!\n\n"); return; } ld->ListDomainUsers_(L_UserName->text(), m_domain, usr); UsersList->clear(); for (i = 0; usr[i] != NULL; i++) UsersList->insertItem(new QListViewItem(UsersList, usr[i]->getMail(), usr[i]->getCn())); } qldapadmin-1.0-RC1/gui/DomainViewImpl.h0100644000175000000000000000103407402653361016676 0ustar muratwheel#ifndef DOMAINVIEWIMPL_H #define DOMAINVIEWIMPL_H #include "DomainView.h" #include "../src/qconfig.h" class EnderLDAP; class DomainViewImpl : public DomainView { Q_OBJECT public: DomainViewImpl(); DomainViewImpl(EnderLDAP *, const char *, int, QWidget *, const char *, WFlags); ~DomainViewImpl(); void ListDomainUsers(); public slots: void viewUserSlot(QListViewItem *); void viewAddUserSlot(); void deleteUserSlot(); void FindUserSlot(); private: char m_domain[MAXBUFSIZ]; int dialogMode; EnderLDAP *ld; }; #endif qldapadmin-1.0-RC1/gui/GeneralOpts.cpp0100644000175000000000000002035007403134047016566 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'generalopts.ui' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "GeneralOpts.h" #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "16 16 104 2", "Qt c None", ".G c #3c2f27", ".Q c #3f322c", "#L c #3f322e", ".v c #40332b", ".k c #40382f", ".1 c #473830", "#a c #483931", "#k c #4c3d35", "#w c #53413c", "#K c #584539", "#C c #5b483e", ".# c #685854", ".8 c #917768", "#f c #a79084", ".F c #a88d6d", ".Y c #a88d79", ".O c #a89079", "#g c #af9880", ".J c #b59e92", ".E c #b69b7d", "#t c #b69b7f", "#J c #b79874", ".w c #b7a599", "#e c #b8a697", ".4 c #b9a29b", ".5 c #b9a69b", ".X c #baa287", ".x c #bba8a8", ".T c #bbada6", "#n c #bca697", ".U c #bca997", "#D c #bca998", ".P c #bda286", ".Z c #bda68e", "#x c #cbbca6", ".I c #ccc0b1", "#B c #ceb591", ".7 c #ceba9d", ".S c #d0c3c3", ".6 c #d0c7c3", ".N c #d2bc99", "#h c #d2bc9d", "#c c #d4c7bb", ".3 c #dbccb4", "#u c #dcc8a5", ".u c #dfc8a4", "#m c #dfd0b4", ".i c #e1d5ba", ".j c #e2cda5", ".e c #e3ddd0", ".c c #e3ddd4", ".g c #e4d5c3", ".f c #e4d9c7", ".h c #e5d5ba", ".l c #e7dcca", ".d c #e7dcd4", ".b c #e7dcd8", "#l c #e8ddd9", ".a c #ebe4e0", ".K c #ebe5dc", ".0 c #edd9ba", "#v c #efdeb2", "#d c #f0e4d7", ".9 c #f1e1c2", "#b c #f1eada", "#o c #f3ede4", "#j c #f5e0b8", "#G c #f5e6cd", ".2 c #f5efe2", "## c #f6e5b9", "#F c #f6e7be", "#q c #f8e9d3", ".W c #f8edd3", "#r c #f8edd7", "#. c #f9e9ca", "#E c #f9e9cc", "#A c #f9eeca", "#I c #fae5bd", "#H c #fae5bf", ".H c #fbf0ec", "#s c #fbf2d8", "#p c #fbf2dc", ".R c #fbf5e8", ".V c #fbf5ec", ".q c #fbf6e4", ".t c #fceec7", "#z c #fcf3d3", ".z c #fdfdfa", ".o c #fef5e9", ".A c #fef9ed", ".m c #fef9f5", ".B c #fefae9", ".n c #fefaf1", ".D c #ffedc8", "#i c #fff1cd", ".s c #fff1d0", ".M c #fff2d8", ".y c #fff5dd", ".C c #fff6d5", ".r c #fff6d8", ".p c #fff6e0", ".L c #fff6e5", "#y c #fffae5", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", ".#.a.a.b.c.d.e.f.f.g.h.i.i.j.j.k", ".#.l.m.m.n.n.n.o.o.p.q.r.s.t.u.v", ".#.w.x.y.z.m.n.A.B.q.y.C.D.E.F.G", ".#.H.I.J.K.o.n.A.L.p.M.N.O.P.j.Q", ".#.R.m.S.T.U.V.n.L.W.X.Y.Z.0.0.1", ".#.2.o.m.3.4.5.6.7.Y.8.j.9#.###a", ".##b.n#c.T.H#d#e#f.u.f#g#h#i#j#k", ".##l#m#n#o.L.L#p#q#r#s.9#t#u#v#w", ".##x.U.H#y.p.p.q.q.M.C#z#A.E#B#C", ".##D#d#A#A#q#q#.#E#F#G#H#I.0#J#K", ".##a#a#a#a#a#a#a#a#a#a#a#a#a#a#L"}; /* * Constructs a GeneralOptsView which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ GeneralOptsView::GeneralOptsView( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "GeneralOptsView" ); resize( 477, 387 ); setCaption( tr( "QLDAPAdmin 0.41 Visual (BETA)" ) ); setIcon( image0 ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 20, 10, 150, 30 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setFrameShape( QLabel::NoFrame ); TextLabel1->setText( tr( "QLDAPAdmin" ) ); TextLabel2 = new QLabel( this, "TextLabel2" ); TextLabel2->setGeometry( QRect( 140, 50, 230, 20 ) ); QFont TextLabel2_font( TextLabel2->font() ); TextLabel2_font.setFamily( "adobe-helvetica" ); TextLabel2_font.setPointSize( 13 ); TextLabel2_font.setBold( TRUE ); TextLabel2->setFont( TextLabel2_font ); TextLabel2->setText( tr( "General Configuration Options" ) ); TextLabel1_2_2_2 = new QLabel( this, "TextLabel1_2_2_2" ); TextLabel1_2_2_2->setGeometry( QRect( 30, 150, 160, 21 ) ); TextLabel1_2_2_2->setText( tr( "Ldap user" ) ); TextLabel1_2_2 = new QLabel( this, "TextLabel1_2_2" ); TextLabel1_2_2->setGeometry( QRect( 30, 120, 160, 21 ) ); TextLabel1_2_2->setText( tr( "Ldap server port" ) ); TextLabel1_2 = new QLabel( this, "TextLabel1_2" ); TextLabel1_2->setGeometry( QRect( 30, 90, 160, 21 ) ); TextLabel1_2->setText( tr( "Ldap server" ) ); TextLabel1_2_2_2_2 = new QLabel( this, "TextLabel1_2_2_2_2" ); TextLabel1_2_2_2_2->setGeometry( QRect( 30, 180, 160, 21 ) ); TextLabel1_2_2_2_2->setText( tr( "Ldap password" ) ); L_LdapServer = new QLineEdit( this, "L_LdapServer" ); L_LdapServer->setGeometry( QRect( 200, 89, 240, 22 ) ); L_LdapPort = new QLineEdit( this, "L_LdapPort" ); L_LdapPort->setGeometry( QRect( 200, 120, 40, 22 ) ); L_LdapUser = new QLineEdit( this, "L_LdapUser" ); L_LdapUser->setGeometry( QRect( 200, 149, 240, 22 ) ); L_LdapPassword = new QLineEdit( this, "L_LdapPassword" ); L_LdapPassword->setGeometry( QRect( 200, 179, 140, 22 ) ); L_LdapPassword->setEchoMode( QLineEdit::Password ); P_Cancel = new QPushButton( this, "P_Cancel" ); P_Cancel->setGeometry( QRect( 240, 340, 100, 21 ) ); P_Cancel->setText( tr( "Cancel" ) ); P_SaveOpts = new QPushButton( this, "P_SaveOpts" ); P_SaveOpts->setGeometry( QRect( 140, 340, 100, 21 ) ); P_SaveOpts->setText( tr( "Save options" ) ); TextLabel1_2_2_2_2_2 = new QLabel( this, "TextLabel1_2_2_2_2_2" ); TextLabel1_2_2_2_2_2->setGeometry( QRect( 30, 210, 160, 21 ) ); TextLabel1_2_2_2_2_2->setText( tr( "Ldap Base DN" ) ); TextLabel1_2_2_2_2_2_2 = new QLabel( this, "TextLabel1_2_2_2_2_2_2" ); TextLabel1_2_2_2_2_2_2->setGeometry( QRect( 30, 300, 160, 21 ) ); TextLabel1_2_2_2_2_2_2->setText( tr( "Default mailhost" ) ); L_DefaultMailhost = new QLineEdit( this, "L_DefaultMailhost" ); L_DefaultMailhost->setGeometry( QRect( 200, 300, 240, 22 ) ); L_LdapBasedn = new QLineEdit( this, "L_LdapBasedn" ); L_LdapBasedn->setGeometry( QRect( 200, 209, 240, 22 ) ); L_QuotaSize = new QLineEdit( this, "L_QuotaSize" ); L_QuotaSize->setGeometry( QRect( 200, 239, 140, 22 ) ); L_QuotaCount = new QLineEdit( this, "L_QuotaCount" ); L_QuotaCount->setGeometry( QRect( 200, 269, 140, 22 ) ); TextLabel1_2_2_2_2_2_3 = new QLabel( this, "TextLabel1_2_2_2_2_2_3" ); TextLabel1_2_2_2_2_2_3->setGeometry( QRect( 30, 240, 160, 21 ) ); TextLabel1_2_2_2_2_2_3->setText( tr( "Default Quota Size (bytes)" ) ); TextLabel1_2_2_2_2_2_3_2 = new QLabel( this, "TextLabel1_2_2_2_2_2_3_2" ); TextLabel1_2_2_2_2_2_3_2->setGeometry( QRect( 30, 270, 160, 21 ) ); TextLabel1_2_2_2_2_2_3_2->setText( tr( "Default Quota count (mails)" ) ); // tab order setTabOrder( L_LdapServer, L_LdapPort ); setTabOrder( L_LdapPort, L_LdapUser ); setTabOrder( L_LdapUser, L_LdapPassword ); setTabOrder( L_LdapPassword, L_LdapBasedn ); setTabOrder( L_LdapBasedn, L_DefaultMailhost ); setTabOrder( L_DefaultMailhost, P_SaveOpts ); setTabOrder( P_SaveOpts, P_Cancel ); } /* * Destroys the object and frees any allocated resources */ GeneralOptsView::~GeneralOptsView() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool GeneralOptsView::event( QEvent* ev ) { bool ret = QDialog::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); QFont TextLabel2_font( TextLabel2->font() ); TextLabel2_font.setFamily( "adobe-helvetica" ); TextLabel2_font.setPointSize( 13 ); TextLabel2_font.setBold( TRUE ); TextLabel2->setFont( TextLabel2_font ); } return ret; } qldapadmin-1.0-RC1/gui/GeneralOpts.h0100644000175000000000000000263107403134047016235 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'generalopts.ui' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef GENERALOPTSVIEW_H #define GENERALOPTSVIEW_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QLabel; class QLineEdit; class QPushButton; class GeneralOptsView : public QDialog { Q_OBJECT public: GeneralOptsView( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~GeneralOptsView(); QLabel* TextLabel1; QLabel* TextLabel2; QLabel* TextLabel1_2_2_2; QLabel* TextLabel1_2_2; QLabel* TextLabel1_2; QLabel* TextLabel1_2_2_2_2; QLineEdit* L_LdapServer; QLineEdit* L_LdapPort; QLineEdit* L_LdapUser; QLineEdit* L_LdapPassword; QPushButton* P_Cancel; QPushButton* P_SaveOpts; QLabel* TextLabel1_2_2_2_2_2; QLabel* TextLabel1_2_2_2_2_2_2; QLineEdit* L_DefaultMailhost; QLineEdit* L_LdapBasedn; QLineEdit* L_QuotaSize; QLineEdit* L_QuotaCount; QLabel* TextLabel1_2_2_2_2_2_3; QLabel* TextLabel1_2_2_2_2_2_3_2; protected: bool event( QEvent* ); }; #endif // GENERALOPTSVIEW_H qldapadmin-1.0-RC1/gui/GeneralOptsImpl.cpp0100644000175000000000000000426307403100243017404 0ustar muratwheel#include #include #include #include #include #include #include #include #include "GeneralOptsImpl.h" #include "GeneralOpts.h" #include "UserViewImpl.h" #include "UserView.h" #include "AddUserView.h" #include "AddUserViewImpl.h" #include "../src/EnderLDAP.h" #include "../src/QmailUser.h" #include "../src/QmailDomain.h" #include "../src/cfgfile.h" #include "main.h" GeneralOptsViewImpl::GeneralOptsViewImpl(EnderLDAP *l, QWidget *parent = 0, const char *name = 0, WFlags f = 1) : GeneralOptsView(parent, name, f) { ld = l; connect(P_SaveOpts, SIGNAL(clicked()), this, SLOT(SaveSlot())); connect(P_Cancel, SIGNAL(clicked()), this, SLOT(reject())); LoadGeneralOpts(); QString v_string; v_string = "QLDAPAdmin Version "; v_string += ENDERLDAP_VERSION; this->setCaption(v_string); } GeneralOptsViewImpl::~GeneralOptsViewImpl() { } void GeneralOptsViewImpl::LoadGeneralOpts() { L_LdapServer->setText(ld->cfg->ldap_server); L_LdapPort->setText(ld->cfg->ldap_port); L_LdapUser->setText(ld->cfg->ldap_user); L_LdapPassword->setText(ld->cfg->ldap_password); L_LdapBasedn->setText(ld->cfg->ldap_basedn); L_DefaultMailhost->setText(ld->cfg->mailhost); } void GeneralOptsViewImpl::SaveSlot() { ConfigFile *l = new ConfigFile(); ConfigFile *p = new ConfigFile(); QString msg; int ret; strncpy(l->ldap_server, L_LdapServer->text(), BUFSIZE); strncpy(l->ldap_user, L_LdapUser->text(), BUFSIZE); strncpy(l->ldap_password, L_LdapPassword->text(), BUFSIZE); strncpy(l->ldap_basedn, L_LdapBasedn->text(), BUFSIZE); strncpy(l->mailhost, L_DefaultMailhost->text(), BUFSIZE); strncpy(l->ldap_port, L_LdapPort->text(), BUFSIZE); strncpy(l->default_quota_size, L_QuotaSize->text(), BUFSIZE); strncpy(l->default_quota_count, L_QuotaCount->text(), BUFSIZE); if ((ret = p->UpdateConfigParams(l)) != 0) { msg.sprintf("Error Occurred:\n%s\n\n", strerror(ret)); QMessageBox::information(this, "Save general options...", msg); } else { QMessageBox::information(this, "Save general options...", "General options have been successfuly saved.\n\n"); ld->cfg->LoadConfigParams(); reject(); } } qldapadmin-1.0-RC1/gui/GeneralOptsImpl.h0100644000175000000000000000063707401645043017064 0ustar muratwheel#ifndef GENERALOPTS_H #define GENERALOPTS_H #include "GeneralOpts.h" #include "../src/qconfig.h" class EnderLDAP; class GeneralOptsViewImpl : public GeneralOptsView { Q_OBJECT public: GeneralOptsViewImpl(); GeneralOptsViewImpl(EnderLDAP *, QWidget *, const char *, WFlags); ~GeneralOptsViewImpl(); void LoadGeneralOpts(); public slots: virtual void SaveSlot(); private: EnderLDAP *ld; }; #endif qldapadmin-1.0-RC1/gui/MainMenu.h0100644000175000000000000000207407403134047015524 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'mainmenu.ui' ** ** Created: Tue Dec 4 16:43:12 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef MAINMENU_H #define MAINMENU_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QGroupBox; class QLabel; class QListView; class QListViewItem; class QPushButton; class MainMenu : public QWidget { Q_OBJECT public: MainMenu( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~MainMenu(); QGroupBox* GroupBox1; QPushButton* P_GeneralOptions; QPushButton* P_AddDomain; QPushButton* P_DeleteDomain; QPushButton* P_About; QPushButton* P_Exit; QLabel* TextLabel1_2; QLabel* TextLabel2; QLabel* TextLabel1; QListView* DomainList; protected: bool event( QEvent* ); }; #endif // MAINMENU_H qldapadmin-1.0-RC1/gui/MainMenu.cpp0100644000175000000000000001523507403134047016062 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'mainmenu.ui' ** ** Created: Tue Dec 4 16:43:12 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "MainMenu.h" #include #include #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "16 16 104 2", "Qt c None", ".G c #3c2f27", ".Q c #3f322c", "#L c #3f322e", ".v c #40332b", ".k c #40382f", ".1 c #473830", "#a c #483931", "#k c #4c3d35", "#w c #53413c", "#K c #584539", "#C c #5b483e", ".# c #685854", ".8 c #917768", "#f c #a79084", ".F c #a88d6d", ".Y c #a88d79", ".O c #a89079", "#g c #af9880", ".J c #b59e92", ".E c #b69b7d", "#t c #b69b7f", "#J c #b79874", ".w c #b7a599", "#e c #b8a697", ".4 c #b9a29b", ".5 c #b9a69b", ".X c #baa287", ".x c #bba8a8", ".T c #bbada6", "#n c #bca697", ".U c #bca997", "#D c #bca998", ".P c #bda286", ".Z c #bda68e", "#x c #cbbca6", ".I c #ccc0b1", "#B c #ceb591", ".7 c #ceba9d", ".S c #d0c3c3", ".6 c #d0c7c3", ".N c #d2bc99", "#h c #d2bc9d", "#c c #d4c7bb", ".3 c #dbccb4", "#u c #dcc8a5", ".u c #dfc8a4", "#m c #dfd0b4", ".i c #e1d5ba", ".j c #e2cda5", ".e c #e3ddd0", ".c c #e3ddd4", ".g c #e4d5c3", ".f c #e4d9c7", ".h c #e5d5ba", ".l c #e7dcca", ".d c #e7dcd4", ".b c #e7dcd8", "#l c #e8ddd9", ".a c #ebe4e0", ".K c #ebe5dc", ".0 c #edd9ba", "#v c #efdeb2", "#d c #f0e4d7", ".9 c #f1e1c2", "#b c #f1eada", "#o c #f3ede4", "#j c #f5e0b8", "#G c #f5e6cd", ".2 c #f5efe2", "## c #f6e5b9", "#F c #f6e7be", "#q c #f8e9d3", ".W c #f8edd3", "#r c #f8edd7", "#. c #f9e9ca", "#E c #f9e9cc", "#A c #f9eeca", "#I c #fae5bd", "#H c #fae5bf", ".H c #fbf0ec", "#s c #fbf2d8", "#p c #fbf2dc", ".R c #fbf5e8", ".V c #fbf5ec", ".q c #fbf6e4", ".t c #fceec7", "#z c #fcf3d3", ".z c #fdfdfa", ".o c #fef5e9", ".A c #fef9ed", ".m c #fef9f5", ".B c #fefae9", ".n c #fefaf1", ".D c #ffedc8", "#i c #fff1cd", ".s c #fff1d0", ".M c #fff2d8", ".y c #fff5dd", ".C c #fff6d5", ".r c #fff6d8", ".p c #fff6e0", ".L c #fff6e5", "#y c #fffae5", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", ".#.a.a.b.c.d.e.f.f.g.h.i.i.j.j.k", ".#.l.m.m.n.n.n.o.o.p.q.r.s.t.u.v", ".#.w.x.y.z.m.n.A.B.q.y.C.D.E.F.G", ".#.H.I.J.K.o.n.A.L.p.M.N.O.P.j.Q", ".#.R.m.S.T.U.V.n.L.W.X.Y.Z.0.0.1", ".#.2.o.m.3.4.5.6.7.Y.8.j.9#.###a", ".##b.n#c.T.H#d#e#f.u.f#g#h#i#j#k", ".##l#m#n#o.L.L#p#q#r#s.9#t#u#v#w", ".##x.U.H#y.p.p.q.q.M.C#z#A.E#B#C", ".##D#d#A#A#q#q#.#E#F#G#H#I.0#J#K", ".##a#a#a#a#a#a#a#a#a#a#a#a#a#a#L"}; /* * Constructs a MainMenu which is a child of 'parent', with the * name 'name' and widget flags set to 'f' */ MainMenu::MainMenu( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "MainMenu" ); resize( 586, 322 ); setCaption( tr( "QLDAPAdmin 0.41 Visual (BETA)" ) ); setIcon( image0 ); GroupBox1 = new QGroupBox( this, "GroupBox1" ); GroupBox1->setGeometry( QRect( 20, 90, 170, 160 ) ); QFont GroupBox1_font( GroupBox1->font() ); GroupBox1->setFont( GroupBox1_font ); GroupBox1->setTitle( tr( "Quick Links" ) ); P_GeneralOptions = new QPushButton( GroupBox1, "P_GeneralOptions" ); P_GeneralOptions->setGeometry( QRect( 20, 30, 120, 20 ) ); P_GeneralOptions->setText( tr( "General Options" ) ); P_AddDomain = new QPushButton( GroupBox1, "P_AddDomain" ); P_AddDomain->setGeometry( QRect( 20, 50, 120, 20 ) ); P_AddDomain->setText( tr( "Add new domain" ) ); P_DeleteDomain = new QPushButton( GroupBox1, "P_DeleteDomain" ); P_DeleteDomain->setGeometry( QRect( 20, 70, 120, 20 ) ); P_DeleteDomain->setText( tr( "Delete domain" ) ); P_About = new QPushButton( GroupBox1, "P_About" ); P_About->setGeometry( QRect( 20, 90, 120, 20 ) ); P_About->setText( tr( "About" ) ); P_Exit = new QPushButton( GroupBox1, "P_Exit" ); P_Exit->setGeometry( QRect( 20, 110, 120, 20 ) ); P_Exit->setText( tr( "Exit" ) ); TextLabel1_2 = new QLabel( this, "TextLabel1_2" ); TextLabel1_2->setGeometry( QRect( 90, 280, 390, 40 ) ); TextLabel1_2->setText( tr( "(c) 2001, EnderUNIX Software Development Team Istanbul/Turkiye\n" " http://www.enderunix.org - roots@enderunix.org" ) ); TextLabel2 = new QLabel( this, "TextLabel2" ); TextLabel2->setGeometry( QRect( 20, 60, 190, 20 ) ); QFont TextLabel2_font( TextLabel2->font() ); TextLabel2_font.setFamily( "adobe-helvetica" ); TextLabel2->setFont( TextLabel2_font ); TextLabel2->setText( tr( "Admin tool for Qmail-LDAP" ) ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 20, 30, 150, 30 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setText( tr( "QLDAPAdmin" ) ); DomainList = new QListView( this, "DomainList" ); DomainList->addColumn( tr( "Domain Name " ) ); DomainList->addColumn( tr( "Domain Description " ) ); DomainList->header()->setClickEnabled( FALSE, DomainList->header()->count() - 1 ); DomainList->setGeometry( QRect( 240, 101, 330, 150 ) ); // tab order setTabOrder( P_GeneralOptions, P_AddDomain ); setTabOrder( P_AddDomain, P_DeleteDomain ); setTabOrder( P_DeleteDomain, P_About ); setTabOrder( P_About, DomainList ); } /* * Destroys the object and frees any allocated resources */ MainMenu::~MainMenu() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool MainMenu::event( QEvent* ev ) { bool ret = QWidget::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont GroupBox1_font( GroupBox1->font() ); GroupBox1->setFont( GroupBox1_font ); QFont TextLabel2_font( TextLabel2->font() ); TextLabel2_font.setFamily( "adobe-helvetica" ); TextLabel2->setFont( TextLabel2_font ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); } return ret; } qldapadmin-1.0-RC1/gui/MainMenuImpl.cpp0100644000175000000000000001040407402653361016701 0ustar muratwheel #include #include #include #include #include #include #include #include #include "MainMenu.h" #include "MainMenuImpl.h" #include "AboutBox.h" #include "DomainViewImpl.h" #include "AddDomainView.h" #include "AddDomainViewImpl.h" #include "GeneralOpts.h" #include "GeneralOptsImpl.h" #include "../src/EnderLDAP.h" #include "../src/QmailDomain.h" #include "main.h" MainMenuImpl::MainMenuImpl(EnderLDAP *l, QWidget *parent, const char *name, WFlags f) : MainMenu(parent, name, f) { ld = l; QString v_string; v_string = "QLDAPAdmin Version "; v_string += ENDERLDAP_VERSION; this->setCaption(v_string); file_pup = new QPopupMenu(this); file_pup->setCaption("File"); file_pup->insertItem("&General Options", this, SLOT(GeneralOptionsSlot())); file_pup->insertItem("&Add new domain", this, SLOT(ShowAddDomainBox())); file_pup->insertItem("&Delete domain", this, SLOT(DeleteDomainSlot())); file_pup->insertItem("&Exit", this, SLOT(ExitSlot())); help_pup = new QPopupMenu(this); help_pup->setCaption("Help"); help_pup->insertItem("&About QLDAPAdmin", this, SLOT(ShowAboutBox())); toolmenu = new QMenuBar(this); toolmenu->insertItem("&File", file_pup); toolmenu->insertItem("&Help", help_pup); ListDomains(); connect(DomainList, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(viewDomainSlot(QListViewItem *))); connect(P_About, SIGNAL(clicked()), this, SLOT(ShowAboutBox())); connect(P_AddDomain, SIGNAL(clicked()), this, SLOT(ShowAddDomainBox())); connect(P_DeleteDomain, SIGNAL(clicked()), this, SLOT(DeleteDomainSlot())); connect(P_GeneralOptions, SIGNAL(clicked()), this, SLOT(GeneralOptionsSlot())); connect(P_Exit, SIGNAL(clicked()), this, SLOT(ExitSlot())); } void MainMenuImpl::ShowAboutBox() { AboutBox *about = new AboutBox(this, "AboutBox", 1); about->exec(); } void MainMenuImpl::ShutDown() { close(); } void MainMenuImpl::ListDomains() { QmailDomain *dmns[MAXDOMAINS]; int i; memset(dmns, 0, MAXDOMAINS); ld->ListDomains_(dmns); DomainList->clear(); for (i = 0; dmns[i] != NULL; i++) DomainList->insertItem(new QListViewItem(DomainList, dmns[i]->getOu(), dmns[i]->getDescription())); } void MainMenuImpl::viewDomainSlot(QListViewItem *i) { DomainViewImpl *dw = new DomainViewImpl(ld, (const char *)i->text(0), MODIFY, this, 0, 1); dw->show(); } void MainMenuImpl::DeleteDomainSlot() { QListViewItem *i = DomainList->selectedItem(); if (i == NULL) return; if (ld->isExistDomain(i->text(0)) == false) { switch( QMessageBox::warning( this, "Delete domain...", "Oops, something strange happened!.\n" "I coulnd't find the domain!.\n\n", "Try again", "Quit", 0, 0, 1)) { case 0: return; break; case 1: return; break; } } switch( QMessageBox::warning( this, "Delete domain...", "All users of this domain will also be deleted!.\n" "Are you sure?!.\n\n", "No", "Yes", 0, 0, 1)) { case 0: return; break; case 1: break; } if ((ld->DeleteEntireDomain(i->text(0))) != LDAP_SUCCESS) { switch( QMessageBox::warning( this, "Delete domain...", "Oops, something strange happened!.\n" "I coulnd't delete the domain!.\n\n", "Try again", "Quit", 0, 0, 1)) { case 0: return; break; case 1: return; break; } } else { QMessageBox::information( this, "Delete domain...", "Domain has been deleted sucessfully.\n"); ListDomains(); } /* DomainViewImpl *dw = new DomainViewImpl(ld, (const char *)i->text(0), DELETE, this, 0, 1); dw->show(); */ } void MainMenuImpl::ShowAddDomainBox() { AddDomainViewImpl *a = new AddDomainViewImpl(ld, this, "AddDomain", 1); a->exec(); } void MainMenuImpl::GeneralOptionsSlot() { GeneralOptsViewImpl *g = new GeneralOptsViewImpl(ld, this, "General Options", 1); g->exec(); } void MainMenuImpl::ExitSlot() { switch( QMessageBox::warning(this, "QLDAPAdmin", "Are you sure you want to quit QLDAPAdmin ?\n\n", "Yes", "No", 0, 0, 1)) { case 0: exit(0); break; case 1: return; break; } } qldapadmin-1.0-RC1/gui/MainMenuImpl.h0100644000175000000000000000127007401636567016357 0ustar muratwheel#ifndef MAINMENUIMPL_H #define MAINMENUIMPL_H #include "MainMenu.h" class QMenuBar; class QPopupMenu; class QListViewItem; class EnderLDAP; class MainMenuImpl : public MainMenu { Q_OBJECT public: MainMenuImpl(EnderLDAP *, QWidget *parent = 0, const char *name = 0, WFlags f = 0); public slots: virtual void ShowAboutBox(); virtual void ShowAddDomainBox(); virtual void ShutDown(); virtual void ListDomains(); virtual void viewDomainSlot(QListViewItem *); virtual void DeleteDomainSlot(); virtual void GeneralOptionsSlot(); virtual void ExitSlot(); private: QMenuBar *toolmenu; QPopupMenu *file_pup; QPopupMenu *help_pup; QListViewItem *domains; EnderLDAP *ld; }; #endif qldapadmin-1.0-RC1/gui/Makefile0100644000175000000000000000227007403134047015300 0ustar muratwheel# QLDAPAdmin GUI Makefile CC=g++ OBJS= DomainView.o mocDomainView.o \ AboutBox.o mocAboutBox.o\ MainMenuImpl.o mocMainMenuImpl.o \ MainMenu.o mocMainMenu.o \ DomainViewImpl.o mocDomainViewImpl.o \ UserView.o mocUserView.o \ UserViewImpl.o mocUserViewImpl.o \ AddDomainView.o mocAddDomainView.o \ AddDomainViewImpl.o mocAddDomainViewImpl.o \ mocAddUserView.o AddUserView.o \ mocAddUserViewImpl.o AddUserViewImpl.o \ GeneralOpts.o mocGeneralOpts.o \ GeneralOptsImpl.o mocGeneralOptsImpl.o\ main.o SOURCES = ../src/LDAPException.o ../src/EnderLDAP.o ../src/QmailUser.o ../src/QmailDomain.o ../src/cfgfile.o LDFLAGS = -L/usr/lib/qt-2.3.1/lib -L/usr/local/lib LIBS= -lqt -lldap -llber -lcrypt CPPFLAGS= -I/usr/lib/qt-2.3.1/include -I/usr/local/include foo: $(OBJS) $(CC) -o qldapadmin $(OBJS) $(LDFLAGS) $(CPPFLAGS) $(LIBS) $(SOURCES) clean: rm -f *.o qldapadmin install: @echo @echo "Installing qldapadmin visual to $(BINDIR) " @echo install -c -m 500 qldapadmin /usr/local/bin ; @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo qldapadmin-1.0-RC1/gui/Makefile.FreeBSD0100644000175000000000000000225707403132344016514 0ustar muratwheel# QLDAPAdmin GUI Makefile CC=g++ OBJS= DomainView.o mocDomainView.o \ AboutBox.o mocAboutBox.o\ MainMenuImpl.o mocMainMenuImpl.o \ MainMenu.o mocMainMenu.o \ DomainViewImpl.o mocDomainViewImpl.o \ UserView.o mocUserView.o \ UserViewImpl.o mocUserViewImpl.o \ AddDomainView.o mocAddDomainView.o \ AddDomainViewImpl.o mocAddDomainViewImpl.o \ mocAddUserView.o AddUserView.o \ mocAddUserViewImpl.o AddUserViewImpl.o \ GeneralOpts.o mocGeneralOpts.o \ GeneralOptsImpl.o mocGeneralOptsImpl.o\ main.o SOURCES = ../src/LDAPException.o ../src/EnderLDAP.o ../src/QmailUser.o ../src/QmailDomain.o ../src/cfgfile.o LDFLAGS = -L/usr/X11R6/lib -L/usr/local/lib LIBS= -lqt2 -lldap -llber -lcrypt CPPFLAGS= -I/usr/X11R6/include/qt2 -I/usr/local/include foo: $(OBJS) $(CC) -o qldapadmin $(OBJS) $(LDFLAGS) $(CPPFLAGS) $(LIBS) $(SOURCES) clean: rm -f *.o qldapadmin install: @echo @echo "Installing qldapadmin visual to $(BINDIR) " @echo install -c -m 500 qldapadmin /usr/local/bin ; @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo qldapadmin-1.0-RC1/gui/Makefile.linux0100644000175000000000000000227007403134047016436 0ustar muratwheel# QLDAPAdmin GUI Makefile CC=g++ OBJS= DomainView.o mocDomainView.o \ AboutBox.o mocAboutBox.o\ MainMenuImpl.o mocMainMenuImpl.o \ MainMenu.o mocMainMenu.o \ DomainViewImpl.o mocDomainViewImpl.o \ UserView.o mocUserView.o \ UserViewImpl.o mocUserViewImpl.o \ AddDomainView.o mocAddDomainView.o \ AddDomainViewImpl.o mocAddDomainViewImpl.o \ mocAddUserView.o AddUserView.o \ mocAddUserViewImpl.o AddUserViewImpl.o \ GeneralOpts.o mocGeneralOpts.o \ GeneralOptsImpl.o mocGeneralOptsImpl.o\ main.o SOURCES = ../src/LDAPException.o ../src/EnderLDAP.o ../src/QmailUser.o ../src/QmailDomain.o ../src/cfgfile.o LDFLAGS = -L/usr/lib/qt-2.3.1/lib -L/usr/local/lib LIBS= -lqt -lldap -llber -lcrypt CPPFLAGS= -I/usr/lib/qt-2.3.1/include -I/usr/local/include foo: $(OBJS) $(CC) -o qldapadmin $(OBJS) $(LDFLAGS) $(CPPFLAGS) $(LIBS) $(SOURCES) clean: rm -f *.o qldapadmin install: @echo @echo "Installing qldapadmin visual to $(BINDIR) " @echo install -c -m 500 qldapadmin /usr/local/bin ; @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo qldapadmin-1.0-RC1/gui/UserView.cpp0100644000175000000000000006324207403134047016123 0ustar muratwheel/**************************************************************************** ** Form implementation generated from reading ui file 'userview.ui' ** ** Created: Tue Dec 4 16:43:13 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "UserView.h" #include #include #include #include #include #include #include #include #include #include #include static const char* const image0_data[] = { "48 48 716 2", "Qt c None", ".f c #000000", "jg c #010101", "aA c #020201", "jj c #020202", "b2 c #030302", "hG c #040403", ".O c #050503", "bD c #050505", "b0 c #070604", "io c #070706", ".g c #080705", ".V c #080805", "hY c #090805", "j# c #090908", ".D c #0a0906", "b8 c #0a0a08", "#q c #0a0a09", "ja c #0b0b09", "gO c #0b0b0b", "b1 c #0c0b08", "ji c #0c0c0b", "d2 c #0d0c07", "h8 c #0d0d0a", "ia c #0d0d0d", ".C c #0e0d0a", "br c #0f0d08", "hb c #0f0e0c", "iD c #0f0f0e", "ii c #0f0f0f", "cT c #100f0a", ".s c #100f0c", "i5 c #10100e", "je c #101010", "#p c #11110f", "i1 c #12120f", "g1 c #121211", "h3 c #131311", "#3 c #131313", "j. c #141411", "iG c #141412", "ad c #151411", "hH c #151513", "eO c #16140d", "ey c #161613", "ep c #17150d", "#J c #171611", "hB c #18160d", ".t c #18170e", "iz c #191919", "jh c #1a1a17", "a8 c #1a1a1a", "dZ c #1c1a11", "hZ c #1c1c19", "eh c #1d1b13", ".j c #1d1c13", "hq c #1d1d16", "gj c #1e1c12", "aL c #1e1e1e", "hX c #1f1c13", ".U c #1f1d18", "eM c #201d13", "i7 c #20201c", "gs c #211f12", ".G c #211f13", "aY c #21201e", "i6 c #21211d", "dz c #242114", "#7 c #242119", "hC c #262215", "fc c #262216", "d# c #262316", "hk c #262621", "fI c #262626", ".w c #272519", "fn c #272624", "i0 c #272727", "ex c #28251b", "cQ c #282825", "#8 c #282828", "hR c #2a2a2a", "aB c #2b281e", "ac c #2c2921", "i2 c #2c2c2a", "#b c #2d2a1d", "gX c #2d2c26", "an c #2d2d2d", "be c #2e2c26", "#W c #2f2c1d", "ie c #2f2f29", "#4 c #2f2f2e", "dD c #302c1a", "jd c #30302f", "f4 c #312d1c", "gV c #312e1d", "jb c #31312b", "fB c #322e1d", "hW c #322f20", "gW c #322f22", "du c #323028", "bW c #323232", "gR c #332f1c", "jc c #33332f", "iU c #333331", "cv c #343022", "fY c #353535", "fD c #36321f", ".P c #363225", "#u c #363329", ".7 c #363428", "gU c #37321f", "g2 c #373425", "i8 c #383837", "#e c #393623", "fO c #39362e", "ha c #3b3724", "h9 c #3b3b3b", ".o c #3d3828", "h2 c #3d3d35", "dh c #3e3925", "gv c #3e3a26", ".8 c #3e3c32", "#5 c #3e3c33", "dL c #3e3d3a", "fi c #3e3e3e", "bP c #3f3d37", "eP c #423d24", "#6 c #423f36", "iv c #42423a", ".h c #433e2c", "gb c #434032", "gq c #43433d", "iY c #434342", "iw c #434343", "fd c #443e25", "b3 c #443f31", "es c #44402d", "iT c #44443b", "eu c #454545", "eG c #46412c", "iN c #464644", "hv c #474439", "if c #474742", "bF c #474747", "hj c #484228", "d. c #48432a", "e. c #484433", "hc c #494949", "er c #4a4329", "bf c #4a4531", "d0 c #4b4429", ".i c #4b4633", "ib c #4b4b42", "iC c #4b4b44", "#2 c #4b4b4b", "eF c #4c4a3b", ".Z c #4d4932", "gD c #4d493c", "hO c #4d4c47", "gY c #4d4d4d", "jf c #4e4e45", "cr c #4e4e4e", "fy c #4f4938", "iu c #4f4f4e", "bO c #52514d", "iM c #525249", "e# c #54534d", "eV c #54534e", "c# c #545454", "aC c #555145", "aH c #555246", "hI c #55554e", "iZ c #56564f", ".Q c #575344", "#y c #585234", "hN c #585851", "dc c #59564f", "bm c #595958", "g4 c #5a594c", "h7 c #5c5c5b", "dB c #5e5c54", "ay c #5f5c4f", "g3 c #5f5e59", "#9 c #626262", "dH c #636363", "f5 c #645b38", "cy c #646464", "ew c #655b39", "gk c #655d3b", "dt c #656255", "dR c #666149", "bs c #686041", "bd c #68665d", "dV c #69603a", "hp c #696964", "iF c #696968", "i4 c #6b6b6a", "en c #6c654c", "g0 c #6c6c63", "dX c #6d664f", "iP c #6d6d6d", "bL c #6e6d65", "bZ c #6f6643", "fP c #6f6849", "eQ c #6f6f6f", "gi c #706948", "it c #70706b", "hQ c #716d5b", "ig c #71716f", ".5 c #726b4c", "ao c #736f61", "i9 c #737373", "iJ c #75756c", "ih c #757571", "da c #776d42", "cj c #78766e", "aj c #797250", "h6 c #7b7b7a", "dC c #7b7b7b", "gP c #7d7d7d", "hF c #7e7345", "hf c #7e7449", "gN c #7f7a64", "iO c #7f7f7b", "hP c #80795f", "e7 c #817959", "d6 c #818181", "gQ c #82794e", "dv c #837b55", "d7 c #83817c", "aZ c #838383", "cz c #848484", "gl c #857b50", "eU c #858170", "iH c #878787", ".B c #8d856c", "hJ c #8d8d85", "h4 c #8d8d87", "h# c #8f8255", "fo c #8f8a7d", "ei c #908657", "hr c #928963", ".T c #928c74", "iE c #92928d", "b9 c #929292", "bn c #939393", "ea c #94928b", "dY c #949494", "fX c #958857", "ip c #96968e", "hl c #969693", "f6 c #97906f", "cA c #989585", "dA c #998b52", "#1 c #999998", "ax c #9b8c5a", "gp c #9b8f63", "eR c #9b9584", "eg c #9d9782", "hg c #9e9057", "dy c #9e9360", "i3 c #9e9e9a", "gJ c #9f9159", "gK c #a09259", "cq c #a09a82", "dd c #a0a0a0", "dW c #a19256", "cN c #a1965f", "aK c #a1a1a1", "bC c #a3986f", "fN c #a39e8f", "cM c #a4985f", "bK c #a5a296", "eo c #a5a5a5", ".u c #a79c62", "fz c #a7a7a7", "dS c #a89d67", "dI c #a8a088", "hu c #a99959", "g5 c #a9a077", "h1 c #a9a9a4", "eL c #ab9b5b", "eE c #aba17c", "#a c #aba48b", "fm c #acaaa1", ".W c #ada16d", ".r c #ada27c", "#m c #aea276", "gM c #aea475", "bc c #aea88b", "iB c #aeaea9", "#V c #afa167", "ck c #afa680", "a1 c #b0a372", "hm c #b0b0ae", "d1 c #b1a262", "ht c #b3a05e", "iV c #b3b3b0", "is c #b3b3b1", "c. c #b4b4b4", "db c #b5a360", "c9 c #b5a86a", "gm c #b6a767", "dE c #b6ad7f", "az c #b6b6b6", "aw c #b7aa7c", "el c #b8a865", "fx c #b9a964", "c7 c #b9b08f", "bG c #b9b5a8", "iL c #b9b9b1", "h. c #baa864", "hD c #baa966", "gI c #baac6e", "gL c #baad6e", "i. c #bababa", ".v c #bbaf71", "#t c #bbb395", "hd c #bbbbbb", "gT c #bcac68", "eW c #bcb8ad", "iA c #bcbcb9", "em c #bdac65", "d8 c #beae73", "#v c #beb181", "dl c #beb697", "fW c #bfae68", ".9 c #bfb9a0", "#r c #bfb9a8", "et c #bfbfbf", "go c #c0af68", "cW c #c1b999", "c6 c #c1bcaa", "hs c #c2b071", ".Y c #c2b36f", "aM c #c2beaf", "gC c #c2c2c0", "a. c #c2c2c2", "cP c #c3b375", "h5 c #c3c3c1", "iK c #c3c3c2", "gt c #c4b36c", "e1 c #c5ba86", "eH c #c6b975", "dp c #c6c3b8", "h0 c #c6c6c4", "bX c #c7c7c7", "dg c #c8b76e", "gu c #c9b76f", "#d c #c9b875", "fQ c #cabc7d", "gw c #cabf87", "hM c #cacac4", "cx c #cbbb7a", "#C c #cbcac4", "#D c #cbcac9", "#E c #cbcbcb", "gS c #ccba70", "bM c #cccac1", "e6 c #cdbc70", "gn c #cdbc71", "hi c #cebc71", "gZ c #cecece", "cU c #cfbc75", "aR c #cfc18a", "gh c #cfc493", "ds c #cfcab9", "id c #cfcfc8", "iX c #cfcfce", "cp c #d1bc70", "cO c #d1bf72", "bQ c #d1c482", "hE c #d2bf73", "fC c #d2c074", "cV c #d2cfbc", "fw c #d3c074", "hK c #d4d4d1", "fV c #d5c374", "b7 c #d5c380", "fv c #d5c47b", "ic c #d5d5d1", "eN c #d5d5d5", "eq c #d6c376", "bb c #d6ca97", "dK c #d6d2c6", "hh c #d7c476", "aX c #d7c480", "bV c #d7c896", "df c #d8c577", "av c #d8c78e", "dw c #d8ca82", "eK c #d9c677", "bg c #d9ca8a", "hS c #d9d9d9", "de c #dac77b", "fU c #dac87e", "aQ c #dace99", "ho c #dadad8", "cR c #dadada", "g8 c #dbc77c", "#x c #dbc880", "g9 c #dbc97c", "dQ c #dbd2b4", ".F c #dcc981", "bt c #dccd92", "ez c #dcd9d0", "bN c #dcdad1", "hw c #dcdcdc", ".X c #ddcc87", "a7 c #ddcc8a", ".6 c #ddd09d", "#o c #ddd3b0", "b. c #ddd9ca", "b6 c #dece8d", "#K c #ded2aa", "fh c #dededc", "bU c #dfcb80", "#c c #dfcd8b", "bB c #dfce8c", "#w c #dfcf8e", "e2 c #dfd088", "aG c #dfd095", "bz c #dfd09b", "bl c #dfd2a9", "iq c #dfdfde", "ap c #e0ce8a", "#U c #e0cf8f", "a6 c #e0cf91", "bA c #e0d094", "cw c #e1d092", "b5 c #e1d195", "aW c #e2cd7f", "bu c #e2d39d", "b4 c #e2d4a0", "by c #e2d5a3", "ai c #e3d49a", "#T c #e3d49b", "eD c #e3d69f", "ae c #e3dcbe", "e5 c #e4d07f", ".p c #e4d59d", ".q c #e4d6a1", "#S c #e4d7a5", "e0 c #e4d9a2", "ga c #e4e4e2", "bk c #e5d187", "fu c #e5d48d", "dx c #e5d58a", "fT c #e5d58b", "a5 c #e5d9ad", "#Q c #e5dbb9", "ce c #e5e0d1", "aF c #e6d8a3", "bv c #e6daab", "ci c #e6e2d6", "g7 c #e7d180", "bI c #e7d27f", ".E c #e7d68c", "eI c #e7d78d", "fS c #e7d894", "#n c #e7d9a6", "a2 c #e7daa7", "bw c #e7dbaf", "g6 c #e8d48d", "co c #e8d68b", "cL c #e8d888", "bx c #e8dcb1", "eJ c #e9d789", ".z c #e9ddae", "a4 c #e9deb6", "aD c #e9dfbd", "e4 c #eada91", "c8 c #eadb98", "a3 c #eadeb1", ".A c #eadeb2", "#R c #eadeb3", "ev c #ebd78e", "fR c #ebdb91", "aV c #ebdb99", "aP c #ebdc9d", "cJ c #ebe2b9", "au c #ecd78c", "bH c #ecdb9d", "cl c #ecdc93", "fp c #ece1a9", "aE c #ece1b9", "ah c #ece2bc", "cf c #ece7d6", "ij c #ececec", "dU c #eddb90", "eT c #eddc97", "#L c #ede3bf", "#0 c #edecec", "#F c #ededed", "cB c #eed681", "ba c #eed98d", "cb c #eeda8a", "fj c #eeda8d", "aS c #eedd8f", ".R c #eee4be", ".S c #eee4c0", "hn c #eeeeed", "dm c #efd881", "cX c #efd882", "b# c #efd986", "ek c #efdd8e", "aq c #efdd8f", "bT c #efdd92", "bj c #efdd93", "fs c #efdf99", "ag c #efe7c8", "iW c #efefef", "ca c #f0dd9c", "ft c #f0df92", "#B c #f0f0ef", "a9 c #f0f0f0", "eS c #f1dc86", "aN c #f1dc92", "gG c #f1dfa1", "fq c #f1e19b", "fr c #f1e3a0", "gg c #f1e6be", "eC c #f1e7c4", "## c #f1e9ca", "#P c #f1e9cc", "dP c #f1ecd8", "c5 c #f1ecdb", "cF c #f1edde", "aO c #f2de8e", "fJ c #f2e097", "cK c #f2e29c", "#. c #f2eacd", "#M c #f2ebd5", "gc c #f3de87", "as c #f3e090", "at c #f3e093", "gH c #f3e3a7", "bJ c #f3e6b1", "gf c #f3eac1", "af c #f3ecd3", "cE c #f3edda", "cI c #f3eee0", "cC c #f4e192", "e3 c #f4e290", "d9 c #f4e294", "ar c #f4e298", "ej c #f4e392", "gF c #f4e7bb", "ef c #f4e8b5", "gE c #f4e9bb", "#s c #f4edd4", "aI c #f4f2e5", "bE c #f4f4f4", "cn c #f5e391", "aU c #f5e49c", ".a c #f5e590", ".c c #f5e591", "eY c #f5e9b6", "dJ c #f5eab7", "hx c #f5f5f5", "bS c #f6e38f", "dn c #f6e498", "cY c #f6e499", "bR c #f6e58f", "dT c #f6e59b", "cc c #f6e59e", "eZ c #f6e7a7", "gx c #f6eaac", "gy c #f6ebb4", "cd c #f6edcd", "#O c #f6efd9", "hL c #f6f6f6", "bi c #f7e493", ".m c #f7e691", ".e c #f7e692", ".# c #f7e693", ".N c #f7e694", ".d c #f7e695", "iS c #f7e696", "iR c #f7e698", ".J c #f7e795", ".n c #f7e796", ".b c #f7e797", ".k c #f7e798", "fb c #f7e799", "iI c #f7e79a", "iQ c #f7e79c", "f0 c #f7e89b", "bY c #f7e89c", "f2 c #f7e89d", "ct c #f7e89e", "iy c #f7e8a0", "fk c #f7e8a7", "f3 c #f7e99e", "f1 c #f7e9a0", "fM c #f7f0db", "eX c #f7f0e2", "do c #f7f3e2", "#A c #f7f7f7", "cm c #f8e691", "bh c #f8e793", "aT c #f8e796", "cD c #f8e8a9", ".x c #f8e99f", "im c #f8e9a3", "fa c #f8eaa4", "bq c #f8eaa5", "in c #f8eaa6", "il c #f8eaa7", "cu c #f8ebaa", "ix c #f8ebab", "gd c #f8ebb1", "fA c #f8ecae", "cZ c #f8edba", "f8 c #f8eeb9", "f7 c #f8eebb", "eA c #f8f1db", "dN c #f8f5e4", "e8 c #f8f8f6", "fK c #f9ebb1", "i# c #f9ecb0", ".y c #f9edb0", "#l c #f9edb3", ".K c #f9edb4", "ee c #f9edba", ".4 c #f9eeb7", ".l c #f9eeb8", "ak c #f9eeba", "#H c #f9efba", ".I c #f9efbc", ".1 c #f9efbe", "#f c #f9efbf", "f9 c #f9efc1", "gz c #f9f0c5", "#X c #f9f1c7", "fl c #f9f1d1", "c4 c #f9f1db", "g. c #f9f2cd", "ge c #f9f2db", "cG c #f9f4e2", "c1 c #f9f4e4", "ch c #f9f4e6", "eB c #f9f4e7", "cH c #f9f5e4", "dr c #f9f5e5", "#N c #f9f5e6", "ed c #f9f5eb", "eb c #f9f6e7", "dO c #f9f6ea", "a0 c #f9f9f9", "dF c #faf0c0", "d3 c #faf0c1", "f# c #faf1c3", "hV c #faf1c4", "di c #faf1c6", "ik c #faf2c9", "bp c #faf2ca", "al c #faf3cf", "hU c #faf3d0", "fL c #faf3db", "fF c #faf4d6", "fE c #faf4d7", "fG c #faf5d8", "gA c #faf5da", "c0 c #faf5e4", "c3 c #faf5e6", "ec c #faf5e8", "dq c #faf6e8", "dM c #faf7eb", "a# c #fafafa", "f. c #fbf4d1", "d4 c #fbf4d2", "dj c #fbf4d5", "cS c #fbf5d6", "cs c #fbf5d8", "hy c #fbf5d9", "c2 c #fbf5e6", "#G c #fbf6da", ".2 c #fbf6db", "cg c #fbf6e7", "#Y c #fbf7df", "g# c #fbf8e5", "#z c #fbf8e6", "am c #fbf8e7", "gB c #fbfaf4", "fe c #fbfbf8", "ir c #fbfbfb", "hz c #fcf6d8", "gr c #fcf8e3", "#I c #fcf8e6", "e9 c #fcf8e7", "fZ c #fcf9ea", ".0 c #fcf9eb", "dk c #fcfaec", "d5 c #fcfaee", "ff c #fcfaf2", "fg c #fcfcf7", "fH c #fcfcfa", "#Z c #fcfcfc", "hT c #fdfaef", "hA c #fdfbee", "dG c #fdfbf1", ".L c #fdfbf2", "#k c #fdfbf3", "aa c #fdfbf4", "#i c #fdfcf5", "bo c #fdfcf6", ".3 c #fdfcf9", ".H c #fdfdf9", "aJ c #fdfdfa", "ab c #fdfdfb", "#h c #fdfdfc", "#j c #fdfdfd", "he c #fefdf9", ".M c #fefefe", "#g c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.a.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.dQtQtQtQtQtQtQtQtQtQtQt.b.e.dQtQtQtQtQtQt", "QtQtQtQt.f.g.h.iQtQtQtQtQtQt.f.jQtQtQtQtQtQtQtQtQtQt.k.#.lQtQtQtQtQtQtQtQtQtQt.e.m.nQtQtQtQtQtQt", "QtQtQtQt.o.p.q.r.sQtQtQtQt.t.u.v.wQtQtQtQtQtQtQtQtQt.x.m.yQtQtQtQtQtQtQtQtQt.n.e.nQtQtQtQtQtQtQt", "QtQtQtQtQt.f.z.A.B.CQtQtQt.D.E.F.GQtQtQtQtQtQtQtQt.H.I.J.K.L.M.MQtQtQtQtQt.k.e.NQtQtQtQtQtQtQtQt", "QtQt.O.PQtQt.Q.R.S.T.UQtQt.V.W.X.Y.ZQtQtQtQtQt.M.M.M.0.1.2.3.M.M.M.M.MQt.4.#.kQtQtQtQtQtQtQtQtQt", "Qt.f.5.6.7.f.8.9#.###a.fQtQt#b#c#d#e#fQtQt#g.M.M.M.M#h#i.H#j.M.M.M.M.M#k.K.d#lQtQtQtQtQtQtQtQtQt", "Qt.f#m#n.A#o#p#q#r#s###t#u.f#v#w#x#y#f#z#A.M.M.M#h.M#B#C#D#E#F.M.M.M.M.3#G#H#IQtQtQtQtQtQtQtQtQt", "QtQt.f#J#K#L#.#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z.M.M#0#1#2#3#4#5#6#7#8#9a.a##j.HaaabQtQtQtQtQtQtQtQtQt", "QtQtQtQtacadaeaf#O#sagah.A#nai#wajakalam.M.Ma.anaoapaqarasatauavawaxayaz.M.M.M.MQtQtQtQtQtQtQtQt", "QtQtaAaB.C.faC###.##aDaE.zaFaG#caHaI#IaJ.MaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa0.M.M#gQtQtQtQtQtQtQt", "Qt.fa1.pa2a3aE.R.S.Ra4a5a2.pa6a7a8a9.M.Ma.aLb.b#babbbcbdbebfbgbhbibjbkblbmbn.M.M.Mbobpbq.n.eQtQt", "Qtbrbsbtbu#Sbvbwbx.A.zbybzbAbBbCbDbE.Ma#bFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbX.M.M.2bY.e.e.bQtQt", "QtQtbZ.Db0.g.gb1b2b3b4.pb5b6b7b8b9.M.Mc.c#cacbcccdcecfcgchcicjckclcmcncocpcqcr.M.McsbYctcuQtQtQt", "QtQtQtQtQtQtQtQtQtQtcvcwbBcx.fcy#Z.M.MczcAcBcCcDcEcFcGcHcG#NcIcJcKcLcMcNcOcPcQcR.MbocSQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtcT.X.FcU.fcV.0.3#jcycWcXcYcZc0c1c2c3c4c5c6c7c8c9d.d#dadbdcdd.M.M.MQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtaAdedfdgdhdidjdk#hcydldmdncZdodpdqdrcGdsdtdudvdwdxdydzdAdBdC.M.M#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtdDdfdf.fdEdFcSdG#hdHdIdmcCdJdKdLdMdNdOdPdQdR.jdSdTdUdVdWdXdY.M#g#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtdZd0dfd1d2d3d4d5ab.Md6d7d8d9e.e#eaebecedeeefegeheiejekelemeneo.M.M#gQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtepeqdferesQtQtQt#h.MeteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeN.M.M.MQtQtQtQtQt", "QtQtQtQtQtQtQtQtQteOdfdfePQtQtQtQt#Z#ha0eQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7cre8e9f.f##lfafb.bQt", "QtQtQtQtQtQtQtQtQtfcdfdffdQtQtQtQtfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfz.0fAfb.d.e.m.m.eQt", "QtQtQtQtQtQtQtQtQtfBfCdffDQtQtQtfEfFfGamfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYbEfZfAf0f1f2f3QtQtQt", "QtQtQtQtQtQtQtQtQtf4fCdff5f6Qtf7f8f9g.g#gagbgcgdgegfggghgigjgkglgmgngogpgqaK.MaJgrf.QtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtgsgtdfgugvgwgxgygzgAgBgCgDcBgEgFgGgHfJcogIgJgKgLgMgNgOgPa#.M.MQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtgQgRgSgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9h.h#hahbhchd#haahe.MQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b.khfePhghhhihhdfhhdghjhkhlhmhnhohphqhrhshthuhv#9hwhx.MdGhyhzhAQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.kf0QtephBhChDhEeqhhhFhGhHhIhJhKhLhMhNhOhPhQhRhS#h#h.MhThUhVhVQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQthWhXeOhYgRhZh0h1h2h3h4h5h6h7h8h9i.#h#h#h.M.Hhy.I#li#QtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaLiaibic#Z#Aidieifigihiiij#Z#Z#ZQtQtQtQtiki#iliminQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fioieipiqirisitiuiviwQtQtQtQtQtQtQtQtQtQtixiyctctQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiz.fiAiBiCiDiEb9eQiFiGiHQtQtQtQtQtQtQtQtQtQtQtQtctiIfbiIQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fiJiKa9a9iLiMiNiOiPbDQtQtQtQtQtQtQtQtQtQtQtQtQtQtiQiRiSQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.fiTiUiViWiXiFiYiZi0QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiSQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.feyi1iei2i3eQi4.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.fi5i6i7i8iFi9.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtj.j#eyh3jajbjcjdjeQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtjfjgj.jhjii5.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtjgjjQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; /* * Constructs a UserView which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ UserView::UserView( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QPixmap image0( ( const char** ) image0_data ); if ( !name ) setName( "UserView" ); resize( 406, 615 ); setCaption( tr( "QLDAPAdmin -- User Details" ) ); setIcon( image0 ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setGeometry( QRect( 30, 10, 150, 30 ) ); QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); TextLabel1->setFrameShape( QLabel::NoFrame ); TextLabel1->setText( tr( "QLDAPAdmin" ) ); T_UserName = new QLabel( this, "T_UserName" ); T_UserName->setGeometry( QRect( 190, 20, 200, 20 ) ); QFont T_UserName_font( T_UserName->font() ); T_UserName_font.setFamily( "adobe-helvetica" ); T_UserName_font.setItalic( TRUE ); T_UserName->setFont( T_UserName_font ); T_UserName->setText( tr( "murat@enderunix.com" ) ); TextLabel1_2_2 = new QLabel( this, "TextLabel1_2_2" ); TextLabel1_2_2->setGeometry( QRect( 30, 180, 130, 20 ) ); TextLabel1_2_2->setText( tr( "Mail Message Store" ) ); ButtonGroup2 = new QButtonGroup( this, "ButtonGroup2" ); ButtonGroup2->setGeometry( QRect( 20, 350, 180, 150 ) ); ButtonGroup2->setTitle( tr( "QmailDotMode" ) ); R_NoDotMode = new QRadioButton( ButtonGroup2, "R_NoDotMode" ); R_NoDotMode->setGeometry( QRect( 10, 110, 160, 20 ) ); R_NoDotMode->setText( tr( "None - Normal Delivery" ) ); R_DotOnly = new QRadioButton( ButtonGroup2, "R_DotOnly" ); R_DotOnly->setGeometry( QRect( 10, 30, 94, 20 ) ); R_DotOnly->setText( tr( "DotOnly" ) ); R_BothDotMode = new QRadioButton( ButtonGroup2, "R_BothDotMode" ); R_BothDotMode->setGeometry( QRect( 10, 90, 120, 20 ) ); R_BothDotMode->setText( tr( "Both (Default)" ) ); R_BothDotMode->setChecked( TRUE ); R_LdapOnly = new QRadioButton( ButtonGroup2, "R_LdapOnly" ); R_LdapOnly->setGeometry( QRect( 10, 50, 94, 20 ) ); R_LdapOnly->setText( tr( "LdapOnly" ) ); R_LdapWithProg = new QRadioButton( ButtonGroup2, "R_LdapWithProg" ); R_LdapWithProg->setGeometry( QRect( 10, 70, 120, 20 ) ); R_LdapWithProg->setText( tr( "LdapWithProgram" ) ); ButtonGroup2_2 = new QButtonGroup( this, "ButtonGroup2_2" ); ButtonGroup2_2->setGeometry( QRect( 210, 350, 180, 150 ) ); ButtonGroup2_2->setTitle( tr( "DeliveryMode" ) ); R_LocalDelivery = new QRadioButton( ButtonGroup2_2, "R_LocalDelivery" ); R_LocalDelivery->setGeometry( QRect( 10, 60, 120, 20 ) ); R_LocalDelivery->setText( tr( "Local delivery" ) ); R_Reply = new QRadioButton( ButtonGroup2_2, "R_Reply" ); R_Reply->setGeometry( QRect( 10, 80, 120, 20 ) ); R_Reply->setText( tr( "Reply" ) ); R_ForwardOnly = new QRadioButton( ButtonGroup2_2, "R_ForwardOnly" ); R_ForwardOnly->setGeometry( QRect( 10, 20, 100, 20 ) ); R_ForwardOnly->setText( tr( "Forward only" ) ); R_NoMailbox = new QRadioButton( ButtonGroup2_2, "R_NoMailbox" ); R_NoMailbox->setGeometry( QRect( 10, 40, 94, 20 ) ); R_NoMailbox->setText( tr( "No mailbox" ) ); R_EchoMessage = new QRadioButton( ButtonGroup2_2, "R_EchoMessage" ); R_EchoMessage->setGeometry( QRect( 10, 100, 160, 20 ) ); R_EchoMessage->setText( tr( "Echo the message" ) ); R_NormalDelivery = new QRadioButton( ButtonGroup2_2, "R_NormalDelivery" ); R_NormalDelivery->setGeometry( QRect( 10, 120, 150, 20 ) ); R_NormalDelivery->setText( tr( "Normal (Default)" ) ); R_NormalDelivery->setChecked( TRUE ); L_DeliveryProgramPath = new QLineEdit( this, "L_DeliveryProgramPath" ); L_DeliveryProgramPath->setGeometry( QRect( 170, 300, 221, 22 ) ); L_Quota = new QLineEdit( this, "L_Quota" ); L_Quota->setGeometry( QRect( 170, 210, 221, 22 ) ); L_HomeDirectory = new QLineEdit( this, "L_HomeDirectory" ); L_HomeDirectory->setGeometry( QRect( 170, 150, 221, 22 ) ); TextLabel1_2_5 = new QLabel( this, "TextLabel1_2_5" ); TextLabel1_2_5->setGeometry( QRect( 30, 270, 130, 20 ) ); TextLabel1_2_5->setText( tr( "Mail Reply Text" ) ); TextLabel1_2_4 = new QLabel( this, "TextLabel1_2_4" ); TextLabel1_2_4->setGeometry( QRect( 30, 240, 130, 20 ) ); TextLabel1_2_4->setText( tr( "MailHost" ) ); TextLabel1_2_3 = new QLabel( this, "TextLabel1_2_3" ); TextLabel1_2_3->setGeometry( QRect( 30, 150, 130, 20 ) ); TextLabel1_2_3->setText( tr( "Home Directory" ) ); L_MailReplyText = new QLineEdit( this, "L_MailReplyText" ); L_MailReplyText->setGeometry( QRect( 170, 270, 221, 22 ) ); L_MailMessageStore = new QLineEdit( this, "L_MailMessageStore" ); L_MailMessageStore->setGeometry( QRect( 170, 180, 221, 22 ) ); L_MailMessageStore->setEchoMode( QLineEdit::Normal ); L_MailHost = new QLineEdit( this, "L_MailHost" ); L_MailHost->setGeometry( QRect( 170, 240, 221, 22 ) ); TextLabel1_2_3_2 = new QLabel( this, "TextLabel1_2_3_2" ); TextLabel1_2_3_2->setGeometry( QRect( 30, 210, 130, 20 ) ); TextLabel1_2_3_2->setText( tr( "Quota" ) ); ButtonGroup6 = new QButtonGroup( this, "ButtonGroup6" ); ButtonGroup6->setGeometry( QRect( 20, 510, 180, 90 ) ); ButtonGroup6->setTitle( tr( "Account Status" ) ); R_Disabled = new QRadioButton( ButtonGroup6, "R_Disabled" ); R_Disabled->setGeometry( QRect( 10, 40, 110, 20 ) ); R_Disabled->setText( tr( "Disabled" ) ); R_Active = new QRadioButton( ButtonGroup6, "R_Active" ); R_Active->setGeometry( QRect( 10, 20, 110, 20 ) ); R_Active->setText( tr( "Active (Default)" ) ); R_Active->setChecked( TRUE ); R_NoPop = new QRadioButton( ButtonGroup6, "R_NoPop" ); R_NoPop->setGeometry( QRect( 10, 60, 150, 20 ) ); R_NoPop->setText( tr( "Pop access denied" ) ); TextLabel1_2_3_2_2 = new QLabel( this, "TextLabel1_2_3_2_2" ); TextLabel1_2_3_2_2->setGeometry( QRect( 30, 300, 130, 20 ) ); TextLabel1_2_3_2_2->setText( tr( "Delivery Prog. Path" ) ); TextLabel1_2_3_2_2_2 = new QLabel( this, "TextLabel1_2_3_2_2_2" ); TextLabel1_2_3_2_2_2->setGeometry( QRect( 30, 60, 130, 20 ) ); TextLabel1_2_3_2_2_2->setText( tr( "Gecos" ) ); passwordtextlabel = new QLabel( this, "passwordtextlabel" ); passwordtextlabel->setGeometry( QRect( 30, 90, 130, 20 ) ); passwordtextlabel->setText( tr( "Password" ) ); TextLabel1_2_3_password = new QLabel( this, "TextLabel1_2_3_password" ); TextLabel1_2_3_password->setGeometry( QRect( 30, 120, 130, 20 ) ); TextLabel1_2_3_password->setText( tr( "Confirm password" ) ); L_Gecos = new QLineEdit( this, "L_Gecos" ); L_Gecos->setGeometry( QRect( 170, 60, 221, 22 ) ); L_Gecos->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, L_Gecos->sizePolicy().hasHeightForWidth() ) ); L_UserPassword = new QLineEdit( this, "L_UserPassword" ); L_UserPassword->setGeometry( QRect( 170, 90, 221, 22 ) ); L_PasswordConfirm = new QLineEdit( this, "L_PasswordConfirm" ); L_PasswordConfirm->setGeometry( QRect( 170, 120, 221, 22 ) ); B_Discard = new QPushButton( this, "B_Discard" ); B_Discard->setGeometry( QRect( 300, 540, 71, 31 ) ); B_Discard->setText( tr( "Cancel" ) ); B_Accept = new QPushButton( this, "B_Accept" ); B_Accept->setGeometry( QRect( 230, 540, 71, 31 ) ); B_Accept->setText( tr( "OK" ) ); // signals and slots connections connect( B_Discard, SIGNAL( clicked() ), this, SLOT( reject() ) ); // tab order setTabOrder( L_MailMessageStore, L_HomeDirectory ); setTabOrder( L_HomeDirectory, L_Quota ); setTabOrder( L_Quota, L_MailHost ); setTabOrder( L_MailHost, L_MailReplyText ); setTabOrder( L_MailReplyText, R_BothDotMode ); setTabOrder( R_BothDotMode, R_NoDotMode ); setTabOrder( R_NoDotMode, R_EchoMessage ); setTabOrder( R_EchoMessage, R_NormalDelivery ); setTabOrder( R_NormalDelivery, R_Active ); setTabOrder( R_Active, R_Disabled ); setTabOrder( R_Disabled, R_NoPop ); setTabOrder( R_NoPop, B_Accept ); setTabOrder( B_Accept, B_Discard ); } /* * Destroys the object and frees any allocated resources */ UserView::~UserView() { // no need to delete child widgets, Qt does it all for us } /* * Main event handler. Reimplemented to handle application * font changes */ bool UserView::event( QEvent* ev ) { bool ret = QDialog::event( ev ); if ( ev->type() == QEvent::ApplicationFontChange ) { QFont TextLabel1_font( TextLabel1->font() ); TextLabel1_font.setFamily( "adobe-helvetica" ); TextLabel1_font.setPointSize( 18 ); TextLabel1_font.setBold( TRUE ); TextLabel1->setFont( TextLabel1_font ); QFont T_UserName_font( T_UserName->font() ); T_UserName_font.setFamily( "adobe-helvetica" ); T_UserName_font.setItalic( TRUE ); T_UserName->setFont( T_UserName_font ); } return ret; } qldapadmin-1.0-RC1/gui/UserView.h0100644000175000000000000000374507403134047015572 0ustar muratwheel/**************************************************************************** ** Form interface generated from reading ui file 'userview.ui' ** ** Created: Tue Dec 4 16:43:13 2001 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef USERVIEW_H #define USERVIEW_H #include #include class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QButtonGroup; class QLabel; class QLineEdit; class QPushButton; class QRadioButton; class UserView : public QDialog { Q_OBJECT public: UserView( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~UserView(); QLabel* TextLabel1; QLabel* T_UserName; QLabel* TextLabel1_2_2; QButtonGroup* ButtonGroup2; QRadioButton* R_NoDotMode; QRadioButton* R_DotOnly; QRadioButton* R_BothDotMode; QRadioButton* R_LdapOnly; QRadioButton* R_LdapWithProg; QButtonGroup* ButtonGroup2_2; QRadioButton* R_LocalDelivery; QRadioButton* R_Reply; QRadioButton* R_ForwardOnly; QRadioButton* R_NoMailbox; QRadioButton* R_EchoMessage; QRadioButton* R_NormalDelivery; QLineEdit* L_DeliveryProgramPath; QLineEdit* L_Quota; QLineEdit* L_HomeDirectory; QLabel* TextLabel1_2_5; QLabel* TextLabel1_2_4; QLabel* TextLabel1_2_3; QLineEdit* L_MailReplyText; QLineEdit* L_MailMessageStore; QLineEdit* L_MailHost; QLabel* TextLabel1_2_3_2; QButtonGroup* ButtonGroup6; QRadioButton* R_Disabled; QRadioButton* R_Active; QRadioButton* R_NoPop; QLabel* TextLabel1_2_3_2_2; QLabel* TextLabel1_2_3_2_2_2; QLabel* passwordtextlabel; QLabel* TextLabel1_2_3_password; QLineEdit* L_Gecos; QLineEdit* L_UserPassword; QLineEdit* L_PasswordConfirm; QPushButton* B_Discard; QPushButton* B_Accept; protected: bool event( QEvent* ); }; #endif // USERVIEW_H qldapadmin-1.0-RC1/gui/UserViewImpl.cpp0100644000175000000000000001416107403100243016730 0ustar muratwheel#include #include #include #include #include #include #include #include #include #include #include "../src/EnderLDAP.h" #include "../src/QmailDomain.h" #include "../src/QmailUser.h" #include "UserViewImpl.h" #include "UserView.h" UserViewImpl::UserViewImpl(EnderLDAP *l, const char *user, int dm, QWidget *parent = 0, const char *name = 0, WFlags f = 1) : UserView(parent, name, f) { ld = l; dialogMode = dm; L_UserPassword->setEchoMode(QLineEdit::Password); L_PasswordConfirm->setEchoMode(QLineEdit::Password); connect(B_Accept, SIGNAL(clicked()), this, SLOT(AcceptButtonSlot())); strncpy(m_user, user, MAXBUFSIZ); T_UserName->setText(m_user); LoadUserInfo(); } UserViewImpl::~UserViewImpl() { delete olduser; } void UserViewImpl::LoadUserInfo() { olduser = new QmailUser(); olduser = ld->ReturnUserAttribs(m_user); L_Gecos->setText(olduser->getCn()); L_UserPassword->setText("nopassword"); L_PasswordConfirm->setText("nopassword"); L_MailHost->setText(olduser->getMailHost()); L_MailReplyText->setText(olduser->getMailReplyText()); L_HomeDirectory->setText(olduser->getHomeDirectory()); L_MailMessageStore->setText(olduser->getMailMessageStore()); L_Quota->setText(olduser->getMailQuota()); L_HomeDirectory->setText(olduser->getHomeDirectory()); L_DeliveryProgramPath->setText(olduser->getDeliveryProgramPath()); /* Account Status */ if (strcmp(olduser->getAccountStatus(), "active") == 0) R_Active->setChecked(true); else if (strcmp(olduser->getAccountStatus(), "disabled") == 0) R_Disabled->setChecked(true); else R_NoPop->setChecked(true); /* QmailDotMode */ if (strcmp(olduser->getQmailDotMode(), "dotonly") == 0) R_DotOnly->setChecked(true); else if (strcmp(olduser->getQmailDotMode(), "ldaponly") == 0) R_LdapOnly->setChecked(true); else if (strcmp(olduser->getQmailDotMode(), "ldapwithprog") == 0) R_LdapWithProg->setChecked(true); else if (strcmp(olduser->getQmailDotMode(), "both") == 0) R_BothDotMode->setChecked(true); else R_NoDotMode->setChecked(true); /* Delivery Mode */ if (strcmp(olduser->getDeliveryMode(), "forwardonly") == 0) R_ForwardOnly->setChecked(true); else if (strcmp(olduser->getDeliveryMode(), "nombox") == 0) R_NoMailbox->setChecked(true); else if (strcmp(olduser->getDeliveryMode(), "localdelivery") == 0) R_LocalDelivery->setChecked(true); else if (strcmp(olduser->getDeliveryMode(), "reply") == 0) R_Reply->setChecked(true); else if (strcmp(olduser->getDeliveryMode(), "echo") == 0) R_EchoMessage->setChecked(true); else R_NormalDelivery->setChecked(true); if (strcmp(olduser->getAccountStatus(), "active") == 0) R_Active->setChecked(true); else if (strcmp(olduser->getAccountStatus(), "nopop") == 0) R_NoPop->setChecked(true); else R_Disabled->setChecked(true); } void UserViewImpl::AcceptButtonSlot() { QmailUser *u, *d; int updok, delok; u = new QmailUser(m_user); d = new QmailUser(m_user); if (L_Gecos->text().isEmpty() || L_MailMessageStore->text().isEmpty() || L_MailHost->text().isEmpty()) { QMessageBox::information( this, "Update user...", "The values user gecos, mailhost and message store are compulsory.\n" "You cannot leave them blank.\n\n"); return; } if (L_UserPassword->text() != L_PasswordConfirm->text()) { QMessageBox::information( this, "Update user...", "Passwords do not match.\n\n"); return; } if (L_UserPassword->text() != "nopassword") u->setUserPassword(L_UserPassword->text()); u->setCn(L_Gecos->text()); u->setMailMessageStore(L_MailMessageStore->text()); u->setMailHost(L_MailHost->text()); if (L_HomeDirectory->text().isEmpty() && olduser->getHomeDirectory()[0] != 0) { /* if (L_HomeDirectory->text().isEmpty()) { */ d->setHomeDirectory("delete"); } else u->setHomeDirectory(L_HomeDirectory->text()); if (L_Quota->text().isEmpty() && olduser->getMailQuota()[0] != 0) { /* if (L_Quota->text().isEmpty()) { */ d->setMailQuota("delete"); } else u->setMailQuota(L_Quota->text()); if (L_MailReplyText->text().isEmpty() && olduser->getMailReplyText()[0] != 0) { /* if (L_MailReplyText->text().isEmpty()) { */ d->setMailReplyText("delete"); } else u->setMailReplyText(L_MailReplyText->text()); if (L_DeliveryProgramPath->text().isEmpty() && olduser->getDeliveryProgramPath()[0] != 0) { /* if (L_DeliveryProgramPath->text().isEmpty()) { */ d->setDeliveryProgramPath("delete"); } else u->setDeliveryProgramPath(L_DeliveryProgramPath->text()); if (R_DotOnly->isChecked()) u->setQmailDotMode("dotonly"); else if (R_LdapOnly->isChecked()) u->setQmailDotMode("ldaponly"); else if (R_LdapWithProg->isChecked()) u->setQmailDotMode("ldapwithprog"); else if (R_BothDotMode->isChecked()) u->setQmailDotMode("both"); else u->setQmailDotMode("none"); if (R_ForwardOnly->isChecked()) u->setDeliveryMode("forwardonly"); else if (R_NoMailbox->isChecked()) u->setDeliveryMode("nombox"); else if (R_LocalDelivery->isChecked()) u->setDeliveryMode("localdelivery"); else if (R_Reply->isChecked()) u->setDeliveryMode("reply"); else if (R_EchoMessage->isChecked()) u->setDeliveryMode("echo"); else u->setDeliveryMode("normal"); if (R_Active->isChecked()) u->setAccountStatus("active"); else if (R_Disabled->isChecked()) u->setAccountStatus("disabled"); else u->setAccountStatus("nopop"); if ((ld->ModifyUser(u, 'M')) == LDAP_SUCCESS) updok = true; else updok = false; if ((ld->ModifyUser(d, 'D')) == LDAP_SUCCESS) delok = true; else delok = false; if (updok && delok) { QMessageBox::information(this, "Update User Information...", "User information has been updated successfully.\n"); LoadUserInfo(); delete u; delete d; reject(); } else { switch( QMessageBox::warning( this, "Update User Information...", "Oops, something strange happened!\n" "I couldn't update user information!.\n\n", "Try again", "Quit", 0, 0,1)) { case 0: return; break; case 1: return; break; } } } qldapadmin-1.0-RC1/gui/UserViewImpl.h0100644000175000000000000000102307401612113016370 0ustar muratwheel#ifndef USERVIEWIMPL_H #define USERVIEWIMPL_H #include "UserView.h" #include "../src/qconfig.h" #include "../src/EnderLDAP.h" #include "../src/QmailUser.h" #include "../src/QmailDomain.h" class UserViewImpl : public UserView { Q_OBJECT public: UserViewImpl(); UserViewImpl(EnderLDAP *, const char *, int, QWidget *, const char *, WFlags); ~UserViewImpl(); void LoadUserInfo(); public slots: void AcceptButtonSlot(); private: char m_user[MAXBUFSIZ]; int dialogMode; EnderLDAP *ld; QmailUser *olduser; }; #endif qldapadmin-1.0-RC1/gui/aboutbox.ui0100644000175000000000000006306407403134047016032 0ustar muratwheel AboutBox QDialog name AboutBox geometry 0 0 422 532 palette 0 0 0 228 228 228 255 255 255 241 241 241 114 114 114 152 152 152 0 0 0 255 255 255 0 0 0 255 255 255 255 255 255 0 0 0 10 95 137 255 255 255 128 128 128 228 228 228 255 255 255 255 255 255 114 114 114 152 152 152 0 0 0 255 255 255 128 128 128 255 255 255 255 255 255 0 0 0 10 95 137 255 255 255 0 0 0 228 228 228 255 255 255 255 255 255 114 114 114 152 152 152 0 0 0 255 255 255 0 0 0 255 255 255 255 255 255 0 0 0 10 95 137 255 255 255 caption About QLDAPAdmin QLabel name TextLabel2 geometry 30 160 370 290 text by; EnderUNIX Software Development Team, Istanbul/Turkiye (c) 2001 Maintainers: ------------- Coding: Murat Balaban (murat@enderunix.org) Ismail Yenigul (ismail@enderunix.org) Documentation: Omer Faruk Sen (ofsen@enderunix.org) Code Audit: Darth Maul (maul@enderunix.org) http://www.enderunix.org roots@enderunix.org QPushButton name PushButton28 geometry 170 470 91 21 text OK QLabel name TextLabel1 geometry 90 120 250 20 font adobe-helvetica 13 1 text EnderUNIX QLDAPAdmin - Visual QLabel name PixmapLabel1 geometry 60 20 290 90 pixmap image0 scaledContents true image0 789ced5ddb531b3b937f3f7f45eae8edab2d7d1ecff8565bfb604270202660c27d6b1fa4b10de11242c225786bfff7ed8ba4d1cc686c6c4ce09c43ba82ddbaabf59bee964692fffdaf7787db9beffef5ef3f7edea89bafe9bbf454fd78f7afe1ede5e5c37fffcf7ffdef1f7fd6dbed77edfabb7aa3f9aefee77ffcf1a7aebf4bdf891afc8b63e213e4e318439057a9e54dfc1ef31882bc18589ee34562f96693d237986f36395edd59dec49f5abed321be4d7c8244fc16f14324e425d59fd490a83ee623cbeb81e18128fd2af10d24aabf4f7c3389e211f15f89ef44caf4f790f834a9c72995776d78208a3f42be518b757d4cf5af328f44f51d10df4e92b84df1f7c42b248aa7f29b11129547fd6f36ea09d72f3bcc270deebfec318f44e96f886fdaf1503dcbb33c459779371e3dcb1b7947ccdbf11013cb73bc72f1663c6a964f591e9bcc773a26fd9ee539bd6a5bdea42779355b71d26c11ff9ef876dc88a93fba65f86693e4a53e318f44f15f88d77127a6f2c52df34894fe33f1e3a415b3fcd6906fd51a494278115bcc2351fc47e2a3e688f3cb7de2e3a4c5e3a9a9fe1600a441f14212df40a2f4ebc4a748144ffd6b0d93769df141cf53bb86443ce1a15d4f3a751a7ffd9d7880779df1fb8bf80489e2397d47479af1c1e9551c99e7cdf089aab37cd6996f8c13e225c9b79d423cc95bde338f44e5d1f3d1a921513c8d57a79ee83ad5af36986f8fdb2cbf11f10912f124bf4e3b49eba43f54c3f18c471a9f4ec7e98f2bcb1bbc71f91d87cfbee50d3e3f30df4cb83f62dff016afdb963778ffc43c84507fc59ae5198fe2c0f28c4765ca4b5383cf1de295c5a35861bed9eaf0f37ac43c12f11c9f2643d3ff9fcca7a30ee3819e97ceb099368997dcdf213480f17f6e7820e239ff3806227e97798b57758cbcaa256944fa4a08e223244a7f497cdc6ab6587e67c483faa971fa8879248a273ca846a3c3cf8be0fc4d24aa8fdaaf5ac9c8d477cd3c12e5ff417cbba913c6f32fe65b4983c76b4c3c098c786ecf1089d2af303fac0f597e43e2c7c938e2e799f481ae359398787d417c1de445e9e527e6a17cd68fa4ef74dca845d41ea19847a2f2a87edd480c1e05e97bdd42a2fc245fdd41a2fa38bf4e8c7dd3dbcc8fa221db0bd2cf3a6d4509cb83f0ae479d468be575ce3c1295cffd1937a288f51de12fadab38e5fe10fed31889ca273ca6cd76cafa4990bcd34eaa536a9f247d9dea461cf1f85f197ec478d45c5e6a9f3fbd6a79f3fcb49977cfdfb1e58d3ed7cc3b7b3db6bc897f6f79a3ef7799b7f640742c6f9ebf1bcbf3f32662e63184f807cb9bf886e5c7f43c281a8f7488443ce9f374a45a8c074dfa281db713b6afe28e7924e2a9bdc30800c07c9d79152bee5fcc3c103f1fd4fe61633c1ef278115e86cdb6627b2d779947a2fc84ffa14a86065febcc23114fe33fd48d468df54f93f8b413197d75c13c12d547f21ed59a1dd6df6a9df9d6989f3749f21a458d568d9f0fb2efa37acbf81b2a615e373bdc5fcd3c12c5d3f3324a9ae33ae395fa336a42796c3f387f0b89786a2fc29be3b560be19f3f3a63e308f44f1c79637e347fa65a43ac6beeb6fcc0f8743ee1fe997914e95e6f69f109f36ecf347f6773454518bdbd7601e89d2937f301a81bc38fd83e1c7757e7ee8f9188d1bed1a8f27c9631c21114ff66d5c87781e7fb21fe3b85537f69c9eff7102fd657d13338f44f1e40f8d517eacaf493ee356a353637f99f4ffb8dd5411db03d2afe30e12f1849fb16ea81a8d8f489947229ee43f1eb6463cbe9ae38748541f3ddfe351c3f8af7a68785d63ffe1c2f029b7475e31df6ab07ce40ef369cbe86b931f89e2c9df188f5df95dc7f3f3706e78539f3c333c4098f8afcc37a31ae3f7d4f00da3bf3e1bbe1331de4e0c3fae737977ccc378707963c3b70d7e0f0d0f1e12c5737fc7ed88e70be29be163333f30e5a3c122f99c3b9ef5d717c3ab84e5736978d0e0c4df32df891a9cffdef00df617e5c8f029eb4369caeb8c9bac0f4c7fc13d63ff6bcbf0c67ecba1e13b2d96974d3f6af3f3fbc0bc8eda6cef6f0c1fb7591f4f1ccff96d7cd2e6f66d1bbed9e6f14d0d0f2e18f19b861fb1bfa356984f6b1d4e7f6df858717b4c7fd3b6e2fab4e1b5e2e7dfc8dff95bb1e147ac1fb419df614d73ffeb868f581f6833bed65f103b868f35f7e7a7e15b29cb53193e657b290cde4635630f4cfa51ccfa5e7e307c83f59130fd1fb5591fcbc8f06a48f9e5c0f0a311e7e7e77d3caeb1be54d2f0f188f5c747c337465cbfa90f014ef97f18be33e6f98591d7588db9ff663ce17967ffc3a61ff1f32f4e1ccff16b861f1b79372d3f24f90c6e2ccff21fdcbcd11b2d4e6f187aa3a7d21b86dee8a9b42c0c492195d432954339227e2c4fe4a9fc2acfe439d019859d40e885bc942348954afdd27d7fa3e5d0533024bf49459f97f20ad0f2dd12857dcf5365d815e41eca6b40e0b79796c51b2d468b6048fe903fe58dbc9577616cc87b13f64b3ec889ecca15f95eae42d807b9267bf2a35c97f772437e927d0843edb5293f836e1ac92db9fdd2f278a3f9693e0cc981dc915fc0226578d90d60680fc26ee4be3c907b1951febd3c51d82160ea481ecb5d599311855ccbba1cbcb464fe4e246399c8a41056c330a01a7c4f640c7f1bb2e1c2634ac32109fd6d70389555a3543197f4580c81eed1809ebb205eecf7a66cc9b6ec787859958742ca7b2104593da1a125b148c5102835eddc957da18400dd742f46624ce94ec429e83a257fbcb4f4fffa24b4f82acec439fdbdf0c22fc425128dc825ea02a1d032b8f08443e4ae8da5d05d280ffe5268c2253d064360836ec4b7127a3c0c892bd912df33bd436dbc163f8ad89f4d9c431e435ec4be103fa578e95178091237e21647f4c9e55c88333b0a3241c4d81840ce0fc60185c3276385d06151750969ce004935fe4e7aa806717de0ee6c49b33004fa60087e6f183f16439f51f720897bf10bdabcbb84be0fa1f77768df68cef78fc291781013d1152b4b2849c368a0d5e913350005bb5e2ce826fc24d4d410494273288680cd4858236128e1accfb941a35d32ae98a6614846808e69f8f92ede5bbb2556013d5fe7d73bb308fa7d81cf8ef8203e2cbbecd749620df0d3139347a67d981aff15a4475a46dca13751c090624d87ba866d18499a6c96f8e1ac1aadcb98ef0e73c25b99a9c690bcaeb45f4c0fe2235a2faa4188f5e794abf1edfe01de1168a00dc0d0a31004a93f89be589b127f4938ba23bcec92858a6d1cd9a45d4a752ecee1ef1da6c650f27b620e014b7649968c624da9de77a43086c4a6f82ccfa622a8cbf64b6cfd2ee9e28c00d7a47e577d2f41621b10d41373cc4921fd46358a0843c603064da27c9fda7a4194a20fd8518824b659989ab185dfc9573a2714727ac25c46210c891df165aa05db956d81fecfa1b8ce7cb4df41990dfe3b1220681f1004966c8e3c2b90ab2b0e2a62c19f06fc9cd3dcf73cefa7b2ef4ca9ced966917f4d760a7184b9d1f619effa8c67655caac859843286a41687d37d2071441ef4fd327ce7f9e9ef8a23c0c231d9b16ea687c49a3c1235b1252251afc815739e8a58f462ee685d6737af8578cdc87d37eb4436d4ac08d12cccac1d255e9a24b38848450c493dd38bdea7f9d79918beb4d4ff5e049ecd06cdc70043a08d3e9146daa0bf48097a4965ab251a84a14a1f1c6cd30fb43d80a478560b16a53c86e44fd19c8aa0162168292b176fe413d8a436509ff0832842dcf40d7e2c3f20b47472f91e8cee4aa6cfd09e937c0c29296fa7214809f11d11a4d4f2db2195387d2919bc0602bc2086100d3da549276d901eea337654ea503410de5b4598dd9317be9cf5a4c5c8c790dc9e3a13fbae86e4473fcb0c5b8de485d87c2929bc3c215e003b3d42cd3e22478de13b7a486dab8708478c2263d31cd628fca5da9e614846d37d6975a24ed5575598f1634e752e9fac99e48eba50974f2de5af4b808663d23b1b68abd4379ae5f7c12b424f3bb3693e415a750508b3b66f8ed9dc72c9c3d0e60c2d7406082a85524efc762787f2e7e2ed9029da4a75edf81f3252ff8035454b8419fc4f5e0d78396d6bb1d44f42d640dd205af82f106828758b3a0842584bdd3da5fea7508621753f0343df0143bf4ae1fe7bfbeff2abf8a21e70479992f3b5434da88eae14e214d0fc4534d58bd9f79720714016ccd828f53ee7f36c938eca882d98b562d64f7a05fe506e57500843a7652d54c2904f5fc136de8acf80889f628686920211ac569590276647e496aca90fff9cf503b506fac5e10650e3cdbe4487bca27ece8e7555cfcec8c84feabd867999bf9b3588a1922f34034345ba1387e20bee57445c91dc3e82279d025a2e016da676b54a7fd7d586fac46ff88c1c4fd5846854310613431f4b39aae863b99499790c2d9033505b2eff03e0c07e8ff33a45dc18046d90cfddf3b094b879ffe48952f272cc5bca5c182a5bb2276188b4cf6920654bf5610678946fb76945d55a9ac95bce514561e93cae2ff3e79c8e209aa33b2d04962ca753005fc780a28d0276bace174aeccaf6e252f273cc5bca5cb62ce47557624809d102340ce57b65f617897b31c15d8db45f116672ea876ca82dd039dbac7d98c495ec883d351069aedd66e54aede4dff7d927c7c47e11d7763d76c65a9797b25ccb0c4974c5f57c39c3b5e531a4764543eda97d7a775fc4509bfd1f75e3ad12f92b8f4f96929f63de52e6f2a9676208fc99895c5107b2a30e8b7ba7cb18a23d1debaaaf8ed4b1f0deb000eed68b6fc5dcba43a73c7eb4bac4b12dde8b92cb11262f65a096e992a895f32e525b2e7f571ca848dda90810d3034445882687215e29eaf9d8313a68e0cfe99f20252fc7bca5cc35b79f66cb1ed431e89b3c6a56c544d5112fe2cedfb3e4f579285215ab815c93de3b1698e327c5942eaea19aa06b0bab914efb36642f90234c2db4e962a7a2962924f74569d6b9486d9e1c1e081f09d004fce9816a83e422177b406bd8d6960db2f97c71a7d1e2528227fc3c4ba73aa6d55e2932b27e90962c055b8abfc6a8c5540c9d6815c6903ab77b6109375244f258aceb479f41d4a9bad643b2626dd9d580733dceaf0d889d425b0a965a9f98987d552fe49894f5219191a73faa33f3641ab5f0ee7391da72f927ecd5004d0c967adabdfb015f896d593fb3646cd5329c3d5d4afe2e42d98336efe74b51ae0fe29c7b654bf1df75e8195eb53e1301f9505bc852e973b5e0bb61b923cf40fb1c40297b60076ba0d5726bd6451d09963ab7322ead740eacf67539ba50e67599d4b6e9d345e67bcccae351611ebd486dded85e9ad59e81f570d41d6a24878d6d9a976d180b96f9419d8a562c24a51c1ab1cd3bf952e4c8f5a120851c86bee9a9fb3ed4a6fe5e8121f9b4bd44b84a2ddfd3aeec3379afafe581fee1ebb1d2ac673f6fa933ad68fb95e9edb2dd09e7989da79a16a9cdc5f5f54f8711deef817a28516654c1cef5732b8a9927fd106ec572a4a46ff2a5382d56ea437eef87be15efa76a22a19f65455d0ed5ba5c05ec1c9b131d6bf250787adab5bf6bfd0bfd355ba7c95992a490631f4fdd16299423cb235a7aac4faa480676ff7aedeb84d787f43d7810effdda5cdfc152a92bb7f2cc162bf1f6a1f19b33d642ec555b8fe8a1b2154b9092dc84dc5e29ec2585fa50c090d678be791a8a1eaa6cfae2a427f2a750806f4ff3ca449c67abd47615c9ccf63a66ac0f39d63d4dde7c29cb119c5b04726479a65368d524cba9bb813c5bd9095fd767b78aa8dfeb553b77876f561b4d04be79edd04ed7bed907d2759e10eba2a2455db29460ee9e2b05ac4dae0f610c414db1fe205a5351b4f61c3776c8a3e2939021487d34358f70076e66a9758f7b2eb78a1ad9cf11f240ca39b23cb348ff287ad4b372ea8fce83704f89dc85593ce188767d5cf17f6f27c706edaddeb06fe80db2063e8ec2ad589e94603e9d2ba5d8872a0c917d5e9753575df5864cc5c93211a4d369fe544e0bc7e5396aa691ddbe9a428e527da51ce5594d2595564d66e6dc0f9dbc004d437b5be93450f90dea86d995d6462d05f8eabaf545eb0ff52a5ab1342911ce02eb01b3314428fa041a2fb41a94d1e8e97b861e4b9916068fe91bae72a92659ea1a7b1f658dece7089518d2e1ce23ed8277308df68a4fa2cb39a9581baae98f156fd912b5266e8c9dea396d83bbcdf02d2b62a7adfbc65ff23d6aa4a2362cf4f96952123bce97cb95f2580cd12934a90ea6fbd7f20a3cf7df723b879d55caf7560b93a5de13bb7e7b80731ab99c23575e54cee1e799b93ab45ed5be60fa03136b34b73850ae56b1429ae8c058a89ee759b36d6b671acafa41663763492b2c574a2e2eca9512b43e55e75c851623e8fdca740f5b5e84f22e9bf25a984e5d9ea3652eb4c5d3c8215be5f52da8c3fd390acca7a7d094f6c9f2da90b66f9fcc5b362821c1371a947393db4727ecedfb789e85b50945feae21ff2d5960a747c0563d414a6e8e6a7a91efc3e33044583c165bb2a38ea7e208cf217d7edefdf4aeae3d3efb5d408221f015ef03390216d75b15b90fd632a7959ebf36b1866fc6d437c092377ae66450cfedc7df50bd027aecac2ce0bd845bb1a8943cc42559297989599a7eef07ccb02379280f206f855dc3b3d2e0657f56f76a4546d5252d4674778c79c32276f596fff4d1fb1bb0d44e573b8d6c6d55256d8a0763956456da8c3cc57eef1473e62da3d7cea0c58099fb5df95434d836e311f9ef57692da8e77942214955b462b69472d62df2d6b45abc1ae49722bbfcde2f3fd2b3ef1f1217fa5c1eaabe3852c38046f2dfdb9fa87b992ec3d7f6efb00abd6d36a908096e25c2cd975c8eaaf13f651b8fef256c59b3f214296b4575fb4c2bcd5b70bdadda9e27d400ad83c8605b8673b36dee530e2d3e9a82b3b1d9ad9829252f870bbbb52b5aceb7ca9592b73b8fbb070dbca36bb06be01faa0335ccad1f05f60f11726ff4ddfc7aa97c979e6c68c9a596f5286849dfde3b8d3c73275940773f76f79991612bf8be20a0e77d8b2163b45da081f6f1adbc48e0fb84ded477696d71c3ee42136b655d64ff5749aeba15b3a4e4e7b061e515ad7c29f02d991743544a4df6d540dccb3dd5579f41afb5482b85f6a0ed9ab03379453b17edbec50f72203ec86fa0654ee02fdd275475a767768795db1175a00267ceed8e281a55335f9abe1fcc4fe9f5ee51bbcf1c79cfee7ced533f013d13c2129fe0d8c63d8966eeee5936d1e3f9975915723aa972741696929f63fe52e6c390a9a521ced580f6060096f8ee4579291f94bf6fa44a3785c20a770be7efd2336d2f599e429b0aef11b21c55142a65569e02f5ca391fdfbe5cbd768f7d9a7b53df756f377ade0c6dca19b2c5a5e4e758a42f8bdd4f2d6be24e5cab3a6a252e591d82a53d926d55e37d04722c76c51520eb975ad55d75813a519ec83bd124cd84779cef54dfe999275537fd0aeccc845eaf9747d5e6983dfe8fce5320ff399dbf7d5eec9abf7a68c21ae6fdc686b1715db34e84693e558dc9e252f2732cd297a7dd930f9666973ed761f6b69a7fce43cf7e30ccbb5b78f196fc55c9cce437546e9f2b925e35162e5b719ce253bf242deff73a648334ca997d7b2a0fc5bd580564adea811ee01de720b17b08dda23bce8f20e5dbed2168c9da0e1f6cb906f4c6b5ebf063771571dc8b9daaafa665ffe68b8c96bf37e4f9eb7c8956ab8f6207fe133e787fb4bb93a1e7de9675bdbdd3d6e64db97fb19ac4cef257ef2c2d1d435bf2b7df01f3f43a5fa2d5b81683eb2ce43f67a7355242d31520e8d6ec26620425ce6b5ae04c34eef2a83a2df6745a368670a7df73b5f5f9ea7c8956e35a0c7f0314f51d42f81310c46fedb39b61dcdf05b080ef2a9e4fd356bcb7df71649e4fd4bc4c5eaad32c1df26811e4a9bc650e6273cf36eb6efe8e29fdd2fd3a6d9a62e9a531f8684b803ab70ae59a72fc3afdefc5fe6525845a52d1de536e19c76569334965f6a3981fd3e81379e2b5e801cf0499771bb7e821e9be3fa737ef3c16ba6708dab1057a68e45bb3b07443a33cadafd518cabd3b3267aedd0900ef7975e7044ca87b3374626273e7b5a9042bd351bef45c9d51b8f4522bb94523cab95928d79493abd37d2ff6cf2f21d492507b4dfb4e5c5c54681753b15d45697ecf8d2b7b3e3ca3f7f70ce5f5d09c18f2fae39d370b4b3734cad3fa5a8521c0eca8f824e9133c5f47fca63ea1671f3f0b4f339ef547bb6b9eed8205b6ba5b9cc213b8699ef409db10bf4eee4bb9f43cd91691ee233ded976bcbc9ec45f6bddc3f5fd3fbb1585e457b4dfbf093e338ad2f29fbc406f353abb1a67cafccea74b67bdaee7ccddebe8267341f8648b71c026556a042bae5519eded76a0c795230a5f832b623c11e4449176636be6481adcfe18fab0d2be22d5cba27eb408bf893b5ae9596efe7f8756576b0d8a2ac25b68e507b5d599bfce9704c9facf1edd31aca5fe5a18838e715f19ccc3b9348df17f087f2f20d4b3724d3697d9d86a10acd9b592167a98c963cc9e53c29e73121c6b665696c58de965497eec5875a449f464747f93a8b75593b586ab56f174d1de5f656db69fe34f2db2c96eee72bcb87c6e7c0b35a66c750eead3dfe9f1f4105f9568c5d40a6d3fa3a1d43d6df02bd7e4bb9bc992fde4b65e78af9a7398bf5f3d8196c36bbccd2d8309bc65255e95e3f4a2db29fc5a78b5366e9b9aebca6f05ae4b5c4e609b4b73453b669f933af0bcbf98b3df0e4b74d5ef440f8370b0d0c996ff322a828df2ae986643aadafd518f2f6624fec797db9e987653a3bd05a77c3533e8f292dcad2103f2a5b0bca1be5f30530e4956efb18aa2b4b699fc350ffb25a82bdff8ea5f9e556dbe9b2a442d6314b59d4447ac7bcd5f0b4917b7f3f63f7473571af5ccd15d20dc9745a5fab31e4ef81f0e6abf6bcbe77de2d7cb317ccec7367e2d4c8ec18d8aaae23cbe3a571a7feca717e8bb88e596df7db2afc9388764dc0b5208be53cc8ab91a96dabaaf7d9da40b15d9c3f942f2443fd855617afcc6a23ef7e4d9d261acc3f2bcb7ae5df6a16966e48a6d3fa5a85a137ca53d1ce3e2fe95d7796a3effbd676fd9a71f4e8d2529d3e36ed53e80d43d3a968679f97c41dad0fd9d5c58dccbbd67bce332a9d91ae28eb443fdbdb8d3cbd61683a85ecec739258713b3d368a67caac757b6dfb3fde30f4dac89d34db705e513737470bdc3cf4b2f486a1d746deddc1d90d0dd90ccd58b7976ea54faf0f43423ff7deb4f0dd90af85ccd9a0c4f37ffc4feb21bd227bf6fa302477f126ab67ade1e8f7fe82e87c44a75db39b178b5aa9e76efe78c19bf1f3f44fc4d06b26ba2f7f42b7c3324e26febd43f47fe23452b77893f5cb5019437c2b018fa48cf946bbc78655913c560311f977dcc83e9d56cb8581153ba2ddf9c7d3f372ee7c8dd602fa27f24375707881a73e400933b02b636c0bb46f465b501a50ef83df96c711216642bff3db17d9de457bea9e10456741124f374de67f83b65c0aecfd8815786c2212bf70fc58de8f0dab903dc5e6252d8f91cbe305c6a701e374e48785f252ca200e30667a1dc5343684f03be3565b79444fcdecb61cd129cde3723d5e9a86b8d3fbfa00e4b74227efbba47b2ce18ccc865a4dd4a3b3b16675887034707bad513bbdd85c2df8ce358211417dd0cfa4f0d8b010a901534e471c939c3dbb65bfe76d59286f0805610c15eba8cc1d8bc9ec9b6d6dbe7cfe1022ab6290f4a18a8550fbe24edcc1df03b587275f45d743ccc0d9b0fc5dc21c969d05eed0997de3631b0bb72d6e9ee3b752a75170ef4743ae8b0790eb9637c28f0c0b11628dc6c9bf8fa28ca106cb3caf374279c318229d13fbbf143307868ed1facc92156aabac9dd5a5895ff46bdebbe112d59e38100f4ac17f44509b88ce4e3b5a33b7c8f81e7566bb12f1c9a46ea835f5cd5836f73e8d56b58fc4b60e9e327c0eaad84fcd1ecf59ce5b7954985c2fcf79d0ea81fc7ff94f7a687c519f8165c8dbb240def0132ecec42f203dbd8e506e48b18ebe4eaede403fd0de61fbf26b03010c69f10bfdb0502b01eb1db54fe8d93718dac3db401011f4f7c0e9a6fc2efdece47d8fcf5593ed83ff90127fb173cdf852fe4e91aebd57e479e9f5cdcbfefa64cefec6210ce963f1156cd91da30575108c3eeaa57d264695aed18d20d6966dd0fd8cc666e11dfa7a4ff0ef32d0ad21740704a288ee8120cdb4ed69b0675f497ac3d0f209f52968b5a3aa7937a02bd62ba46d500b45881ca235c4943e5511fcbfcbad0cf574047c4f9f228981aee3aab5661f7b4233b94ff03f77cf1fe0d2eab2675e0178c3d073109d1b9f32cbb37b32744c3731ae391db4873ac82025e14f9ff03718f41ea02771168b6c1a5843bcd7a864b7dc3d8fdbe2e0f97afb86a19727d44068d1103fa4878c2eca087fd98c7f5708d1835a88be37680e47f75c673734a256f2ca5e73eb92136bed964d6f187a1d24eec05fdf43cf06b44d0f350ea1a647c8315ac7691f26bb06809e90d132a47736c4862bb5637d6bc2db04cbe7d5ab65d21b865e17e926a2097c9b490e2fec4f27e69bf5822634cb3fb0368cd626f9a69035e757db793fbf37a1199c3e571f96d9e6370cbd5ed287b80e296ef4b9257100f85a2bdf920dfc8ae87a37ce585f9c29318843df7b6df96f46de30f477208b1cda41ebdf693d30fbb02d86defca1370a92dee5b93d7cdeea966e5b0d645691dceced7910f486a1bf1fe98e8ee511d8bd155113b7ea13ae64931d7c965f2f447ac3d05f9dc4500c8b67807447c5b2af57f4be38d7dbe242fd78ce16fcf97ffff9c7ff0387c892af PushButton28 clicked() AboutBox reject() qldapadmin-1.0-RC1/gui/addnewdomain.ui0100644000175000000000000001207507401612113016626 0ustar muratwheel AddDomainView QDialog name AddDomainView geometry 0 0 383 219 caption QLDAPAdmin -- Adding new domain... icon image0 backgroundOrigin ParentOrigin QLineEdit name L_DomainDescription geometry 160 79 201 22 QLabel name TextLabel1_2_2 geometry 30 80 120 20 text Domain description QLabel name TextLabel1_2 geometry 30 50 90 20 text Domain Name QPushButton name P_Dismiss geometry 250 140 110 30 text Dismiss QPushButton name P_AddDomain geometry 140 140 110 30 text Add new domain QLineEdit name L_DomainName geometry 160 49 201 22 image0 789c85d4df4ec2301406f0fb3dc542ef8801c6ffc5f8081a2f4d8c1767ed191d099a285e18e3bb7bbe9675ed18704a80affb713ab6c2749cbf3c3fe6e369f675a463a3736de9331f9befc3e1e7f5ede1371b2d16b93c8a795e8ceeb2d124d7f9d3c73be3fd4edeab196a8b4888f3190622232e0b0cc4bd8be5a65c978835e2aac040342e9618881671cbab72e15a353e6ed7db35a246acd69b72e9b042341b9209c40ab176e54ef85605a4943c11d17554092335c8225409d35a0fb004a5cc9818b9498f62c6b531dc214d4c2d0283632243c24c8b649a79d731efa41d13b7482b947c5457b1c3b2cc1496539ed96851306b859d903a21d72d5e94acff9eee12d8a09273932b6b0751ccd0a91e46607e51746a0252acd2f2e78697e8b658d52f340b77db23adfb487e334a1047c804a5dd454431da351152fed4755ca44cbb694e5b85f45991d9f710bbf9a415edfb9d64bdb4e4ae51dd43c97a164394314d8ad81df247adaf6eb3873d2e53edd1cb68829d181bb927f5190263bad129eaa6afa26451a2fd05d42d2a3baeb98842b7eee73efcd7e3195f479e8530fabbcffe01d8c26674 P_Dismiss clicked() AddDomainView reject() L_DomainName L_DomainDescription P_AddDomain P_Dismiss qldapadmin-1.0-RC1/gui/addnewuser.ui0100644000175000000000000011251307403100243016331 0ustar muratwheel AddUserView QDialog name AddUserView geometry 0 0 761 399 caption QLDAPAdmin -- Add New User icon image0 QLabel name TextLabel1_2_4 geometry 10 160 130 20 frameShape NoFrame text MailHost QLabel name TextLabel1_2_2 geometry 390 130 130 20 text Mail Message Store QLabel name TextLabel1_2_3_2_2_2 geometry 390 70 130 20 text Password QLabel name TextLabel1_2_3 geometry 10 130 130 20 text Home Directory QLabel name TextLabel1_2_5 geometry 10 190 130 20 text Mail Reply Text QButtonGroup name ButtonGroup2_2 geometry 280 240 190 150 title DeliveryMode QRadioButton name R_NoMailbox geometry 10 40 94 20 text No mailbox QRadioButton name R_LocalDelivery geometry 10 60 120 20 text Local delivery QRadioButton name R_NormalDelivery geometry 10 120 170 20 text Normal (Default) checked true QRadioButton name R_Reply geometry 10 80 120 20 text Reply QRadioButton name R_EchoMessage geometry 10 100 170 20 text Echo the message QRadioButton name R_ForwardOnly geometry 10 20 100 20 text Forward only QLabel name TextLabel1_2_3_2_2_2_2 geometry 390 100 130 20 text Password Confirm QLineEdit name L_MailHost geometry 150 160 221 22 QLabel name TextLabel1_2_3_2_2_2 geometry 10 70 130 20 text E-Mail Address (uid) QLabel name TextLabel1 geometry 310 0 150 30 font adobe-helvetica 18 1 text QLDAPAdmin QLineEdit name L_MailMessageStore geometry 530 130 221 22 echoMode Normal QLineEdit name L_Gecos geometry 150 100 221 22 QLineEdit name L_MailReplyText geometry 150 190 221 22 QButtonGroup name ButtonGroup6 geometry 480 240 191 90 title Account Status QRadioButton name R_Active geometry 10 20 110 20 text Active (Default) checked true QRadioButton name R_Disabled geometry 10 40 110 20 text Disabled QRadioButton name R_NoPop geometry 10 60 150 20 text Pop access denied QLabel name TextLabel1_2_3_2_2 geometry 10 100 130 20 text Gecos QLineEdit name L_HomeDirectory geometry 150 130 221 22 QButtonGroup name ButtonGroup2 geometry 80 240 190 150 title QmailDotMode QRadioButton name R_NoDotMode geometry 10 110 170 20 text None - Normal Delivery QRadioButton name R_LdapOnly geometry 10 50 94 20 text LdapOnly QRadioButton name R_LdapWithProg geometry 10 70 120 20 text LdapWithProgram QRadioButton name R_BothDotMode geometry 10 90 120 20 text Both (Default) checked true QRadioButton name R_DotOnly geometry 10 30 94 20 text DotOnly QLineEdit name L_Password geometry 530 70 221 22 echoMode Password QLineEdit name L_PasswordConfirm geometry 530 100 221 22 echoMode Password QLabel name T_UserName geometry 150 30 400 20 font adobe-helvetica 1 text Adding new user... alignment AlignCenter hAlign QPushButton name B_Accept geometry 510 350 71 31 text OK QPushButton name B_Discard geometry 580 350 71 31 text Cancel QLineEdit name L_DeliveryProgramPath geometry 530 160 221 22 QLabel name TextLabel1_2_3_2 geometry 390 160 130 20 text Delivery Prog. Path QLabel name TextLabel1_2_3_2_3 geometry 640 190 40 20 text Count QLabel name TextLabel1_2_3_2 geometry 390 190 70 20 text Quota Size QLineEdit name L_QuotaC geometry 680 190 70 22 QLineEdit name L_QuotaS geometry 530 190 100 22 QLineEdit name L_UserName geometry 150 70 221 22 image0 789ced9ad98e25377286eff514c2f06e60e49c937bc2f045ed4bd7be755519bee09acc53fbbe187e7747c61f494933dd336ac3320cd84d09d2974c32c8886044304fffe5cf3f9f1fecfefce7bffcf4f4ac9f07fbb38dfaf1e73fbb979b9b8f7ffdb77ff9f79ffe54b63fd33fcdbcfe39ffd33ffdf4a7c3e79fedcf7b77b77e842c10a819ff1979d133cfc736b25e62cea9312f16897932933317d498e3067349ade0f9f7992b6acc663571c53c636e66f5ac1c79b813a6273c1eeb6989f9fdec4cb805c70be66ee28512a627fc3ee469629ecfb4c21afdea2171c7e335b3a1c6dcef27363c7ece6c8979fc6210b6e877d087236e787dadb09b69de9f4eec787d2bcc7eea378fcc8198e78f46d8cf2c8f5f15a627cc43e230b23d19793e23e6f9b2a7c4185f81e9098f5ff889e76c7f75cf4c7f30dfc0fb9de7f31cdc279eb33fc482b9a0c6ac7e61b6f722632ea971ffb09198fd453be66aea8f9bc215c67bd6ffbc9e97d097ff10aea51feb6de615fad5b6702df32d33b7f35af4fd2cdc88fe3e99bbb1f17a23b3a6c6f6d36d62d6a7bb64b6c4987f628bf11ee3dddc607dd942d882e383b09bb33ff6e8f7d40f7dec0853e3f7cf99c3343e3b157673f60fbf3b321d4e87fea101d313b677cff6276305cc9f6d24e6f7f50598de873e6ae1f99cf5e5583f7949cce753358979bf91fd37aff37ccee72fd8c4bc3fa7840b70bc12ae73d65fd84a8cf3fec6dce415e60fb7c2758ef83013a6c6fb7f676ee97d3e7ff650989ef07adbc4384f47cc7a6cbc7ff68fdce42df6afb17e9b7758df900b5bbcaff83ce62ed7d04f7f2e6cb17e7d2b4c8dcf339fafdc4ffdea2b73c82dc60f5e38e4bc5f5526e6f5383eef145c2dfc6fe1c0f484cf63e0f78b79eec4de67c21ef32f0c989eb07e02efb7c8a7fef85538e47cfefb5f98fdc5bd80491eebcf48ffd8f87dd66751e401f217163c3ee1fd9d4e5cb03eed2b7349f3f1f8c0fe57546363c67eeb229ff3f8ec6062b1e78b70017d658d7089f5f590d74ce3fb5cb8c4f881fda168a9b1ff28d67fd115e4a12c7f3f31ce1fc7ebc2140dfc2f76c2d4583ee7abc215937fe5c20efb711c0f0a5f7490dfbf0a6bf1f756d8429faa4acceb713bc2ae60fb8741981adb03fa09d48ff3c05ce685c37a552d1c0a9637bc82e909f203afaf2c0af2505e9f0153fa867d1f848b02fe7a3171c9fdc35b62e88ffdb32c693ee4f74238c0fefe095cce703e8613e112faf46cdfb21a1b33c7abb2a67481fcb5275c97b007f6d3d078f687210837589f594f8c7cccf1b66ccb1cf672997081f3ed272ea1ffc8fe5c7663e37ececfa52ec5ff4c10aeb03fc7f1a9346529fe3908d7986f30c246f4b79218f6ca13431f58bf2db5f81be79bd2959dd8673531eb27ee0b5becb7bf10a6c6e713ebf5d458bff63131fb53e0fc5a069a8ff533bc0807f41b9ebfa2708bf9865de15cf4c3f19e8c57a0df9f25e6f176eaa7c6f192f75f55341faf476f0ae725f2c5967085f103efbfaaabba447ce0785f35343ff4c7ebafda2a2fe01f7bc26d05fbb03dab6e1a6f6e84bb0af183e369a5abae843e39be54961aea3b8e9f9527c6fa212f5416f3f585b0af10cf395e707a433ce5fdd5c5d858df7cdeebb232d0b7fd008f8df5c7e7abaea81ff5e895b0833fb867709d5788371c8feb9a0a26f8279fb7baa5f29af76f9c705d21bfb37deaae9e211ec47be10ef287f5c4f007d64f6da8e1bc70beab6d5d415ffd4cd8627f8ef363ed6ad1f770204c8dd7c3f1adf6c488176cdf3ad0fbd0cf81702bfe75284c8de5f1f9a2cb4257627dcf607ac2fa89fc3e95830ef61b7a303d81ffb0fea9bc3058bfe678de14343ff27f071e1b33d7970d395c8d7814276ee05f9c2f9aa67638df96e34dd336758dfa02dc5181c3f936727c6e0c35d4972b8979bd3defbf7163e3f7d91e8da78486fb4f102ea19f9efdbd098d16fbed0b07cc17793eba4e7515efdfb37f5339dcc15f5d0d1e1bcfc7fa6bf3a6c3f9731c6f29791af1378c2f6806e8ef52981aef9febc7b61c1bcf77cd5cd178debf3f058f0539af97cf47db8c8dedc3e7ad75ade83b6e0bd313e63231e23bc79736b4721ec29db086fe3cfb0b5d0eeb0aef73fcebf2b683bf6627c2b681fed6c0f404feda4ddc21bfb0ff77c5d8787eb63f258bbcc5f9bc10a6c6ebe1f340c1a685fc81cf1b1f2fd41bd71363bec0f6e81ababee27ec7f7f1aea519a07f70d79a0af5c31c4c7ff83c68ae8f3bd3da8afdabbf170ed8af3f02d37c88377c3e3ad7352deef360dfcdb05ef7215cd4b05721ec3bcccff6e94237873ff55f46a6cb750eb60fc21af33b071e1b33d7977a4eef73fcb77bc235fc55633ebe90b1fef9bce8a26ba19fb027ec5be88bf3932ebb16e30dc6573aef787e7f274c8dedcff94e379d45bc0e9fe0b1f1fa8e99dbced5e02db09eb5a8ff309ed42ffbafc07ad6c0dfe6c29d86be39fe69d319c427bf06d6729e94162ee14f81f395b65a63ff19f4e5f41cf1347b14ce653cdef7c4b86fee0a970de2ad156e31ffb02cec35f217e7071d687e5ebfbd12ae5bb697e6fd9899a60299f77703a6278817e89f6bc97f91e3b329f4ac423e3f0353833f3d25c67d81eb312e87585f8eeb275369f13fdb09b7c8473de4d7ba11fbac09bb06fef3091e1b33e7570abe1afaf27cfe4c4bf3217ef0f931642fc453db80cd0cfe6536846905bcfe1de10eeb8f58bfa6f9508fac0a7735ecb1256c911ffa1d61071e64fcd8d8be1c7f8dd101f946419f86ca03c443274c7f783e8e67c6d2fcf85ef0154c3b44fdb6246c0df22bf4e7e87dc417be9f18f207e43f05f9de487e70d7c275c7fa0e983f680f7919ec134883f8bef49818eb7916a6c6ebe5f368673a60bce5f9ecdcd08962ae85e904f07ed95f6c6e66d04776215c201ee85d61af31ff0a981afc374b8c7ccdf9d18e173ee8b30253433df02531ea6f5ebf2d491efc87fd9d8a45323833e7335b9b0ef3b97b304940bc9809d796fdc3707eb0cdd8f87d8ebfb6358df807c717db11f37e94136e317fe07c6db5b1c877fd9b7090fc087d5000813ccbfe6dc95b507f28e8c74cfd6a3531e2c19a30359e9fe3a1b546237f1bcc6fe97ddcf7602f47ebc1f785dbc4381f9c8fad9fb8bf048f8dd7c7f5810dd48ffbc111d8ce5b9cf7285c225fba27610d7f1e9c70b0389fe789313fdbc3cda7f5d97de18078660ec1b6947cc8fb7739f5233faf80ed0cf5823d13a615733febdf15537f64ffe1eb18be7fe1fdca16e837cdc488afe155b844fd36583035e8772f31eecb9c5f1df917e2bd31c21ae7d3417e4d2bc4fd8af5e71a9a1ff1f07c62c83767c22df2a5e37ad35139817ca65f851bd42fee4d58f2bb873c4aa778dff4c21af68bc7e0b1f178fe1e43e1a7c17ec3a970dba07e3e14f68807f10e4c0df1e22831fc83e3d7e86e920fdf855becafef843bf43bcc6fc8c26c8f8ceb6d676d8778679e851dea3fff09a6f5435f7bc21af6896fc2d4783ee89726c079d44d62c4f71aec661dbe67df094b7e349930699019efd369417daaa06fef72c4c710853de41be8335002403cb6c20ef9df2c0bfb16fa7a130eb0afcfc14eea1dbd3131f28ff94c8cf9ae8573d413c3837070b0279f3f3f2379883fa7c201f955d71377d0ff1298e6c779e3f5f93931ce6b253cc77a34e70f9f5bc9ffe605ec0ae8d794c225f293f910a60a83c7737cf2852b51dfaa93c4a8d75685eb0eebf5c2d6405f584fe966909fdd0b57909f3d08d7a8e7d4b170837ad4cf843b8d7ca3c1d4b05faec73c4503f85378112ee10fee5db8827ec349625ebfae843bd403ea50d8207e5aeca7228de3f7403e0f745d6fa11ff32aac35bebf435f356910f50dfbb76f687dd0ef96702efa5813aee16f7eea6fb0fe702cdcc2deea56b8d38857b9b0467d6ede848de47bf84f3be9c3de09d7d8bfdd116ee1cfe65dd8a27ef37c9ff11dad07dff33e851dea5b5d0a7ba927578583c17d13fd148de0bfb61536723f2b843de4654b89719f3b4a8cfb1af46d9cc4db70246c30bf3e4bccebd507c216fe66b11fe373d857c35fe87840ff6653d8c8fbd7c256eea3f05febe738cf7a6d62992f0ae7c87f360837f08761214c8dfd13e7dd913c7c0f3811b6c8570af671be407da866c2325ead0b5363791cbfbc27fb225e68e14eec6f8425ff844562eed7c7c20ef127837ebd2f719eb3e389513fc65b610ff98eeb671fc89f60eff3c438af4ab893faf04ad8c19efa2131e2d5c9c412df1689618f27e120f6eec1be917ae7ab30355e0feb23ccc604c2e39f8503e657cbe030c3fbba9b38c03ebcff307716ebd77b13637cbf211c10cfc203d8cf112fc3a3708178dbf7c2b5c4cb15e146ea4f252cf94e1d2486ff4c6c25ff578971bed7859de41baeef42eebc9c9f6db09fc1dfec17e11cfa5199b0b6888fbbc206f556cff93314341ff2f91398e6c3fde23931dbabdf142e245e6d0bd738ff7d1096fa594f6c1dbea7ad093bd437764bd87bd4afd05f49fa467d5208e7588feb12e3fbf56362dcc716c285d8735db8c17dd207e1d660ff6bc21dfad593b073981feb2b4963a80fe4fdb1f17af9fc848ae461bfa7c225f49f69e10aebcf6c62c4e70be10ef1d76d0b6b83fbce3b786c2c1ffe5bfb02e7cbdd0a97d8bfbd488cefe747c295bc7f3231fcd9dac4f0df4b61f95ed4bf0bd30d9ff943d8a0beb44ed8897fed0b07d4c371073c365e0fe7d7d078b9ef6437c235f491f9c4f8bd5f25c6fb7b8951dfbac4f87df43831e2f55162dce7b7851bbc9fdd26c6ef992631bedf5e25e6f1e1977ed4835b89f1f7630e13233ecd845ba9272f12a33f4f8cf8fe9c18df4f3e2646bc095789512f15c21dde0ff389e57d9cf7862224fcff7c62d45fee4eb800ab25616abc1ed8a79dec63a270037be893c4f8deb92adc22bf66efc21deacb619aaf43fd15b4b0c6f744f39018f6bc4d0c7b5e27c6fa5e840dee0bc37b62dcefddc4884f6149d8a2feb197c20edfa7422bec510f842631f427e32943e0fbf89e309d78ee97f1d478bd01f1b89be40f4ad8e23e947d083bb0ba4e0c7fff9218f3fbc4b86f95c21ef122bb4e8cfaec2a31f2cfa67090f15b8911afe689593f2a24c6f7e96e62c4f7fe131c66167fbfe15c788eef3fe17a62d4dfb64c0cfb64c239e247ef2796fcb7212cf7053b4f8cf81313a31e594e0cff90fd4ef6718f89b1debdc418ef12c3de46b8c67c6e3f31fefecd4c981af723df68d207f2559118fea784e716bfcf9f25c6fa86c4f0f72be11cdfafcc7d62c8bf162e2cdb279e4e8cfb7cd8498cfa655a5f897a36ac2586bd36842bd423fd5262e4ebd9c4a2ff2231f46713e3ef273c08d7c2bbc20df4ab277d5063f9f00713e4fb922b13235e2d12e3f7ff63e10afbb14f89f17df22331ee83f9c458afda10aeb1bf2c4f0cffeb2786fdd58570e3703f53c2adf8d36762d4973789914f978535ea87e085e90db6f76362fcde89f92cad07f678146e3dbe676f2586febbc4b0e7a570077fcd668911bfae84b5dc67aac4c82761e280df937a618bfc10361323be5c26c6ef9dc80f544ea31e8f4bc206f3bb8d8903f2ff4e62e4a3abc4c8373a31eaeb41d84a7d749718f9bc488c7cb429ecc07a3b31ce93498c7a3026463dbd488cdfb3613f3fcd97ed0a53e3f7a12ffe33f2e1f31fdbfeafcbc8d4ff800c9d993f5c86cddc777a4ce67fdbf76b1959c8fa2c66c36f46846cf1cd99ae32955d7fb3c76737d9ed7765dc65f7d943f6983da527cfd94bf69abd7d63a6779ae9e31bcf6f49c6ed6f9ffd5657b4eacf6c295bce568457b3b56c3ddbf89b9936b3ad6c3bfb92ed64bbd9ee6f76e7b3bdefd923dbcf0ef8bf87d951769c9d64a74c67d9d7ec3cbbc82e7f35cf2eb75936cff2ac1062495949fabbfadbbd4106adbfcaeaaca1ffb659a732a594cec2d8af8cb2ca29af40fd34a38a6ac836d5e21719ea8af6e5d4376c34c95037ea365b5277ea5e3da847f544529ed50b3d7f556fea5d7da8a03ed5d2343ffdbbac56d4aa5a53eb494aa136d4a6dafa9e0c96b2adbea81ddac3aeda53fbea401daa2375ac4ed4a93a535fd5b9ba50972c61a6e62a57852a55a56ad5a856753ad38af6b4a9b5fec6a9f9b5cdb5d54e7b1d48c293ee75a47dddea41bde985bed2d7fa669440b3ddea3b7daf1ff4a37ed2cffa45bfea37fdae3ff4e72f96f9b60cbda4c99bb2a057484b640fbdaad7b24fbdae3794d59b7a4b6de96d92f045efe85dbda7f7f5813ed447fa589fe8537da6bfea737da12ff58c77da7fdb1e7a9eddeb5c1734f3e85747ba1cffae063dab75a3e94e247bd83199197f1537c61a673c25fbde44339885b932d7e6c6dc6227e6cedc9b87f1acfc22c33c9a27f36c5ed4b179356fe69dcec8a7f9309f66c92c9b15b36ad6488232eb66c36c9a2db36dbe981db36bf6ccbe393087e6c81c9b13736acecc5773ce5272734127c523a64dba3297d9aa99512ce9cddce4a63065766f2a539bc6b4867761333bfe0e6bacb5ce7a4af7bd8d76b00b7b65afed8dbdb577f6de3ed8477ef7c95cd867fbf2ad73fe4bb3aff6cd2cdbf72cd80ff893fdb44b76d9aed855bb66d7ed86ddb41b6acf6ed96dfbc5eed85dbb67f7ed813db447a3aeecf1f762c9af649cd0f95eb7a724e38cce74a116f6c37eb5e7f6c25e5aaad16d6e0b5bdacad6b6b1aded1c1d3fa79d71d6b9bff6aeefc9d04bce5379d0bbe806b770572ada0f77ed6edcadbd7477eede3db847bbe19edcb37b71afeecdbdbb0ff7e996dcb25bf96bdffa9e0cb73a962059706b6edd1ebb0d15dda6db723776c56dbb2f6ec7edba3db7ef0edca13bca16eed89db85377e6beba7377314af8c732dca59b918cb9cb5de1a8dad626db75b56b5ceb3a7217e5b537de7ae73d953abd8f7ef00b7fe5affd8dbff577bf6f1ffede3fb8e01fbd64923142f967ffe25ffd9b7ff71ffed32ff965bfe257fd9a5ff71b7ed36ff96dffc5eff85dbff7fbece1f7474df98389d5a58a7ae60ffd913ff627fed49ff9affedc5ff84b3ff3739ffbc2979e6e07beb18fbef51d2959a96baa7fcd7842be2d23d85146485999aabf10fa10c31016e12a5c879b701beec27d78088fe1293c8797f01adec27bf8089fd92c2cd1dc8e73eecd78d2bf236339ac908c55a1b5b01e36f44dd80c5b613b7c093b6137ec85fd70100ec351380e27e1349c85afe13c5c98b570493266611ef250fc3d5d85926554a1a6ff6f421b3a0a00aad7bde96def7adf87beef633ff48bfeaabfee6ffadbfeaebfef1ff4178a39dbfd63c87e3ddbb765f44ffdb30bfd4bffdabff5effd47ffd92ff5cbfd4abf6a97fbb57ebddfe837c3b6bdebb7faedfe4bbfd3eff67bfd7e7fa0d5df8bed7f25e3b03fea8fa99df4a7fd59ffb53fef2ffacb7ed6cffbbc2ffab2affaba6ffab6ef6216c91da289363afa1f1dfdef934155d85524af8a7d8c7188d105fab78f8b7815afe34dbc8d77f13e3ec4c7f8149fe34b7c555d7c8bef748236e247fc8c4bbf6f1fd955988da7242ec795b81ad7fc03495b8f1b71336ec5edf825eec4ddb817f7e3413c8c47f1982a083a41f1249ec6b378f6fb64fcbac5aff1dcefc78bfe285ec6599cc73c16b18c55ac6313dbd80dd9286194916dc68f6c4b5d0fea4765a0e99d410f66b0741a970637f8210cfd10876158d0136ad37bc3d5a086ebe166b8fd7119633e1eee68eefbe161781c9e86e7e165781dbe51a5929cf7e18332d40fcb183e49c6d2b03cac0cabc39ae9fce1b03e6c0c9bdf7bdf3e0f5bc10c5b3f2283246c0f5fc6bf7339ec0cbbc3deb03f1c98d5bfbbaac3e16838fe311924e564381dce86afc339ede162b81c66ff70f73f246394e23f863959241f0ad254897af8f7b41f91413ba9867a688696f6d1fd113216d942f98f582cf4c22cecc22dfc1f20232c7a921317c350fdfe3dfc980c91d42fbe793ffcef94f15f69ff2fe37f998cfff8e79ffe137b83e9fa B_Discard clicked() AddUserView reject() L_UserName L_Gecos L_HomeDirectory L_MailHost L_MailReplyText L_Password L_PasswordConfirm L_MailMessageStore L_QuotaS L_DeliveryProgramPath R_BothDotMode R_ForwardOnly R_Reply R_EchoMessage R_NormalDelivery R_Active R_Disabled R_NoPop B_Accept B_Discard R_NoDotMode R_DotOnly qldapadmin-1.0-RC1/gui/compile_gui.sh0100644000175000000000000000240307403101253016457 0ustar muratwheel#!/bin/sh # # User Interfaces # and Meta Classes of User Interfaces # # EnderUNIX Software Development Team # (c) 2001, 2001 Istanbul / Turkey # # uic -o MainMenu.h mainmenu.ui uic -i MainMenu.h -o MainMenu.cpp mainmenu.ui uic -o AboutBox.h aboutbox.ui uic -i AboutBox.h -o AboutBox.cpp aboutbox.ui uic -o UserView.h userview.ui uic -i UserView.h -o UserView.cpp userview.ui uic -o DomainView.h domainview.ui uic -i DomainView.h -o DomainView.cpp domainview.ui uic -o AddDomainView.h addnewdomain.ui uic -i AddDomainView.h -o AddDomainView.cpp addnewdomain.ui uic -o AddUserView.h addnewuser.ui uic -i AddUserView.h -o AddUserView.cpp addnewuser.ui uic -o GeneralOpts.h generalopts.ui uic -i GeneralOpts.h -o GeneralOpts.cpp generalopts.ui moc -o mocMainMenu.cpp MainMenu.h moc -o mocMainMenuImpl.cpp MainMenuImpl.h moc -o mocAboutBox.cpp AboutBox.h moc -o mocDomainView.cpp DomainView.h moc -o mocDomainViewImpl.cpp DomainViewImpl.h moc -o mocUserView.cpp UserView.h moc -o mocUserViewImpl.cpp UserViewImpl.h moc -o mocAddDomainView.cpp AddDomainView.h moc -o mocAddDomainViewImpl.cpp AddDomainViewImpl.h moc -o mocAddUserView.cpp AddUserView.h moc -o mocAddUserViewImpl.cpp AddUserViewImpl.h moc -o mocGeneralOpts.cpp GeneralOpts.h moc -o mocGeneralOptsImpl.cpp GeneralOptsImpl.h qldapadmin-1.0-RC1/gui/domainview.ui0100644000175000000000000002700507403100244016334 0ustar muratwheel DomainView QDialog name DomainView geometry 0 0 460 460 caption QLDAPAdmin -- Domain Information icon image0 QLineEdit name L_UserName geometry 210 320 160 31 text User QToolButton name P_Find geometry 380 327 70 19 text Find user QLabel name TextLabel1 geometry 30 20 150 30 font adobe-helvetica 18 1 text QLDAPAdmin QLabel name DomainTextBox geometry 190 23 220 27 font adobe-helvetica 1 frameShape MShape frameShadow MShadow text enderunix.com QListView text Email clickable true resizeable true text Name clickable false resizeable true name UsersList geometry 20 60 430 240 QGroupBox name GroupBox1 geometry 20 310 170 130 title Quick Links QPushButton name P_AddUser geometry 20 70 120 20 text Add new user QPushButton name P_DeleteUser geometry 20 50 120 20 text Delete user QPushButton name P_Dismiss geometry 280 390 91 31 text Close image0 789ced975d53144b1286effd158475676ce499feaaee8e8dbd0005810115144537f622fb63f8121181197563fffb66bd6f310a079819c373772689e978a6aaebadcccaca2afe78b2b4ff6a7be9c91f8f2e2ef5f2a85d6a0ff5cbd293eeeaf4f4dbbffff3afff3e7a9c574bf697d4f552faf81f8f1eef5c2eb54b2fce3ef501440ddc009fc0eac06930b48fc14530b40fc16530f02978140cfd9bc049f8603ce9a79ca0ff085c2655a26827576619f864ca15f833b80e063e048f8261bcddc0982ee77f0e4e82810791d314e36b3de51ce35d80f1417b15394fe92fdbf360811b01d75996517f07acc1d0de92b322477ff714dc0643ff17e02e1858238f32ce779b9c0d32ce2f03f7d7dcb8c85d81fe7216d85acdf07e024ef2a2a0de4b701a0cbc4cf6bec67cf515181fccb725175549ff36c8beaa391ed623cb7dabf4ef085c6435e321c7601f0cfdd7c9e540a97700aeb22e677c9f83eb3253c6e323584d0febafc89fac29eb86fd11cfacb5e5603eb07f170ced6be0be2c14f9addfc1a3b26ce0bfabc955de327f5702e74930b4bf2557bec5f88a7cccd36ad0c03ff78e5c0f3ac44310dfdc02923768df21d749c7f9607df2bc4a1af25564edb83f90af79110cedabe4725073fedfc0beca5af4771fc065592be793906dbe8897db035765dfd0bfafe4eb761d472e5bce778d5c171dd7af03d7799be37d57907d5f231e6e402e73653e4dc8361edb914fb95abcc879646d993fefc975d5737c7253751df77f4ab676e48f201f6d3666e8bf49ae33c6df4d226b4fbdadc84de437e0ced68b7a1edc177dc97a407ffbaaef981f5ccfded68ff142bdc947857ae4af1b924baf582f57912d7e88a786e2ea8a41592ae6ef56c8a6cff53d8e9cc7fe9f227bfaa3f0af4882e1fd2b725dc7f5292237317ea80f456afe333f9ac86dcffa89f915599166cc27896c06de23fb514dbd65b28dcff82791bb184fd4db22afba96f158255b7fd68f83c82de727887751d8fb9c0fdb7d30f4ff4a2ead04804bb2c583f5e3cb94f9fe24f2a8673dc17e28c27e60ff2d72ddc7f85c907510fbbf0657c1d0be4e367dd6b3d85eb52dc76bc97515f3ed6364ed99ffcfc07530b4ef93cb86f5518fc8b6decc9713b2cd07fa0dea5ba1162fd6fb3c72cf76653cd4fa737c8d9c44c67e299a6ac4fdd774648b0fdb19bf46d31ef9d6303f5ad363be1f47ee7aac7fa391fb1ef39521791abffd29b37ea07e175d30f036b96a5ae6d359e43ee60bfdedec7de6c766e4a4673dc57da2e88381df91affdd562ca9c8f8f9c46a67fa3d27a40ef906ccbc7fcdc20d78358dfb3c87d8c3ff37b743d9e607dfdc0d725f3a923d749f407e7b90fd7198e97922d9edc8fd8df3ed59cf317e4038e47d63b17b9f18c07ce1f9fd769cbf8bf89ec3b9ef77b53e67ccbc80deb89ec90358b7aa847b6d9caa87715b9223bfa670919f75b4eb6f8b2fd7be43cc617ebe1adfac5f86c4d99eb877c33b5c6f37c637ccab2e7fd415e93eb92f55650ff7d65f123ef936d3cee4f3765ea21bf7c6dfeb23e31beeaafeb33ce4bdf6b19fddf886c051e8cfb831f5509ef3f82f3cc6e27756c47fd2b93b2aab85f71df29536d98ef827a61b79596fe3ad4533b0dbb9ef519fb21dc3e465c7f9cef761af43df2d9e1fcb56a15cf27c5fa96aa1af71bcecfb2a9b29af1c0f961ce789ee782f3ba1ae880f927589f2aad73de77643572d130ff2fc9eae3f98afb8f8d9ef03ee64ec9da759cdf88dc5cefb7b753a61eea7595d705ef6b82fa5b153a62fd10c4bfaaea8ef7a59dcbbfd6fed6f85be36713f7576b8806fbab34a4e1f8d24a378f4aecddcfa721a3d8ffe0c7fbf368fca474f89046ec7374ebfde31f7a0f6bdc18e5f0b6869cd8af1fe574f608f744ead3ad5fcea252b0cf723e3b777f8edc1dad5f6647739efdf1d028f3acd75c1a17f77922bf4de3fed95a1caf7e9f063db1e7f886cdb547e7d438c0e813b3aff24dbecbb2acc8537916747e9bc65856654d9ecbbad9866cc286b225dbf2425eced29953e315c6df921db35d792d6f644fde9ace3ba37d79ffb0ca5c7935960f32b0d126d11249a5974c7229ecd98b97f2219539f66025b513e79c4e3526ae71adf4ae9314cf1efedcab3287c6d88d6e7811340e30f661d07047eed8d666d39ddca7324be3da0b1b657243a5353b101f9ef865e84edcc7bb55666a8cdda9acbb4f3715e2aa78fbf6f139b15826eeec2e958735a4729fddb96cb82f7768fc301f552e2c177e45e3d27d962d8bf5431ad4e13a5dfd596586c6d88d6dcfedce54b8f6c5bb89fb2a670b69f4ee9bfb7e7bbd1f50f16ed9adb8a70b6a3cb38cb9c0caa6b6e366aab855b766de3f5f24afdcba43eeb88db8a3fdc32ae6c7a61bde5c9399b9dbdb3b5b6e3b28b817333d09abfed2bd5a4c032a3b6ed7bdb6e786456cb6c61bb7b7a80654deba776edf7c496745cb62f5de7d585c032a0397d877eab666f891b9dc15bfa21155bc7d97b6030eeef5c6bbcad52abfa61154a45767ff14371aaa61813ae56fa8595669a7bd9d37e7bfa6011d3515a7233dd0433d92c222f3934fee408ff5443feaad1be7621a7a6aa7134cd4ce8d5db766a37e32a565db7b576e45cff4f39fef110b6a9c87f1f58bad4a2363bdd04bbdd2b14eccbeea37fdaecbbab2684dbc5b037ea4fa5471f7d1555dd3e7baae1bba79f75d68110d3dd7a179b16599b525856eeb10bfbe307ba9af744777f5f55def2da8f1c65426341dea9e9ecff3defc1aa6f056dfe9be8d0db32c7aaf1fe651995743079a68aa99e676cf19ca500bf5f65d6aa5f5efd16824a45318fbb6354dd336f27bfc68babb14a072efffb38bafc7afdbe3fffdf3d1ff01281b2a11 P_Dismiss clicked() DomainView reject() UsersList P_DeleteUser P_AddUser L_UserName P_Dismiss qldapadmin-1.0-RC1/gui/generalopts.ui0100644000175000000000000003271707403100244016523 0ustar muratwheel GeneralOptsView QDialog name GeneralOptsView geometry 0 0 477 387 caption QLDAPAdmin 0.41 Visual (BETA) icon image0 QLabel name TextLabel1 geometry 20 10 150 30 font adobe-helvetica 18 1 frameShape NoFrame text QLDAPAdmin QLabel name TextLabel2 geometry 140 50 230 20 font adobe-helvetica 13 1 text General Configuration Options QLabel name TextLabel1_2_2_2 geometry 30 150 160 21 text Ldap user QLabel name TextLabel1_2_2 geometry 30 120 160 21 text Ldap server port QLabel name TextLabel1_2 geometry 30 90 160 21 text Ldap server QLabel name TextLabel1_2_2_2_2 geometry 30 180 160 21 text Ldap password QLineEdit name L_LdapServer geometry 200 89 240 22 QLineEdit name L_LdapPort geometry 200 120 40 22 QLineEdit name L_LdapUser geometry 200 149 240 22 QLineEdit name L_LdapPassword geometry 200 179 140 22 echoMode Password QPushButton name P_Cancel geometry 240 340 100 21 text Cancel QPushButton name P_SaveOpts geometry 140 340 100 21 text Save options QLabel name TextLabel1_2_2_2_2_2 geometry 30 210 160 21 text Ldap Base DN QLabel name TextLabel1_2_2_2_2_2_2 geometry 30 300 160 21 text Default mailhost QLineEdit name L_DefaultMailhost geometry 200 300 240 22 QLineEdit name L_LdapBasedn geometry 200 209 240 22 QLineEdit name L_QuotaSize geometry 200 239 140 22 QLineEdit name L_QuotaCount geometry 200 269 140 22 QLabel name TextLabel1_2_2_2_2_2_3 geometry 30 240 160 21 text Default Quota Size (bytes) QLabel name TextLabel1_2_2_2_2_2_3_2 geometry 30 270 160 21 text Default Quota count (mails) image0 789cbdd44b53e3381000e03bbf2245dfa8ad1ec78e6da9b6f61042204060609ecc6cedc17a41181208098f30b5ff7ddbdd1d1f396e2997afd46e49ad563eecf5ae2ece7a7b1f7656eb663df33d7fd33cf6f6c2d37cbef9fb9fbf7eefecf6ab5efbcb06bd7cf78f9dddcb75cff7ceef17b1051e11a0f079ca6bf6253b1579ee5bc3b4b3c43fb71e6445913bf62fb5c913bbcfae0b5364fc7dc336852dfa6c89f745284af64bebb218f40b59ef946d066561d923b6a30cb23eb4ae4c69ca01dbb4b6fdbaae0cc7a7d64d6d3323f3876c634215d83fb6ae393f7e14db4c0cd7ec648de1fde3496b57da68b978386657d6d59c0fd69df9fc20f1b535b5acff226e4a2bf923db3495957a0fd8b6c9add4b35457ea2b76d3e446e25fd9ae310d9f17bfa8435371fe05db77f9bfaaad180e3acbf717ec40f9f97bfca9ae0cd71b783defda8c3c7fccf63e73729ffbec48156263ad6eacd4fb73eb90f9c217ec4a5dabcfd9b9f35a9f9bce525fcf1ef8da493d0ab6f3de717de189edbd69b89f509cc8323f17874ce271d63af643e91af62d3bf741bfe7fb89450841eedf7796efb93fe22094baffa4b65eeacdfb8f6597ff8e5dd30ec5616bcde73a4bff4abca1f5a43ff9fd44170751f673aa2e03bf17ccd8142deb01bfcf984274dcafc0eba58c7628fbb3ec7eec7b99776a6a20f63dbb88214afdb83ea98c9993fd1da92b2ff79bab53947cfc3e53154b27f779a8ae9df4d3926da20d52bfefea2086c7ced2afc8a6e727f5837167f9bf18aaa3ce737fa686d697fe997496ff27b1a38ac8f72b75aef57fe82cf5fda42ea3bc976f9d657ea9aea45ec8ff07c9d37e64ff6fe254e879c5d49049fa41ea1d299fdcf7506da3d477be7592fedc57371abfd83ac9fbe3f79d520c5ece3313a7beded76a6bedef33b59e1f37ea3248fc485d0559ffb1b3c43f6cadfd39ed2cffefdb7c8df872fdfef8bf6310de1f1ad3d070e83160c444e31a6f7046e396c62f8db9c3398d058f7b1a0fb8c4475ce11a9ff059635ef01537f8c67143dca7880d8ef000c77888471a33c1633cc153cad0c64c29cf199ee347bca0b52e35e61365f88c5ff02b7ea3a8297ec72bfc813f31a3d1d7989c32ccb1c0019658614df38632583a1480f41e80c30578ca3381001112ed34c135dcc00c6e41cf0577308705dcd32a537880253cc28ab2ace1099ee145635e692713d8d05edb532f69c7237883218e611f461a73406b0c692c69208ce1108e6002c798c1099c6a4cf3ce98eefefbe7ce7f8ba71faf L_LdapServer L_LdapPort L_LdapUser L_LdapPassword L_LdapBasedn L_DefaultMailhost P_SaveOpts P_Cancel qldapadmin-1.0-RC1/gui/main.cpp0100644000175000000000000000120307401650033015257 0ustar muratwheel #include #include #include #include #include #include #include "MainMenuImpl.h" #include "../src/EnderLDAP.h" #include "../src/LDAPException.h" #include "../src/qconfig.h" int main(int argc, char **argv) { int ret, i; EnderLDAP *myLDAP = new EnderLDAP(); umask(0177); if ((myLDAP->bind()) != LDAP_SUCCESS) { ldap_perror(myLDAP->getSessionHandle(), "Bind"); exit(-1); } QApplication app(argc, argv); MainMenuImpl mainmenu(myLDAP); app.setMainWidget(&mainmenu); mainmenu.show(); ret = app.exec(); /* Should never get here ! */ return ret; } qldapadmin-1.0-RC1/gui/main.h0100644000175000000000000000013507400123262014725 0ustar muratwheel#ifndef MAIN_H #define MAIN_H enum { CREATE = 0x1, MODIFY = 0x2, DELETE = 0x3 }; #endif qldapadmin-1.0-RC1/gui/mainmenu.ui0100644000175000000000000002350707403100244016006 0ustar muratwheel MainMenu QWidget name MainMenu geometry 0 0 586 322 caption QLDAPAdmin 0.41 Visual (BETA) icon image0 QGroupBox name GroupBox1 geometry 20 90 170 160 font title Quick Links QPushButton name P_GeneralOptions geometry 20 30 120 20 text General Options QPushButton name P_AddDomain geometry 20 50 120 20 text Add new domain QPushButton name P_DeleteDomain geometry 20 70 120 20 text Delete domain QPushButton name P_About geometry 20 90 120 20 text About QPushButton name P_Exit geometry 20 110 120 20 text Exit QLabel name TextLabel1_2 geometry 90 280 390 40 text (c) 2001, EnderUNIX Software Development Team Istanbul/Turkiye http://www.enderunix.org - roots@enderunix.org QLabel name TextLabel2 geometry 20 60 190 20 font adobe-helvetica text Admin tool for Qmail-LDAP QLabel name TextLabel1 geometry 20 30 150 30 font adobe-helvetica 18 1 text QLDAPAdmin QListView text Domain Name clickable true resizeable true text Domain Description clickable false resizeable true name DomainList geometry 240 101 330 150 image0 789cbdd44b53e3381000e03bbf2245dfa8ad1ec78e6da9b6f61042204060609ecc6cedc17a41181208098f30b5ff7ddbdd1d1f396e2997afd46e49ad563eecf5ae2ece7a7b1f7656eb663df33d7fd33cf6f6c2d37cbef9fb9fbf7eefecf6ab5efbcb06bd7cf78f9dddcb75cff7ceef17b1051e11a0f079ca6bf6253b1579ee5bc3b4b3c43fb71e6445913bf62fb5c913bbcfae0b5364fc7dc336852dfa6c89f745284af64bebb218f40b59ef946d066561d923b6a30cb23eb4ae4c69ca01dbb4b6fdbaae0cc7a7d64d6d3323f3876c634215d83fb6ae393f7e14db4c0cd7ec648de1fde3496b57da68b978386657d6d59c0fd69df9fc20f1b535b5acff226e4a2bf923db3495957a0fd8b6c9add4b35457ea2b76d3e446e25fd9ae310d9f17bfa8435371fe05db77f9bfaaad180e3acbf717ec40f9f97bfca9ae0cd71b783defda8c3c7fccf63e73729ffbec48156263ad6eacd4fb73eb90f9c217ec4a5dabcfd9b9f35a9f9bce525fcf1ef8da493d0ab6f3de717de189edbd69b89f509cc8323f17874ce271d63af643e91af62d3bf741bfe7fb89450841eedf7796efb93fe22094baffa4b65eeacdfb8f6597ff8e5dd30ec5616bcde73a4bff4abca1f5a43ff9fd44170751f673aa2e03bf17ccd8142deb01bfcf984274dcafc0eba58c7628fbb3ec7eec7b99776a6a20f63dbb88214afdb83ea98c9993fd1da92b2ff79bab53947cfc3e53154b27f779a8ae9df4d3926da20d52bfefea2086c7ced2afc8a6e727f5837167f9bf18aaa3ce737fa686d697fe997496ff27b1a38ac8f72b75aef57fe82cf5fda42ea3bc976f9d657ea9aea45ec8ff07c9d37e64ff6fe254e879c5d49049fa41ea1d299fdcf7506da3d477be7592fedc57371abfd83ac9fbe3f79d520c5ece3313a7beded76a6bedef33b59e1f37ea3248fc485d0559ffb1b3c43f6cadfd39ed2cffefdb7c8df872fdfef8bf6310de1f1ad3d070e83160c444e31a6f7046e396c62f8db9c3398d058f7b1a0fb8c4475ce11a9ff059635ef01537f8c67143dca7880d8ef000c77888471a33c1633cc153cad0c64c29cf199ee347bca0b52e35e61365f88c5ff02b7ea3a8297ec72bfc813f31a3d1d7989c32ccb1c0019658614df38632583a1480f41e80c30578ca3381001112ed34c135dcc00c6e41cf0577308705dcd32a537880253cc28ab2ace1099ee145635e692713d8d05edb532f69c7237883218e611f461a73406b0c692c69208ce1108e6002c798c1099c6a4cf3ce98eefefbe7ce7f8ba71faf P_GeneralOptions P_AddDomain P_DeleteDomain P_About DomainList qldapadmin-1.0-RC1/gui/mocAboutBox.cpp0100644000175000000000000000324407403134047016570 0ustar muratwheel/**************************************************************************** ** AboutBox meta object code from reading C++ file 'AboutBox.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocAboutBox.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "AboutBox.h" #include #include const char *AboutBox::className() const { return "AboutBox"; } QMetaObject *AboutBox::metaObj = 0; void AboutBox::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("AboutBox","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString AboutBox::tr(const char* s) { return qApp->translate( "AboutBox", s, 0 ); } QString AboutBox::tr(const char* s, const char * c) { return qApp->translate( "AboutBox", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* AboutBox::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "AboutBox", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocAddDomainView.cpp0100644000175000000000000000335707403134047017525 0ustar muratwheel/**************************************************************************** ** AddDomainView meta object code from reading C++ file 'AddDomainView.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocAddDomainView.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "AddDomainView.h" #include #include const char *AddDomainView::className() const { return "AddDomainView"; } QMetaObject *AddDomainView::metaObj = 0; void AddDomainView::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("AddDomainView","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString AddDomainView::tr(const char* s) { return qApp->translate( "AddDomainView", s, 0 ); } QString AddDomainView::tr(const char* s, const char * c) { return qApp->translate( "AddDomainView", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* AddDomainView::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "AddDomainView", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocAddDomainViewImpl.cpp0100644000175000000000000000430507403134047020341 0ustar muratwheel/**************************************************************************** ** AddDomainViewImpl meta object code from reading C++ file 'AddDomainViewImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocAddDomainViewImpl.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "AddDomainViewImpl.h" #include #include const char *AddDomainViewImpl::className() const { return "AddDomainViewImpl"; } QMetaObject *AddDomainViewImpl::metaObj = 0; void AddDomainViewImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(AddDomainView::className(), "AddDomainView") != 0 ) badSuperclassWarning("AddDomainViewImpl","AddDomainView"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString AddDomainViewImpl::tr(const char* s) { return qApp->translate( "AddDomainViewImpl", s, 0 ); } QString AddDomainViewImpl::tr(const char* s, const char * c) { return qApp->translate( "AddDomainViewImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* AddDomainViewImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) AddDomainView::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (AddDomainViewImpl::*m1_t0)(); typedef void (QObject::*om1_t0)(); m1_t0 v1_0 = &AddDomainViewImpl::addDomain; om1_t0 ov1_0 = (om1_t0)v1_0; QMetaData *slot_tbl = QMetaObject::new_metadata(1); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(1); slot_tbl[0].name = "addDomain()"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "AddDomainViewImpl", "AddDomainView", slot_tbl, 1, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocAddUserView.cpp0100644000175000000000000000332107403134047017223 0ustar muratwheel/**************************************************************************** ** AddUserView meta object code from reading C++ file 'AddUserView.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocAddUserView.cpp,v 1.5 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "AddUserView.h" #include #include const char *AddUserView::className() const { return "AddUserView"; } QMetaObject *AddUserView::metaObj = 0; void AddUserView::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("AddUserView","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString AddUserView::tr(const char* s) { return qApp->translate( "AddUserView", s, 0 ); } QString AddUserView::tr(const char* s, const char * c) { return qApp->translate( "AddUserView", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* AddUserView::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "AddUserView", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocAddUserViewImpl.cpp0100644000175000000000000000471707403134047020057 0ustar muratwheel/**************************************************************************** ** AddUserViewImpl meta object code from reading C++ file 'AddUserViewImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocAddUserViewImpl.cpp,v 1.2 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "AddUserViewImpl.h" #include #include const char *AddUserViewImpl::className() const { return "AddUserViewImpl"; } QMetaObject *AddUserViewImpl::metaObj = 0; void AddUserViewImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(AddUserView::className(), "AddUserView") != 0 ) badSuperclassWarning("AddUserViewImpl","AddUserView"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString AddUserViewImpl::tr(const char* s) { return qApp->translate( "AddUserViewImpl", s, 0 ); } QString AddUserViewImpl::tr(const char* s, const char * c) { return qApp->translate( "AddUserViewImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* AddUserViewImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) AddUserView::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (AddUserViewImpl::*m1_t0)(); typedef void (QObject::*om1_t0)(); typedef void (AddUserViewImpl::*m1_t1)(); typedef void (QObject::*om1_t1)(); m1_t0 v1_0 = &AddUserViewImpl::addUser; om1_t0 ov1_0 = (om1_t0)v1_0; m1_t1 v1_1 = &AddUserViewImpl::updateL_MailMessageStore; om1_t1 ov1_1 = (om1_t1)v1_1; QMetaData *slot_tbl = QMetaObject::new_metadata(2); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(2); slot_tbl[0].name = "addUser()"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; slot_tbl[1].name = "updateL_MailMessageStore()"; slot_tbl[1].ptr = (QMember)ov1_1; slot_tbl_access[1] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "AddUserViewImpl", "AddUserView", slot_tbl, 2, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocDomainView.cpp0100644000175000000000000000330207403134047017102 0ustar muratwheel/**************************************************************************** ** DomainView meta object code from reading C++ file 'DomainView.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocDomainView.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "DomainView.h" #include #include const char *DomainView::className() const { return "DomainView"; } QMetaObject *DomainView::metaObj = 0; void DomainView::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("DomainView","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString DomainView::tr(const char* s) { return qApp->translate( "DomainView", s, 0 ); } QString DomainView::tr(const char* s, const char * c) { return qApp->translate( "DomainView", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* DomainView::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "DomainView", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocDomainViewImpl.cpp0100644000175000000000000000603507403134047017732 0ustar muratwheel/**************************************************************************** ** DomainViewImpl meta object code from reading C++ file 'DomainViewImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocDomainViewImpl.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "DomainViewImpl.h" #include #include const char *DomainViewImpl::className() const { return "DomainViewImpl"; } QMetaObject *DomainViewImpl::metaObj = 0; void DomainViewImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(DomainView::className(), "DomainView") != 0 ) badSuperclassWarning("DomainViewImpl","DomainView"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString DomainViewImpl::tr(const char* s) { return qApp->translate( "DomainViewImpl", s, 0 ); } QString DomainViewImpl::tr(const char* s, const char * c) { return qApp->translate( "DomainViewImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* DomainViewImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) DomainView::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (DomainViewImpl::*m1_t0)(QListViewItem*); typedef void (QObject::*om1_t0)(QListViewItem*); typedef void (DomainViewImpl::*m1_t1)(); typedef void (QObject::*om1_t1)(); typedef void (DomainViewImpl::*m1_t2)(); typedef void (QObject::*om1_t2)(); typedef void (DomainViewImpl::*m1_t3)(); typedef void (QObject::*om1_t3)(); m1_t0 v1_0 = &DomainViewImpl::viewUserSlot; om1_t0 ov1_0 = (om1_t0)v1_0; m1_t1 v1_1 = &DomainViewImpl::viewAddUserSlot; om1_t1 ov1_1 = (om1_t1)v1_1; m1_t2 v1_2 = &DomainViewImpl::deleteUserSlot; om1_t2 ov1_2 = (om1_t2)v1_2; m1_t3 v1_3 = &DomainViewImpl::FindUserSlot; om1_t3 ov1_3 = (om1_t3)v1_3; QMetaData *slot_tbl = QMetaObject::new_metadata(4); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(4); slot_tbl[0].name = "viewUserSlot(QListViewItem*)"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; slot_tbl[1].name = "viewAddUserSlot()"; slot_tbl[1].ptr = (QMember)ov1_1; slot_tbl_access[1] = QMetaData::Public; slot_tbl[2].name = "deleteUserSlot()"; slot_tbl[2].ptr = (QMember)ov1_2; slot_tbl_access[2] = QMetaData::Public; slot_tbl[3].name = "FindUserSlot()"; slot_tbl[3].ptr = (QMember)ov1_3; slot_tbl_access[3] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "DomainViewImpl", "DomainView", slot_tbl, 4, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocGeneralOpts.cpp0100644000175000000000000000340107403134047017263 0ustar muratwheel/**************************************************************************** ** GeneralOptsView meta object code from reading C++ file 'GeneralOpts.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocGeneralOpts.cpp,v 1.5 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "GeneralOpts.h" #include #include const char *GeneralOptsView::className() const { return "GeneralOptsView"; } QMetaObject *GeneralOptsView::metaObj = 0; void GeneralOptsView::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("GeneralOptsView","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString GeneralOptsView::tr(const char* s) { return qApp->translate( "GeneralOptsView", s, 0 ); } QString GeneralOptsView::tr(const char* s, const char * c) { return qApp->translate( "GeneralOptsView", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* GeneralOptsView::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "GeneralOptsView", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocGeneralOptsImpl.cpp0100644000175000000000000000434307403134047020113 0ustar muratwheel/**************************************************************************** ** GeneralOptsViewImpl meta object code from reading C++ file 'GeneralOptsImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocGeneralOptsImpl.cpp,v 1.5 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "GeneralOptsImpl.h" #include #include const char *GeneralOptsViewImpl::className() const { return "GeneralOptsViewImpl"; } QMetaObject *GeneralOptsViewImpl::metaObj = 0; void GeneralOptsViewImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(GeneralOptsView::className(), "GeneralOptsView") != 0 ) badSuperclassWarning("GeneralOptsViewImpl","GeneralOptsView"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString GeneralOptsViewImpl::tr(const char* s) { return qApp->translate( "GeneralOptsViewImpl", s, 0 ); } QString GeneralOptsViewImpl::tr(const char* s, const char * c) { return qApp->translate( "GeneralOptsViewImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* GeneralOptsViewImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) GeneralOptsView::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (GeneralOptsViewImpl::*m1_t0)(); typedef void (QObject::*om1_t0)(); m1_t0 v1_0 = &GeneralOptsViewImpl::SaveSlot; om1_t0 ov1_0 = (om1_t0)v1_0; QMetaData *slot_tbl = QMetaObject::new_metadata(1); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(1); slot_tbl[0].name = "SaveSlot()"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "GeneralOptsViewImpl", "GeneralOptsView", slot_tbl, 1, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocMainMenu.cpp0100644000175000000000000000324407403134047016556 0ustar muratwheel/**************************************************************************** ** MainMenu meta object code from reading C++ file 'MainMenu.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocMainMenu.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "MainMenu.h" #include #include const char *MainMenu::className() const { return "MainMenu"; } QMetaObject *MainMenu::metaObj = 0; void MainMenu::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QWidget::className(), "QWidget") != 0 ) badSuperclassWarning("MainMenu","QWidget"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString MainMenu::tr(const char* s) { return qApp->translate( "MainMenu", s, 0 ); } QString MainMenu::tr(const char* s, const char * c) { return qApp->translate( "MainMenu", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* MainMenu::staticMetaObject() { if ( metaObj ) return metaObj; (void) QWidget::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "MainMenu", "QWidget", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocMainMenuImpl.cpp0100644000175000000000000001013107403134047017371 0ustar muratwheel/**************************************************************************** ** MainMenuImpl meta object code from reading C++ file 'MainMenuImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocMainMenuImpl.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "MainMenuImpl.h" #include #include const char *MainMenuImpl::className() const { return "MainMenuImpl"; } QMetaObject *MainMenuImpl::metaObj = 0; void MainMenuImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(MainMenu::className(), "MainMenu") != 0 ) badSuperclassWarning("MainMenuImpl","MainMenu"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString MainMenuImpl::tr(const char* s) { return qApp->translate( "MainMenuImpl", s, 0 ); } QString MainMenuImpl::tr(const char* s, const char * c) { return qApp->translate( "MainMenuImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* MainMenuImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) MainMenu::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (MainMenuImpl::*m1_t0)(); typedef void (QObject::*om1_t0)(); typedef void (MainMenuImpl::*m1_t1)(); typedef void (QObject::*om1_t1)(); typedef void (MainMenuImpl::*m1_t2)(); typedef void (QObject::*om1_t2)(); typedef void (MainMenuImpl::*m1_t3)(); typedef void (QObject::*om1_t3)(); typedef void (MainMenuImpl::*m1_t4)(QListViewItem*); typedef void (QObject::*om1_t4)(QListViewItem*); typedef void (MainMenuImpl::*m1_t5)(); typedef void (QObject::*om1_t5)(); typedef void (MainMenuImpl::*m1_t6)(); typedef void (QObject::*om1_t6)(); typedef void (MainMenuImpl::*m1_t7)(); typedef void (QObject::*om1_t7)(); m1_t0 v1_0 = &MainMenuImpl::ShowAboutBox; om1_t0 ov1_0 = (om1_t0)v1_0; m1_t1 v1_1 = &MainMenuImpl::ShowAddDomainBox; om1_t1 ov1_1 = (om1_t1)v1_1; m1_t2 v1_2 = &MainMenuImpl::ShutDown; om1_t2 ov1_2 = (om1_t2)v1_2; m1_t3 v1_3 = &MainMenuImpl::ListDomains; om1_t3 ov1_3 = (om1_t3)v1_3; m1_t4 v1_4 = &MainMenuImpl::viewDomainSlot; om1_t4 ov1_4 = (om1_t4)v1_4; m1_t5 v1_5 = &MainMenuImpl::DeleteDomainSlot; om1_t5 ov1_5 = (om1_t5)v1_5; m1_t6 v1_6 = &MainMenuImpl::GeneralOptionsSlot; om1_t6 ov1_6 = (om1_t6)v1_6; m1_t7 v1_7 = &MainMenuImpl::ExitSlot; om1_t7 ov1_7 = (om1_t7)v1_7; QMetaData *slot_tbl = QMetaObject::new_metadata(8); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(8); slot_tbl[0].name = "ShowAboutBox()"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; slot_tbl[1].name = "ShowAddDomainBox()"; slot_tbl[1].ptr = (QMember)ov1_1; slot_tbl_access[1] = QMetaData::Public; slot_tbl[2].name = "ShutDown()"; slot_tbl[2].ptr = (QMember)ov1_2; slot_tbl_access[2] = QMetaData::Public; slot_tbl[3].name = "ListDomains()"; slot_tbl[3].ptr = (QMember)ov1_3; slot_tbl_access[3] = QMetaData::Public; slot_tbl[4].name = "viewDomainSlot(QListViewItem*)"; slot_tbl[4].ptr = (QMember)ov1_4; slot_tbl_access[4] = QMetaData::Public; slot_tbl[5].name = "DeleteDomainSlot()"; slot_tbl[5].ptr = (QMember)ov1_5; slot_tbl_access[5] = QMetaData::Public; slot_tbl[6].name = "GeneralOptionsSlot()"; slot_tbl[6].ptr = (QMember)ov1_6; slot_tbl_access[6] = QMetaData::Public; slot_tbl[7].name = "ExitSlot()"; slot_tbl[7].ptr = (QMember)ov1_7; slot_tbl_access[7] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "MainMenuImpl", "MainMenu", slot_tbl, 8, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocUserView.cpp0100644000175000000000000000324407403134047016616 0ustar muratwheel/**************************************************************************** ** UserView meta object code from reading C++ file 'UserView.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocUserView.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "UserView.h" #include #include const char *UserView::className() const { return "UserView"; } QMetaObject *UserView::metaObj = 0; void UserView::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(QDialog::className(), "QDialog") != 0 ) badSuperclassWarning("UserView","QDialog"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString UserView::tr(const char* s) { return qApp->translate( "UserView", s, 0 ); } QString UserView::tr(const char* s, const char * c) { return qApp->translate( "UserView", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* UserView::staticMetaObject() { if ( metaObj ) return metaObj; (void) QDialog::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES QMetaData::Access *slot_tbl_access = 0; metaObj = QMetaObject::new_metaobject( "UserView", "QDialog", 0, 0, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/mocUserViewImpl.cpp0100644000175000000000000000414507403134047017441 0ustar muratwheel/**************************************************************************** ** UserViewImpl meta object code from reading C++ file 'UserViewImpl.h' ** ** Created: Tue Dec 4 16:43:15 2001 ** by: The Qt MOC ($Id: mocUserViewImpl.cpp,v 1.8 2001/12/04 11:48:55 murat Exp $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #if !defined(Q_MOC_OUTPUT_REVISION) #define Q_MOC_OUTPUT_REVISION 9 #elif Q_MOC_OUTPUT_REVISION != 9 #error "Moc format conflict - please regenerate all moc files" #endif #include "UserViewImpl.h" #include #include const char *UserViewImpl::className() const { return "UserViewImpl"; } QMetaObject *UserViewImpl::metaObj = 0; void UserViewImpl::initMetaObject() { if ( metaObj ) return; if ( qstrcmp(UserView::className(), "UserView") != 0 ) badSuperclassWarning("UserViewImpl","UserView"); (void) staticMetaObject(); } #ifndef QT_NO_TRANSLATION QString UserViewImpl::tr(const char* s) { return qApp->translate( "UserViewImpl", s, 0 ); } QString UserViewImpl::tr(const char* s, const char * c) { return qApp->translate( "UserViewImpl", s, c ); } #endif // QT_NO_TRANSLATION QMetaObject* UserViewImpl::staticMetaObject() { if ( metaObj ) return metaObj; (void) UserView::staticMetaObject(); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES typedef void (UserViewImpl::*m1_t0)(); typedef void (QObject::*om1_t0)(); m1_t0 v1_0 = &UserViewImpl::AcceptButtonSlot; om1_t0 ov1_0 = (om1_t0)v1_0; QMetaData *slot_tbl = QMetaObject::new_metadata(1); QMetaData::Access *slot_tbl_access = QMetaObject::new_metaaccess(1); slot_tbl[0].name = "AcceptButtonSlot()"; slot_tbl[0].ptr = (QMember)ov1_0; slot_tbl_access[0] = QMetaData::Public; metaObj = QMetaObject::new_metaobject( "UserViewImpl", "UserView", slot_tbl, 1, 0, 0, #ifndef QT_NO_PROPERTIES 0, 0, 0, 0, #endif // QT_NO_PROPERTIES 0, 0 ); metaObj->set_slot_access( slot_tbl_access ); #ifndef QT_NO_PROPERTIES #endif // QT_NO_PROPERTIES return metaObj; } qldapadmin-1.0-RC1/gui/userview.ui0100644000175000000000000010562707403100244016052 0ustar muratwheel UserView QDialog name UserView geometry 0 0 406 615 caption QLDAPAdmin -- User Details icon image0 QLabel name TextLabel1 geometry 30 10 150 30 font adobe-helvetica 18 1 frameShape NoFrame text QLDAPAdmin QLabel name T_UserName geometry 190 20 200 20 font adobe-helvetica 1 text murat@enderunix.com QLabel name TextLabel1_2_2 geometry 30 180 130 20 text Mail Message Store QButtonGroup name ButtonGroup2 geometry 20 350 180 150 title QmailDotMode QRadioButton name R_NoDotMode geometry 10 110 160 20 text None - Normal Delivery QRadioButton name R_DotOnly geometry 10 30 94 20 text DotOnly QRadioButton name R_BothDotMode geometry 10 90 120 20 text Both (Default) checked true QRadioButton name R_LdapOnly geometry 10 50 94 20 text LdapOnly QRadioButton name R_LdapWithProg geometry 10 70 120 20 text LdapWithProgram QButtonGroup name ButtonGroup2_2 geometry 210 350 180 150 title DeliveryMode QRadioButton name R_LocalDelivery geometry 10 60 120 20 text Local delivery QRadioButton name R_Reply geometry 10 80 120 20 text Reply QRadioButton name R_ForwardOnly geometry 10 20 100 20 text Forward only QRadioButton name R_NoMailbox geometry 10 40 94 20 text No mailbox QRadioButton name R_EchoMessage geometry 10 100 160 20 text Echo the message QRadioButton name R_NormalDelivery geometry 10 120 150 20 text Normal (Default) checked true QLineEdit name L_DeliveryProgramPath geometry 170 300 221 22 QLineEdit name L_Quota geometry 170 210 221 22 QLineEdit name L_HomeDirectory geometry 170 150 221 22 QLabel name TextLabel1_2_5 geometry 30 270 130 20 text Mail Reply Text QLabel name TextLabel1_2_4 geometry 30 240 130 20 text MailHost QLabel name TextLabel1_2_3 geometry 30 150 130 20 text Home Directory QLineEdit name L_MailReplyText geometry 170 270 221 22 QLineEdit name L_MailMessageStore geometry 170 180 221 22 echoMode Normal QLineEdit name L_MailHost geometry 170 240 221 22 QLabel name TextLabel1_2_3_2 geometry 30 210 130 20 text Quota QButtonGroup name ButtonGroup6 geometry 20 510 180 90 title Account Status QRadioButton name R_Disabled geometry 10 40 110 20 text Disabled QRadioButton name R_Active geometry 10 20 110 20 text Active (Default) checked true QRadioButton name R_NoPop geometry 10 60 150 20 text Pop access denied QLabel name TextLabel1_2_3_2 geometry 30 300 130 20 text Delivery Prog. Path QLabel name TextLabel1_2_3_2_2 geometry 30 60 130 20 text Gecos QLabel name passwordtextlabel geometry 30 90 130 20 text Password QLabel name TextLabel1_2_3_password geometry 30 120 130 20 text Confirm password QLineEdit name L_Gecos geometry 170 60 221 22 sizePolicy 0 0 QLineEdit name L_UserPassword geometry 170 90 221 22 QLineEdit name L_PasswordConfirm geometry 170 120 221 22 QPushButton name B_Discard geometry 300 540 71 31 text Cancel QPushButton name B_Accept geometry 230 540 71 31 text OK image0 789ced9ad98e25377286eff514c2f06e60e49c937bc2f045ed4bd7be755519bee09acc53fbbe187e7747c61f494933dd336ac3320cd84d09d2974c32c8886044304fffe5cf3f9f1fecfefce7bffcf4f4ac9f07fbb38dfaf1e73fbb979b9b8f7ffdb77ff9f79ffe54b63fd33fcdbcfe39ffd33ffdf4a7c3e79fedcf7b77b77e842c10a819ff1979d133cfc736b25e62cea9312f16897932933317d498e3067349ade0f9f7992b6acc663571c53c636e66f5ac1c79b813a6273c1eeb6989f9fdec4cb805c70be66ee28512a627fc3ee469629ecfb4c21afdea2171c7e335b3a1c6dcef27363c7ece6c8979fc6210b6e877d087236e787dadb09b69de9f4eec787d2bcc7eea378fcc8198e78f46d8cf2c8f5f15a627cc43e230b23d19793e23e6f9b2a7c4185f81e9098f5ff889e76c7f75cf4c7f30dfc0fb9de7f31cdc279eb33fc482b9a0c6ac7e61b6f722632ea971ffb09198fd453be66aea8f9bc215c67bd6ffbc9e97d097ff10aea51feb6de615fad5b6702df32d33b7f35af4fd2cdc88fe3e99bbb1f17a23b3a6c6f6d36d62d6a7bb64b6c4987f628bf11ee3dddc607dd942d882e383b09bb33ff6e8f7d40f7dec0853e3f7cf99c3343e3b157673f60fbf3b321d4e87fea101d313b677cff6276305cc9f6d24e6f7f50598de873e6ae1f99cf5e5583f7949cce753358979bf91fd37aff37ccee72fd8c4bc3fa7840b70bc12ae73d65fd84a8cf3fec6dce415e60fb7c2758ef83013a6c6fb7f676ee97d3e7ff650989ef07adbc4384f47cc7a6cbc7ff68fdce42df6afb17e9b7758df900b5bbcaff83ce62ed7d04f7f2e6cb17e7d2b4c8dcf339fafdc4ffdea2b73c82dc60f5e38e4bc5f5526e6f5383eef145c2dfc6fe1c0f484cf63e0f78b79eec4de67c21ef32f0c989eb07e02efb7c8a7fef85538e47cfefb5f98fdc5bd80491eebcf48ffd8f87dd66751e401f217163c3ee1fd9d4e5cb03eed2b7349f3f1f8c0fe57546363c67eeb229ff3f8ec6062b1e78b70017d658d7089f5f590d74ce3fb5cb8c4f881fda168a9b1ff28d67fd115e4a12c7f3f31ce1fc7ebc2140dfc2f76c2d4583ee7abc215937fe5c20efb711c0f0a5f7490dfbf0a6bf1f756d8429faa4acceb713bc2ae60fb8741981adb03fa09d48ff3c05ce685c37a552d1c0a9637bc82e909f203afaf2c0af2505e9f0153fa867d1f848b02fe7a3171c9fdc35b62e88ffdb32c693ee4f74238c0fefe095cce703e8613e112faf46cdfb21a1b33c7abb2a67481fcb5275c97b007f6d3d078f687210837589f594f8c7cccf1b66ccb1cf672997081f3ed272ea1ffc8fe5c7663e37ececfa52ec5ff4c10aeb03fc7f1a9346529fe3908d7986f30c246f4b79218f6ca13431f58bf2db5f81be79bd2959dd8673531eb27ee0b5becb7bf10a6c6e713ebf5d458bff63131fb53e0fc5a069a8ff533bc0807f41b9ebfa2708bf9865de15cf4c3f19e8c57a0df9f25e6f176eaa7c6f192f75f55341faf476f0ae725f2c5967085f103efbfaaabba447ce0785f35343ff4c7ebafda2a2fe01f7bc26d05fbb03dab6e1a6f6e84bb0af183e369a5abae843e39be54961aea3b8e9f9527c6fa212f5416f3f585b0af10cf395e707a433ce5fdd5c5d858df7cdeebb232d0b7fd008f8df5c7e7abaea81ff5e895b0833fb867709d5788371c8feb9a0a26f8279fb7baa5f29af76f9c705d21bfb37deaae9e211ec47be10ef287f5c4f007d64f6da8e1bc70beab6d5d415ffd4cd8627f8ef363ed6ad1f770204c8dd7c3f1adf6c488176cdf3ad0fbd0cf81702bfe75284c8de5f1f9a2cb4257627dcf607ac2fa89fc3e95830ef61b7a303d81ffb0fea9bc3058bfe678de14343ff27f071e1b33d7970d395c8d7814276ee05f9c2f9aa67638df96e34dd336758dfa02dc5181c3f936727c6e0c35d4972b8979bd3defbf7163e3f7d91e8da78486fb4f102ea19f9efdbd098d16fbed0b07cc17793eba4e7515efdfb37f5339dcc15f5d0d1e1bcfc7fa6bf3a6c3f9731c6f29791af1378c2f6806e8ef52981aef9febc7b61c1bcf77cd5cd178debf3f058f0539af97cf47db8c8dedc3e7ad75ade83b6e0bd313e63231e23bc79736b4721ec29db086fe3cfb0b5d0eeb0aef73fcebf2b683bf6627c2b681fed6c0f404feda4ddc21bfb0ff77c5d8787eb63f258bbcc5f9bc10a6c6ebe1f340c1a685fc81cf1b1f2fd41bd71363bec0f6e81ababee27ec7f7f1aea519a07f70d79a0af5c31c4c7ff83c68ae8f3bd3da8afdabbf170ed8af3f02d37c88377c3e3ad7352deef360dfcdb05ef7215cd4b05721ec3bcccff6e94237873ff55f46a6cb750eb60fc21af33b071e1b33d7977a4eef73fcb77bc235fc55633ebe90b1fef9bce8a26ba19fb027ec5be88bf3932ebb16e30dc6573aef787e7f274c8dedcff94e379d45bc0e9fe0b1f1fa8e99dbced5e02db09eb5a8ff309ed42ffbafc07ad6c0dfe6c29d86be39fe69d319c427bf06d6729e94162ee14f81f395b65a63ff19f4e5f41cf1347b14ce653cdef7c4b86fee0a970de2ad156e31ffb02cec35f217e7071d687e5ebfbd12ae5bb697e6fd9899a60299f77703a6278817e89f6bc97f91e3b329f4ac423e3f0353833f3d25c67d81eb312e87585f8eeb275369f13fdb09b7c8473de4d7ba11fbac09bb06fef3091e1b33e7570abe1afaf27cfe4c4bf3217ef0f931642fc453db80cd0cfe6536846905bcfe1de10eeb8f58bfa6f9508fac0a7735ecb1256c911ffa1d61071e64fcd8d8be1c7f8dd101f946419f86ca03c443274c7f783e8e67c6d2fcf85ef0154c3b44fdb6246c0df22bf4e7e87dc417be9f18f207e43f05f9de487e70d7c275c7fa0e983f680f7919ec134883f8bef49818eb7916a6c6ebe5f368673a60bce5f9ecdcd08962ae85e904f07ed95f6c6e66d04776215c201ee85d61af31ff0a981afc374b8c7ccdf9d18e173ee8b30253433df02531ea6f5ebf2d491efc87fd9d8a45323833e7335b9b0ef3b97b304940bc9809d796fdc3707eb0cdd8f87d8ebfb6358df807c717db11f37e94136e317fe07c6db5b1c877fd9b7090fc087d5000813ccbfe6dc95b507f28e8c74cfd6a3531e2c19a30359e9fe3a1b546237f1bcc6fe97ddcf7602f47ebc1f785dbc4381f9c8fad9fb8bf048f8dd7c7f5810dd48ffbc111d8ce5b9cf7285c225fba27610d7f1e9c70b0389fe789313fdbc3cda7f5d97de18078660ec1b6947cc8fb7739f5233faf80ed0cf5823d13a615733febdf15537f64ffe1eb18be7fe1fdca16e837cdc488afe155b844fd36583035e8772f31eecb9c5f1df917e2bd31c21ae7d3417e4d2bc4fd8af5e71a9a1ff1f07c62c83767c22df2a5e37ad35139817ca65f851bd42fee4d58f2bb873c4aa778dff4c21af68bc7e0b1f178fe1e43e1a7c17ec3a970dba07e3e14f68807f10e4c0df1e22831fc83e3d7e86e920fdf855becafef843bf43bcc6fc8c26c8f8ceb6d676d8778679e851dea3fff09a6f5435f7bc21af6896fc2d4783ee89726c079d44d62c4f71aec661dbe67df094b7e349930699019efd369417daaa06fef72c4c710853de41be8335002403cb6c20ef9df2c0bfb16fa7a130eb0afcfc14eea1dbd3131f28ff94c8cf9ae8573d413c3837070b0279f3f3f2379883fa7c201f955d71377d0ff1298e6c779e3f5f93931ce6b253cc77a34e70f9f5bc9ffe605ec0ae8d794c225f293f910a60a83c7737cf2852b51dfaa93c4a8d75685eb0eebf5c2d6405f584fe966909fdd0b57909f3d08d7a8e7d4b170837ad4cf843b8d7ca3c1d4b05faec73c4503f85378112ee10fee5db8827ec349625ebfae843bd403ea50d8207e5aeca7228de3f7403e0f745d6fa11ff32aac35bebf435f356910f50dfbb76f687dd0ef96702efa5813aee16f7eea6fb0fe702cdcc2deea56b8d38857b9b0467d6ede848de47bf84f3be9c3de09d7d8bfdd116ee1cfe65dd8a27ef37c9ff11dad07dff33e851dea5b5d0a7ba927578583c17d13fd148de0bfb61536723f2b843de4654b89719f3b4a8cfb1af46d9cc4db70246c30bf3e4bccebd507c216fe66b11fe373d857c35fe87840ff6653d8c8fbd7c256eea3f05febe738cf7a6d62992f0ae7c87f360837f08761214c8dfd13e7dd913c7c0f3811b6c8570af671be407da866c2325ead0b5363791cbfbc27fb225e68e14eec6f8425ff844562eed7c7c20ef127837ebd2f719eb3e389513fc65b610ff98eeb671fc89f60eff3c438af4ab893faf04ad8c19efa2131e2d5c9c412df1689618f27e120f6eec1be917ae7ab30355e0feb23ccc604c2e39f8503e657cbe030c3fbba9b38c03ebcff307716ebd77b13637cbf211c10cfc203d8cf112fc3a3708178dbf7c2b5c4cb15e146ea4f252cf94e1d2486ff4c6c25ff578971bed7859de41baeef42eebc9c9f6db09fc1dfec17e11cfa5199b0b6888fbbc206f556cff93314341ff2f91398e6c3fde23931dbabdf142e245e6d0bd738ff7d1096fa594f6c1dbea7ad093bd437764bd87bd4afd05f49fa467d5208e7588feb12e3fbf56362dcc716c285d8735db8c17dd207e1d660ff6bc21dfad593b073981feb2b4963a80fe4fdb1f17af9fc848ae461bfa7c225f49f69e10aebcf6c62c4e70be10ef1d76d0b6b83fbce3b786c2c1ffe5bfb02e7cbdd0a97d8bfbd488cefe747c295bc7f3231fcd9dac4f0df4b61f95ed4bf0bd30d9ff943d8a0beb44ed8897fed0b07d4c371073c365e0fe7d7d078b9ef6437c235f491f9c4f8bd5f25c6fb7b8951dfbac4f87df43831e2f55162dce7b7851bbc9fdd26c6ef992631bedf5e25e6f1e1977ed4835b89f1f7630e13233ecd845ba9272f12a33f4f8cf8fe9c18df4f3e2646bc095789512f15c21dde0ff389e57d9cf7862224fcff7c62d45fee4eb800ab25616abc1ed8a79dec63a270037be893c4f8deb92adc22bf66efc21deacb619aaf43fd15b4b0c6f744f39018f6bc4d0c7b5e27c6fa5e840dee0bc37b62dcefddc4884f6149d8a2feb197c20edfa7422bec510f842631f427e32943e0fbf89e309d78ee97f1d478bd01f1b89be40f4ad8e23e947d083bb0ba4e0c7fff9218f3fbc4b86f95c21ef122bb4e8cfaec2a31f2cfa67090f15b8911afe689593f2a24c6f7e96e62c4f7fe131c66167fbfe15c788eef3fe17a62d4dfb64c0cfb64c239e247ef2796fcb7212cf7053b4f8cf81313a31e594e0cff90fd4ef6718f89b1debdc418ef12c3de46b8c67c6e3f31fefecd4c981af723df68d207f2559118fea784e716bfcf9f25c6fa86c4f0f72be11cdfafcc7d62c8bf162e2cdb279e4e8cfb7cd8498cfa655a5f897a36ac2586bd36842bd423fd5262e4ebd9c4a2ff2231f46713e3ef273c08d7c2bbc20df4ab277d5063f9f00713e4fb922b13235e2d12e3f7ff63e10afbb14f89f17df22331ee83f9c458afda10aeb1bf2c4f0cffeb2786fdd58570e3703f53c2adf8d36762d4973789914f978535ea87e085e90db6f76362fcde89f92cad07f678146e3dbe676f2586febbc4b0e7a570077fcd668911bfae84b5dc67aac4c82761e280df937a618bfc10361323be5c26c6ef9dc80f544ea31e8f4bc206f3bb8d8903f2ff4e62e4a3abc4c8373a31eaeb41d84a7d749718f9bc488c7cb429ecc07a3b31ce93498c7a3026463dbd488cdfb3613f3fcd97ed0a53e3f7a12ffe33f2e1f31fdbfeafcbc8d4ff800c9d993f5c86cddc777a4ce67fdbf76b1959c8fa2c66c36f46846cf1cd99ae32955d7fb3c76737d9ed7765dc65f7d943f6983da527cfd94bf69abd7d63a6779ae9e31bcf6f49c6ed6f9ffd5657b4eacf6c295bce568457b3b56c3ddbf89b9936b3ad6c3bfb92ed64bbd9ee6f76e7b3bdefd923dbcf0ef8bf87d951769c9d64a74c67d9d7ec3cbbc82e7f35cf2eb75936cff2ac1062495949fabbfadbbd4106adbfcaeaaca1ffb659a732a594cec2d8af8cb2ca29af40fd34a38a6ac836d5e21719ea8af6e5d4376c34c95037ea365b5277ea5e3da847f544529ed50b3d7f556fea5d7da8a03ed5d2343ffdbbac56d4aa5a53eb494aa136d4a6dafa9e0c96b2adbea81ddac3aeda53fbea401daa2375ac4ed4a93a535fd5b9ba50972c61a6e62a57852a55a56ad5a856753ad38af6b4a9b5fec6a9f9b5cdb5d54e7b1d48c293ee75a47dddea41bde985bed2d7fa669440b3ddea3b7daf1ff4a37ed2cffa45bfea37fdae3ff4e72f96f9b60cbda4c99bb2a057484b640fbdaad7b24fbdae3794d59b7a4b6de96d92f045efe85dbda7f7f5813ed447fa589fe8537da6bfea737da12ff58c77da7fdb1e7a9eddeb5c1734f3e85747ba1cffae063dab75a3e94e247bd83199197f1537c61a673c25fbde44339885b932d7e6c6dc6227e6cedc9b87f1acfc22c33c9a27f36c5ed4b179356fe69dcec8a7f9309f66c92c9b15b36ad6488232eb66c36c9a2db36dbe981db36bf6ccbe393087e6c81c9b13736acecc5773ce5272734127c523a64dba3297d9aa99512ce9cddce4a63065766f2a539bc6b4867761333bfe0e6bacb5ce7a4af7bd8d76b00b7b65afed8dbdb577f6de3ed8477ef7c95cd867fbf2ad73fe4bb3aff6cd2cdbf72cd80ff893fdb44b76d9aed855bb66d7ed86ddb41b6acf6ed96dfbc5eed85dbb67f7ed813db447a3aeecf1f762c9af649cd0f95eb7a724e38cce74a116f6c37eb5e7f6c25e5aaad16d6e0b5bdacad6b6b1aded1c1d3fa79d71d6b9bff6aeefc9d04bce5379d0bbe806b770572ada0f77ed6edcadbd7477eede3db847bbe19edcb37b71afeecdbdbb0ff7e996dcb25bf96bdffa9e0cb73a962059706b6edd1ebb0d15dda6db723776c56dbb2f6ec7edba3db7ef0edca13bca16eed89db85377e6beba7377314af8c732dca59b918cb9cb5de1a8dad626db75b56b5ceb3a7217e5b537de7ae73d953abd8f7ef00b7fe5affd8dbff577bf6f1ffede3fb8e01fbd64923142f967ffe25ffd9b7ff71ffed32ff965bfe257fd9a5ff71b7ed36ff96dffc5eff85dbff7fbece1f7474df98389d5a58a7ae60ffd913ff627fed49ff9affedc5ff84b3ff3739ffbc2979e6e07beb18fbef51d2959a96baa7fcd7842be2d23d85146485999aabf10fa10c31016e12a5c879b701beec27d78088fe1293c8797f01adec27bf8089fd92c2cd1dc8e73eecd78d2bf236339ac908c55a1b5b01e36f44dd80c5b613b7c093b6137ec85fd70100ec351380e27e1349c85afe13c5c98b570493266611ef250fc3d5d85926554a1a6ff6f421b3a0a00aad7bde96def7adf87beef633ff48bfeaabfee6ffadbfeaebfef1ff4178a39dbfd63c87e3ddbb765f44ffdb30bfd4bffdabff5effd47ffd92ff5cbfd4abf6a97fbb57ebddfe837c3b6bdebb7faedfe4bbfd3eff67bfd7e7fa0d5df8bed7f25e3b03fea8fa99df4a7fd59ffb53fef2ffacb7ed6cffbbc2ffab2affaba6ffab6ef6216c91da289363afa1f1dfdef934155d85524af8a7d8c7188d105fab78f8b7815afe34dbc8d77f13e3ec4c7f8149fe34b7c555d7c8bef748236e247fc8c4bbf6f1fd955988da7242ec795b81ad7fc03495b8f1b71336ec5edf825eec4ddb817f7e3413c8c47f1982a083a41f1249ec6b378f6fb64fcbac5aff1dcefc78bfe285ec6599cc73c16b18c55ac6313dbd80dd9286194916dc68f6c4b5d0fea4765a0e99d410f66b0741a970637f8210cfd10876158d0136ad37bc3d5a086ebe166b8fd7119633e1eee68eefbe161781c9e86e7e165781dbe51a5929cf7e18332d40fcb183e49c6d2b03cac0cabc39ae9fce1b03e6c0c9bdf7bdf3e0f5bc10c5b3f2283246c0f5fc6bf7339ec0cbbc3deb03f1c98d5bfbbaac3e16838fe311924e564381dce86afc339ede162b81c66ff70f73f246394e23f863959241f0ad254897af8f7b41f91413ba9867a688696f6d1fd113216d942f98f582cf4c22cecc22dfc1f20232c7a921317c350fdfe3dfc980c91d42fbe793ffcef94f15f69ff2fe37f998cfff8e79ffe137b83e9fa B_Discard clicked() UserView reject() L_MailMessageStore L_HomeDirectory L_Quota L_MailHost L_MailReplyText R_BothDotMode R_NoDotMode R_EchoMessage R_NormalDelivery R_Active R_Disabled R_NoPop B_Accept B_Discard qldapadmin-1.0-RC1/man/0040755000175000000000000000000007403171420013625 5ustar muratwheelqldapadmin-1.0-RC1/man/qaddaltaddr.10100644000175000000000000000207407403125755016166 0ustar muratwheel.TH "qaddaltaddr" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qaddaltaddr \- Adds alternate email address for user. It appends added option instead of overwriting .SH "SYNTAX" .LP qaddaltaddr \-a forward@domain.com username(email) .SH "DESCRIPTION" .LP qaddaltaddr adds an alternate email address for user. Adds a forwarding address for a user. It appends added option instead of overwriting .SH "OPTIONS" .LP .TP \fB\-a\fR forward@domain.com username(email) .TP .SH "FILES" .LP \fI/usr/local/bin/qaddaltaddr \fP .br .SH "EXAMPLES" .LP To add alternate address for user: .LP qaddaltaddr \-a forward@domain.com username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), .LP .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qadddomain.10100644000175000000000000000165307403125755016024 0ustar muratwheel.TH "qadddomain" "1" "1.0-RC1" "Enderunix SDT " "OPTIONS" .SH "NAME" .LP qadddomain \- add domainname to qmail ldap environment .SH "SYNTAX" .LP qadddomain [\fIoptions\fP] <\fIdomainname\fP> .br .SH "DESCRIPTION" .LP qadddomain is used to add domains to your qmail ldap environment .SH "FILES" .LP \fI/usr/local/bin/qadddomain \fP .br .SH "EXAMPLES" .LP To run this program the standard way type: .LP qadddomain \-c description domainname .LP Alternativly you can run it interactively as: .LP qadddomain .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qdeldomain(1), .BR qlistdomains(1), .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qaddforward.10100644000175000000000000000175307403125755016222 0ustar muratwheel.TH "qaddforward" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qaddforward \- Adds a forwarding address for a user. It appends added option instead of overwriting .SH "SYNTAX" .LP qaddforward \-f forward@domain.com username(email) .br .SH "DESCRIPTION" .LP Adds a forwarding address for a user. It appends added option instead of overwriting .SH "OPTIONS" .LP .TP \fB\-f\fR Adds forwarding address for user .TP .SH "FILES" .LP \fI/usr/local/bin/qaddforward\fP .br .SH "EXAMPLES" .LP To add alternate address for user: .LP qaddforward \-f forward@domain.com username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qdelforward(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qadduser.10100644000175000000000000000272607403125755015535 0ustar muratwheel.TH "qadduser" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qadduser \- Add user within a domain .SH "SYNTAX" .LP qadduser [\fIoption\fP] .br qadduser \fI\-[mcpqsdvh]\fP .SH "DESCRIPTION" .LP qadduser is used to create a user within a domain, modify its mailhost,passwd,quota etc. .SH "OPTIONS" .LP .TP \fB\-m \fR adds specified <\fIe\-mail\fP>. .TP \fB\-c \fR adds Gecos field for user .TP \fB\-q [ byte(S), count(C) ] \fR adds quota for user .TP \fB\-s \fR sets user's mailhost.Useful for clustering. .TP \fB\-d \fR sets user's maildir. .TP .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qadduser\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qadduser \-m user@enderunix.org \-p plaintextpass \-s server1.cluster.com \-q "1000000S 1000C" .LP Alternativly you can run it interactively as : .LP qadduser This asks you for required options .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetacctstatus(1), .LP .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qdelaltaddr.10100644000175000000000000000166107403125755016203 0ustar muratwheel.TH "qdelaltuser" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qdelaltaddr \- delete an alternate address for user .SH "SYNTAX" .LP qaddaltaddr adds an alternate email address for user .SH "DESCRIPTION" .LP qdelaltaddr adds an alternate email address for user .SH "OPTIONS" .LP .TP \fB\-a\fR forward@domain.com username(email) .TP .SH "FILES" .LP \fI/usr/local/bin/qdelaltaddr .br < .SH "EXAMPLES" .LP To add alternate address for user: .LP qdelaltaddr \-a forward@domain.com username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), .LP .BR qaddaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qdeldomain.10100644000175000000000000000206507403125755016036 0ustar muratwheel.TH "qdeldomain" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qdeldomain \- deletes domains in ldap database .SH "SYNTAX" .LP qdeldomain [\fIoption\fP] <\fIdomainname\fP> .SH "DESCRIPTION" .LP Deletes domains in ldap database .SH "OPTIONS" .LP .TP \fB\-d\fR <\fIdomainname\fP> .TP \fB\-f\fR Deletes domains without asking !. .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qdeldomain\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qdeldomain \-f \-d enderunix.org .LP Alternativly you can run it interactively as: .LP qdeldomain .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qlistdomains(1), .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qdelforward.10100644000175000000000000000162607403125755016235 0ustar muratwheel.TH "qdelforward" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qdelforward \- Deletes a forwarding address for a user .SH "SYNTAX" .LP qdelforward \-f forward@domain.com username(email) .br .SH "DESCRIPTION" .LP Deletes a forwarding address for a user .SH "OPTIONS" .LP .TP \fB\-f\fR Deletes forwarding address for user .TP .SH "FILES" .LP \fI/usr/local/bin/qdelforward\fP .br .SH "EXAMPLES" .LP To delete alternate address for user: .LP qdelforward \-f forward@domain.com username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qdeluser.10100644000175000000000000000206507403125755015545 0ustar muratwheel.TH "qdeluser" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qdeluser \- deletes user within a domain .SH "SYNTAX" .LP qdeluser [\fIoption\fP] <\fIdomainname\fP> .SH "DESCRIPTION" .LP This program deletes users within a domain .SH "OPTIONS" .LP .TP \fB\-NOOPTIONS\fR <\fIe\-mail\fP> Deletes a user.There is no option aplicable .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/loca/bin/qdeluser\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qdeluser user@enderunix.org .LP Alternativly you can run it interactively as: .LP qdeluser .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetacctstatus(1), .LP .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qlistdomains.10100644000175000000000000000170007403125755016423 0ustar muratwheel.TH "qlistdomains" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qlistdomains \- lists domains .SH "SYNTAX" .LP qlistdomains [\fINOOPTIONS\fP] .SH "DESCRIPTION" .LP This program lists domains in ldap database .SH "OPTIONS" .LP .TP \fB\-NOOPTIONS\fR <\fI\fP> .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qlistsdomains\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qlistdomains .LP .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qlistusers.10100644000175000000000000000173707403125755016144 0ustar muratwheel.TH "qlistusers" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qlistusers \- This program is used to list users within a domain .SH "SYNTAX" .LP qlistusers [\fIdomainname\fP] .br .SH "DESCRIPTION" .LP It is used to list users within a domain .SH "OPTIONS" .LP .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qlistusers\fP .SH "EXAMPLES" .LP To run this program type: .LP qlistusers enderunix.org .LP Alternativly you can run it interactively as: .LP qadddomain .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qpasswd(1), .BR qsetquota(1), .BR qsetmailhost(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qmodifyuser.10100644000175000000000000000155707403125755016275 0ustar muratwheel.TH "qmodifyuser" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qmodifyuser \- modify user's information. .SH "SYNTAX" .LP qmodifyuser .SH "DESCRIPTION" .LP This program is used to change user's info from system console .SH "OPTIONS" .LP .TP \fB\-NOOPTIONS\fR This tool has no option.I t is for console use. .TP .SH "FILES" .LP \fI/usr/local/bin/qmodifuser\fP .SH "EXAMPLES" .LP There is one way to run this program: .LP qmodifyuser .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetacctstatus(1), .LP .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qpasswd.10100644000175000000000000000210007403125755015371 0ustar muratwheel.TH "qpasswd" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qpasswd \- sets user password .SH "SYNTAX" .LP qpasswd [\fIoption\fP] <\fIe\-mail\fP> .SH "DESCRIPTION" .LP This program is used to change user's password .SH "OPTIONS" .LP .TP \fB\-p\fR <\fIpasswd\fP> <\fIe\-mail\fP> Changes user's password with <\fIe\-mail\fPaddr>. .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qpasswd\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qpasswd \-p plaintext user@enderunix.org .LP Alternativly you can run it interactively as: .LP qpasswd .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qsetquota(1), .BR qsetmailhost(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/qsetacctstatus.10100644000175000000000000000164507403125755016777 0ustar muratwheel.TH "qsetacctstatus" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qsetacctstatus \- sets account status for user .SH "SYNTAX" .LP qsetacctstatus \-s [active|disabled|nopop] username(email) .SH "DESCRIPTION" .LP sets account status for user .SH "OPTIONS" .LP .TP \fB\-s\fR [active|disabled|nopop] username(email) .TP .SH "FILES" .LP \fI/usr/local/bin/qsetacctstatus\fP .br .SH "EXAMPLES" .LP To set account status for a user: .LP qsetacctstatus \-s [active|disabled|nopop] username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qsetdeliverymode.10100644000175000000000000000174107403125755017306 0ustar muratwheel.TH "qsetdeliverymode" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP qsetdeliverymode \- sets delivery mode for user .SH "SYNTAX" .LP qsetdeliverymode \-m [echo|forwardonly|localdelivery|normal|reply|nombox] username(email) .SH "DESCRIPTION" .LP sets delivery mode for user .SH "OPTIONS" .LP .TP \fB\-m\fR [echo|forwardonly|localdelivery|normal|reply|nombox] username(email) .SH "FILES" .LP \fI/usr/local/bin/qsetdeliverymode\fP .br .SH "EXAMPLES" .LP To set user's delivery mode: .LP qsetdeliverymode \-m [echo|forwardonly|localdelivery|normal|reply|nombox] username(email) .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qsetmailhost.10100644000175000000000000000210507403125755016431 0ustar muratwheel.TH "qsetmailhost" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qsetmailhost \- sets user's mailhost.Used in clustering .SH "SYNTAX" .LP qsetmailhost [\fIoption\fP] <\fIe\-mail\fP> .SH "DESCRIPTION" .LP qsetmailhost is used to set user's mailhost .SH "OPTIONS" .LP .TP \fB\-u\fR <\fIe\-mail\fP> Sets user's mailhost. .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qsetmailhost\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qmailhost \-u user@enderunix.org server1.cluster.com .LP Alternativly you can run it interactively as: .LP qmailhost .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), qldapadmin-1.0-RC1/man/qsetmsgstore.10100644000175000000000000000200507403125755016453 0ustar muratwheel.TH "qsetmsgstore" "1" "0.4.0-BETA" "EnderUNIX SDT" "" .SH "NAME" .LP qsetmsgstore \- Used to set user's maildir in a mailserver .SH "SYNTAX" .LP qsetmsgstore [\fIoption\fP] <\fIe\-mail\fP> .SH "DESCRIPTION" .LP This program is used to set user's maildir. .SH "OPTIONS" .LP .TP \fB\-m\fR <\fIdirectory\fP> <\fIe\-mail\fP>. .TP \fB\-h\fR Output help information and exit. .TP \fB\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qsetmsgstore\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qsetmsgstore \-m /usr/home/user user@enderunix.org .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/man/qsetquota.10100644000175000000000000000177407403125755015755 0ustar muratwheel.TH "qsetquota" "1" "1.0-RC1" "EnderUNIX SDT" "" .SH "NAME" .LP qsetquota \- sets user's quota .SH "SYNTAX" .LP qsetquota [\fIoption\fP] e\-mail .br .SH "DESCRIPTION" .LP It is used to set user's quota .SH "OPTIONS" .LP .TP \fB\-s\fR <\fISIZE\fP> Specifies mail quota in size. .TP \fB\-c\fR Specifies mail quota in count. \fB\-\-h\fR Output help information and exit. .TP \fB\-\-v\fR Output version information and exit. .SH "FILES" .LP \fI/usr/local/bin/qsetquota\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP qsetquota \-s 1000000 \-c 1000 .LP .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .BR quserinfo(1), .LP .BR qpasswd(1), .BR qlistusers(1), .BR qsetmailhost(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qaddaltaddr(1), .BR qdelaltaddr(1), .BR qsetmsgstore(1), .LP .BR qsetdeliverymode(1), .BR qsetacctstatus(1), qldapadmin-1.0-RC1/man/quserinfo.10100644000175000000000000000142707403125755015735 0ustar muratwheel.TH "quserinfo" "1" "1.0-RC1" "EnderUNIX SDT" "OPTIONS" .SH "NAME" .LP quserinfo \- retrieves user information .SH "SYNTAX" .LP quserinfo username(email) .SH "DESCRIPTION" .LP retrieves user information .SH "OPTIONS" .LP This command has no options .SH "FILES" .LP \fI/usr/local/bin/quserinfo\fP .br .SH "EXAMPLES" .LP quserinfo username(email) .br .SH "AUTHORS" .LP EnderUNIX SDT .SH "SEE ALSO" .BR qadduser(1), .BR qdeluser(1), .BR qmodifyuser(1), .LP .BR qlistusers(1), .BR qpasswd(1), .BR qsetquota(1), .LP .BR qadddomain(1), .BR qdeldomain(1), .BR qlistdomains(1), .LP .BR qaddforward(1), .BR qdelforward(1), .LP .BR qsetdeliverymode(1), .BR qaddaltaddr(1), .LP .BR qdelaltaddr(1), .BR qsetacctstatus(1), .LP .BR qsetmsgstore(1), .BR qsetmailhost(1) qldapadmin-1.0-RC1/Makefile0100644000175000000000000000340107400123262014503 0ustar muratwheel SH = /bin/sh CC = g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ./bin`; do \ echo "install -c -m 500 ./bin/$$file /usr/local/bin/$$file" ; \ install -c -m 500 ./bin/$$file /usr/local/bin ; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f bin/* qldapadmin-1.0-RC1/Makefile.Solaris0100644000175000000000000000334007400123262016120 0ustar muratwheel SH = /bin/sh CC = g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt -lsocket -lresolv CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ./bin`; do \ install -c /usr/local/bin -m 500 ./bin/$$file /usr/local/bin ; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f bin/* qldapadmin-1.0-RC1/README0100644000175000000000000000465107403120121013725 0ustar muratwheel EnderUNIX QLDAPAdmin Version 1.0-RC1 README ============================================== http://www.enderunix.org/qldapadmin/ Andre Oppermann has a patch that makes qmail to get user's account information from an LDAP database. However, the need for creating ldiff files makes life difficult for qmail-ldap users. We have preapared several binaries for manipulating qmail-ldap users. For the domain entries, objectlclass hierarchy is: top organizationalUnit For user entries, objectclass hierarchy is: top person qmailUser We take mail attribute as our unique identifier. uid attribute is just the same value as mail. Thus our ldap entry is something like: dn: tosbi@aliveli.com, ou=aliveli.com, dc=enderunix, dc=org an ldiff output for a user created by QLDAPADMIN for user roots@enderunix.org objectClass : top person qmailUser sn : Enderunix Team cn : Enderunix Team uid : roots@enderunix.org mail : roots@enderunix.org mailMessageStore : roots@enderunix.org userPassword : {crypt}4tG5TRjVMiM.k mailAlternateAddress : admin@enderunix.org root@enderunix.org mailHost : freefall.enderunix.net qmailDotMode : both deliveryMode : normal mailReplyText : Hi From Enderunix Team accountStatus : active For name and surname stuff, we use cn and sn attributes. For installation and usage see INSTALL file. There are some manual pages for you to peek at. Please send your feedback and bug-reports to: roots@enderunix.org This is Release Candidate 1. As explained above, our objectclass hiearachy is: top,organizationalUnit,qmailUser However, if you feel that there are other objectclass hiearachies common, you may send them to roots@enderunix.org Qt is a trademark of Trolltech. Visit: http://www.trolltech.com Sun is a registered trademark of Sun Microsystems Visit: http:/www.sun.com Solaris is a registered trademart of Sun Microsystems Visit: http:/www.sun.com Linux is a trademark of Linux Torvalds Visit: http:/www.linux.org FreeBSD is trademark of FreeBSD Foundation Visit: http:/www.freebsd.org (c) 2001, EnderUNIX Software Development Team @ Istanbul, Turkiye http://www.EnderUNIX.org/ mailto:roots@enderunix.org Mon Dec 4 01:56:09 GMT 2001 qldapadmin-1.0-RC1/THANKS0100644000175000000000000000044307556436222014000 0ustar muratwheel Huseyin YUCE for supplying us the necessary testing environment Benjamin Smith for notifying a Documentation mistake Gianluca Marcari for the patch that corrects qlistusers segfault, and Makefile.Solaris qldapadmin-1.0-RC1/TODO0100644000175000000000000000041507403120364013540 0ustar muratwheelTODO ==== * Fix bugs * Add more customization * Add MailAlternateAddress and MailForwardingAddress support in GUI (c) 2001, EnderUNIX Software Development Team @ Istanbul, Turkiye http://www.EnderUNIX.org/ mailto:roots@enderunix.org Mon Dec 4 01:56:20 GMT 2001 qldapadmin-1.0-RC1/ld.txt0100644000175000000000000000014107400123262014201 0ustar muratwheel# change "dc=enderunix ,dc=org" value with your basedn dn: dc=enderunix, dc=org objectclass: top qldapadmin-1.0-RC1/src/0040755000175000000000000000000007556437305013661 5ustar muratwheelqldapadmin-1.0-RC1/src/EnderLDAP.cpp0100644000175000000000000011224707556437257016075 0ustar muratwheel/* * LDAP Base Class, Member Implementations * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include #include #include #include #include #include #include #include #include "LDAPException.h" #include "EnderLDAP.h" #include "QmailUser.h" #include "QmailDomain.h" #include "qconfig.h" #include "cfgfile.h" #if defined SOLARIS #include #endif // This is needed for us to control loops bool control_loop ( int choice, char * choices ) { int i = 0; while (choices[i] != '\0') { if (choice == choices[i]) return true; i++; } return false; } // end of control_loop EnderLDAP::EnderLDAP ( char * hostname , int port ) { hostname = NULL; port = 0; cfg = new ConfigFile(); this->ld = ldap_init (cfg->ldap_server, atoi(cfg->ldap_port) ); basedn =cfg->ldap_basedn; } EnderLDAP::~EnderLDAP () { ldap_unbind_s ( this->ld ); } LDAP* EnderLDAP::getSessionHandle() const { return this->ld; } int EnderLDAP::bind() { if ( ldap_simple_bind_s ( this->ld, cfg->ldap_user, cfg->ldap_password ) == LDAP_SUCCESS ) return LDAP_SUCCESS; else return -1; } int EnderLDAP::AddDomain ( QmailDomain *domain ) { char finaldn[MAXDNSIZE]; LDAPMod **lmod = NULL; lmod = (LDAPMod **)malloc(sizeof(LDAPMod *) * 3 ); lmod[0] = (LDAPMod *)malloc(sizeof(LDAPMod)); lmod[1] = (LDAPMod *)malloc(sizeof(LDAPMod)); lmod[2] = (LDAPMod *)malloc(sizeof(LDAPMod)); lmod[3] = NULL; memset((LDAPMod *)lmod[0], 0, sizeof(LDAPMod)); memset((LDAPMod *)lmod[1], 0, sizeof(LDAPMod)); memset((LDAPMod *)lmod[2], 0, sizeof(LDAPMod)); lmod[0]->mod_op = LDAP_MOD_ADD; lmod[1]->mod_op = LDAP_MOD_ADD; lmod[2]->mod_op = LDAP_MOD_ADD; lmod[0]->mod_type = strdup("objectclass"); lmod[1]->mod_type = strdup("ou"); lmod[2]->mod_type = strdup("description"); lmod[0]->mod_values = (char **) malloc(sizeof(char *) * 3 ); lmod[1]->mod_values = (char **) malloc(sizeof(char *) * 2 ); lmod[2]->mod_values = (char **) malloc(sizeof(char *) * 2 ); lmod[0]->mod_values[2] = NULL; lmod[1]->mod_values[1] = NULL; lmod[2]->mod_values[1] = NULL; LowerCase(domain->getOu()); /* make lowercase domainname */ lmod[0]->mod_values[0] = strdup("top"); lmod[0]->mod_values[1] = strdup("organizationalUnit"); lmod[1]->mod_values[0] = strdup (domain->getOu()); lmod[2]->mod_values[0] = strdup (domain->getDescription()); snprintf(finaldn, MAXDNSIZE, "ou=%s, %s", domain->getOu(), basedn); if (ldap_add_s ( ld, finaldn, lmod ) == LDAP_SUCCESS ) return LDAP_SUCCESS; else return -1; } /* AddDomain ends here */ int EnderLDAP::DeleteDomain(const char * domain ) { char finaldn[MAXDNSIZE]; snprintf(finaldn, MAXDNSIZE, "ou=%s, %s", domain, basedn); if (ldap_delete_s(ld, finaldn) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } /* Add Qmail User */ int EnderLDAP::DeleteUser ( QmailUser * user ) { char finaldn[MAXDNSIZE]; snprintf(finaldn, MAXDNSIZE, "cn=%s,ou=%s, %s",user->getMail(), user->getDomain(), basedn); if(ldap_delete_s ( ld, finaldn ) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } //DeleteUser ends here int EnderLDAP::DeleteUser (const char *uid, const char *domain ) { char finaldn[MAXDNSIZE]; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", uid, domain, basedn); if ( ldap_delete_s ( ld, finaldn ) == LDAP_SUCCESS ) return LDAP_SUCCESS; else return -1; } int EnderLDAP::DumpUserInfo(QmailUser * user) { int error, entriesCount; LDAPMessage *entry, *result_identifier; BerElement *ber; char *attribute, **values; char finaldn[MAXDNSIZE]; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s",user->getMail(), user->getDomain(), basedn); error = ldap_search_s(ld, finaldn, LDAP_SCOPE_SUBTREE, "objectclass=*", NULL, 0, &result_identifier); entriesCount = ldap_count_entries(ld, result_identifier); if (entriesCount == 0) return -1; cout <<"Entries Found: " < 0) { cout <getDomain(); qmailuser = user->getMail(); LDAPMod top; LDAPMod uid; LDAPMod cn; LDAPMod sn; LDAPMod mail; LDAPMod mailMessageStore; LDAPMod homeDirectory; LDAPMod userPassword; LDAPMod mailAlternateAddress; LDAPMod mailHost; LDAPMod mailQuota; LDAPMod mailForwardingAddress; LDAPMod deliveryProgramPath; LDAPMod qmailDotMode; LDAPMod deliveryMode; LDAPMod mailReplyText; LDAPMod accountStatus; char * top_values[4]; char * uid_values[2]; char * cn_values[2]; char * sn_values[2]; char * mail_values[2]; char * mailMessageStore_values[2]; char * homeDirectory_values[2]; char * userPassword_values[2]; char * mailAlternateAddress_values[MAXALTERNATES+2]; char * mailHost_values[2]; char * mailQuota_values[2]; char * mailForwardingAddress_values[MAXFORWARDS+2]; char * deliveryProgramPath_values[2]; char * qmailDotMode_values[2]; char * deliveryMode_values[2]; char * mailReplyText_values[2]; char * accountStatus_values[2]; /* Adding top value to the array */ top_values[0] ="top"; top_values[1] ="person"; top_values[2] ="qmailUser"; top_values[3] = NULL; top.mod_op = LDAP_MOD_ADD; top.mod_type = "objectclass"; top.mod_values = top_values; user_attributes[idx++] = ⊤ /* Adding sn value to the array */ if (user->getCn()[0] != 0) { sn_values[0] = strdup(user->getCn()); sn_values[1] = NULL; sn.mod_op = LDAP_MOD_ADD; sn.mod_type = "sn"; sn.mod_values = sn_values; user_attributes[idx++] = &sn; } /* Adding cn value to the array */ if (user->getCn()[0] != 0) { cn_values[0] = strdup(user->getCn()) ; cn_values[1] = NULL; cn.mod_op = LDAP_MOD_ADD; cn.mod_type = "cn"; cn.mod_values = cn_values; user_attributes[idx++] = &cn; } /* Adding uid value to the array */ uid_values[0] = strdup(user->getMail()); uid_values[1] = NULL; uid.mod_op = LDAP_MOD_ADD; uid.mod_type = "uid"; uid.mod_values = uid_values; user_attributes[idx++] = &uid; /* Adding mail value to the array */ mail_values[0] = strdup(user->getMail()); mail_values[1] = NULL; mail.mod_op = LDAP_MOD_ADD; mail.mod_type = "mail"; mail.mod_values = mail_values; user_attributes[idx++] = & mail; /* Adding mailMessageStore value to the array */ if (user->getMailMessageStore()[0] != 0) { mailMessageStore_values[0] = strdup(user->getMailMessageStore()) ; mailMessageStore_values[1] = NULL; mailMessageStore.mod_op = LDAP_MOD_ADD; mailMessageStore.mod_type = "mailMessageStore"; mailMessageStore.mod_values = mailMessageStore_values; user_attributes[idx++] = &mailMessageStore; } /* Adding homeDirectory value to the array */ if (user->getHomeDirectory()[0] != 0) { homeDirectory_values[0] = strdup(user->getHomeDirectory()); homeDirectory_values[1] = NULL; homeDirectory.mod_op = LDAP_MOD_ADD; homeDirectory.mod_type = "homeDirectory"; homeDirectory.mod_values = homeDirectory_values; user_attributes[idx++] = &homeDirectory; } /* Adding userPassword value to the array */ if (user->getUserPassword()[0] != 0) { userPassword_values[0] = strdup(user->getUserPassword()); userPassword_values[1] = NULL; userPassword.mod_op = LDAP_MOD_ADD; userPassword.mod_type = "userPassword"; userPassword.mod_values = userPassword_values; user_attributes[idx++] = &userPassword; } i = 0; if (user->getMailAlternateAddress(i) != NULL) { while (user->getMailAlternateAddress(i) != NULL) { mailAlternateAddress_values[i] = strdup(user->getMailAlternateAddress(i)); i++; } mailAlternateAddress_values[i] = NULL; mailAlternateAddress.mod_op = LDAP_MOD_ADD; mailAlternateAddress.mod_type = "mailAlternateAddress"; mailAlternateAddress.mod_values = mailAlternateAddress_values; user_attributes[idx++] = &mailAlternateAddress; } /* Adding mailHost value to the array */ if (user->getMailHost()[0] != 0) { mailHost_values[0] = strdup(user->getMailHost()); mailHost_values[1] = NULL; mailHost.mod_op = LDAP_MOD_ADD; mailHost.mod_type = "mailHost"; mailHost.mod_values = mailHost_values; user_attributes[idx++] = &mailHost; } /* Adding mailQuota value to the array */ if (user->getMailQuota()[0] != 0) { mailQuota_values[0] = user->getMailQuota(); mailQuota_values[1] = NULL; mailQuota.mod_op = LDAP_MOD_ADD; mailQuota.mod_type = strdup("mailQuota"); mailQuota.mod_values = mailQuota_values; user_attributes[idx++] = &mailQuota; } /* Adding mailForwardingAddress value to the array */ i = 0; if (user->getMailForwardingAddress(i) != NULL) { while (user->getMailForwardingAddress(i) != NULL) { mailForwardingAddress_values[i] = strdup ( user->getMailForwardingAddress(i)); i++; } mailForwardingAddress_values[i] = NULL; mailForwardingAddress.mod_op = LDAP_MOD_ADD; mailForwardingAddress.mod_type = "mailForwardingAddress"; mailForwardingAddress.mod_values = mailForwardingAddress_values; user_attributes[idx++] = &mailForwardingAddress; } /* Adding deliveryProgramPath value to the array */ if (user->getDeliveryProgramPath()[0] != 0) { deliveryProgramPath_values[0] = strdup(user->getDeliveryProgramPath()); deliveryProgramPath_values[1] = NULL; deliveryProgramPath.mod_op = LDAP_MOD_ADD; deliveryProgramPath.mod_type = "deliveryProgramPath"; deliveryProgramPath.mod_values = deliveryProgramPath_values; user_attributes[idx++] = &deliveryProgramPath; } /* Adding qmailDotMode value to the array */ if (user->getQmailDotMode()[0] != 0) { qmailDotMode_values[0] = strdup(user->getQmailDotMode()); qmailDotMode_values[1] = NULL; qmailDotMode.mod_op = LDAP_MOD_ADD; qmailDotMode.mod_type = "qmailDotMode"; qmailDotMode.mod_values = qmailDotMode_values; user_attributes[idx++] = &qmailDotMode; } /* Adding deliveryMode value to the array */ if (user->getDeliveryMode()[0] != 0) { deliveryMode_values[0] = strdup(user->getDeliveryMode()); deliveryMode_values[1] = NULL; deliveryMode.mod_op = LDAP_MOD_ADD; deliveryMode.mod_type = "deliveryMode"; deliveryMode.mod_values = deliveryMode_values; user_attributes[idx++] = &deliveryMode; } /* Adding mailReplyText value to the array */ if (user->getMailReplyText()[0] != 0) { mailReplyText_values[0] = strdup (user->getMailReplyText()); mailReplyText_values[1] = NULL; mailReplyText.mod_op = LDAP_MOD_ADD; mailReplyText.mod_type = "mailReplyText"; mailReplyText.mod_values = mailReplyText_values; user_attributes[idx++] = &mailReplyText; } /* Adding accountStatus value to the array */ if (user->getAccountStatus()[0] != 0) { accountStatus_values[0] = strdup(user->getAccountStatus()); accountStatus_values[1] = NULL; accountStatus.mod_op = LDAP_MOD_ADD; accountStatus.mod_type = "accountStatus"; accountStatus.mod_values = accountStatus_values; user_attributes[idx++] = &accountStatus; } user_attributes[idx] = NULL; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", qmailuser, qmaildomain, basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes)== LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } /* AddUser Function ends here */ int EnderLDAP::ModifyUser( QmailUser * user, int op) { char finaldn[MAXDNSIZE]; int idx=0; int i; qmaildomain = user->getDomain(); qmailuser = user->getMail(); LDAPMod cn; LDAPMod sn; LDAPMod mailMessageStore; LDAPMod homeDirectory; LDAPMod mailHost; LDAPMod mailQuota; LDAPMod deliveryProgramPath; LDAPMod qmailDotMode; LDAPMod deliveryMode; LDAPMod mailReplyText; LDAPMod accountStatus; LDAPMod mailAlternateAddress; LDAPMod mailForwardingAddress; char * cn_values[2]; char * sn_values[2]; char * mailMessageStore_values[2]; char * homeDirectory_values[2]; char * mailHost_values[2]; char * mailQuota_values[2]; char * deliveryProgramPath_values[2]; char * qmailDotMode_values[2]; char * deliveryMode_values[2]; char * mailReplyText_values[2]; char * accountStatus_values[2]; char * mailAlternateAddress_values[MAXALTERNATES + 1]; char * mailForwardingAddress_values[MAXFORWARDS + 1]; /* Adding sn value to the array */ if (user->getCn()[0] != 0) { sn_values[0] = strdup(user->getCn()); sn_values[1] = NULL; sn.mod_op = LDAP_MOD_REPLACE; sn.mod_type = "sn"; sn.mod_values = sn_values; user_attributes[idx++] = &sn; } /* Adding cn value to the array */ if (user->getCn()[0] != 0){ cn_values[0] = strdup(user->getCn()); cn_values[1] = NULL; cn.mod_op = LDAP_MOD_REPLACE; cn.mod_type = "cn"; cn.mod_values = cn_values; user_attributes[idx++] = &cn; } /* Adding mailMessageStore value to the array */ if (user->getMailMessageStore()[0] != 0) { mailMessageStore_values[0] = strdup(user->getMailMessageStore()); mailMessageStore_values[1] = NULL; mailMessageStore.mod_op = LDAP_MOD_REPLACE; mailMessageStore.mod_type = "mailMessageStore"; mailMessageStore.mod_values = mailMessageStore_values; user_attributes[idx++] = &mailMessageStore; } /* Adding homeDirectory value to the array */ if (user->getHomeDirectory()[0] != 0) { if (op == 'D') { homeDirectory_values[0] = NULL; homeDirectory.mod_op = LDAP_MOD_DELETE; } else { homeDirectory_values[0] = strdup(user->getHomeDirectory()); homeDirectory_values[1] = NULL; homeDirectory.mod_op = LDAP_MOD_REPLACE; } homeDirectory.mod_type = "homeDirectory"; homeDirectory.mod_values = homeDirectory_values; user_attributes[idx++] = &homeDirectory; } /* Adding mailHost value to the array */ if (user->getMailHost()[0] != 0) { if (op == 'D') { mailHost_values[0] = NULL; mailHost.mod_op = LDAP_MOD_DELETE; } else { mailHost_values[0] = strdup(user->getMailHost()); mailHost_values[1] = NULL; mailHost.mod_op = LDAP_MOD_REPLACE; } mailHost.mod_type = "mailHost"; mailHost.mod_values = mailHost_values; user_attributes[idx++] = &mailHost; } /* Adding mailQuota value to the array */ if (user->getMailQuota()[0] != 0) { if (op == 'D') { mailQuota_values[0] = NULL; mailQuota.mod_op = LDAP_MOD_DELETE; } else { mailQuota_values[0] = strdup(user->getMailQuota()); mailQuota_values[1] = NULL; mailQuota.mod_op = LDAP_MOD_REPLACE; } mailQuota.mod_type = "mailQuota"; mailQuota.mod_values = mailQuota_values; user_attributes[idx++] = &mailQuota; } /* Adding deliveryProgramPath value to the array */ if (user->getDeliveryProgramPath()[0] != 0) { if (op == 'D') { deliveryProgramPath_values[0] = NULL; deliveryProgramPath.mod_op = LDAP_MOD_DELETE; } else { deliveryProgramPath_values[0] = strdup(user->getDeliveryProgramPath()); deliveryProgramPath_values[1] = NULL; deliveryProgramPath.mod_op = LDAP_MOD_REPLACE; } deliveryProgramPath.mod_type = "deliveryProgramPath"; deliveryProgramPath.mod_values = deliveryProgramPath_values; user_attributes[idx++] = &deliveryProgramPath; } i = 0; if (user->getMailForwardingAddress(i) != NULL) { while (user->getMailForwardingAddress(i) != NULL) { mailForwardingAddress_values[i] = strdup ( user->getMailForwardingAddress(i)); i++; } mailForwardingAddress_values[i] = NULL; if (op == 'D') mailForwardingAddress.mod_op = LDAP_MOD_DELETE; else mailForwardingAddress.mod_op = LDAP_MOD_REPLACE; mailForwardingAddress.mod_type = "mailForwardingAddress"; mailForwardingAddress.mod_values = mailForwardingAddress_values; user_attributes[idx++] = &mailForwardingAddress; } /* Adding qmailDotMode value to the array */ if (user->getQmailDotMode()[0] != 0) { qmailDotMode_values[0] = strdup(user->getQmailDotMode()); qmailDotMode_values[1] = NULL; qmailDotMode.mod_op = LDAP_MOD_REPLACE; qmailDotMode.mod_type = "qmailDotMode"; qmailDotMode.mod_values = qmailDotMode_values; user_attributes[idx++] = &qmailDotMode; } /* Adding deliveryMode value to the array */ if (user->getDeliveryMode()[0] != 0) { deliveryMode_values[0] = strdup(user->getDeliveryMode()); deliveryMode_values[1] = NULL; deliveryMode.mod_op = LDAP_MOD_REPLACE; deliveryMode.mod_type = "deliveryMode"; deliveryMode.mod_values = deliveryMode_values; user_attributes[idx++] = &deliveryMode; } /* Adding mailReplyText value to the array */ if (user->getMailReplyText()[0] != 0) { if (op == 'D') { mailReplyText_values[0] = NULL; mailReplyText.mod_op = LDAP_MOD_DELETE; } else { mailReplyText_values[0] = strdup(user->getMailReplyText()); mailReplyText_values[1] = NULL; mailReplyText.mod_op = LDAP_MOD_REPLACE; } mailReplyText.mod_type = "mailReplyText"; mailReplyText.mod_values = mailReplyText_values; user_attributes[idx++] = &mailReplyText; } /* Adding accountStatus value to the array */ if (user->getAccountStatus()[0] != 0) { accountStatus_values[0] = strdup(user->getAccountStatus()); accountStatus_values[1] = NULL; accountStatus.mod_op = LDAP_MOD_REPLACE; accountStatus.mod_type = "accountStatus"; accountStatus.mod_values = accountStatus_values; user_attributes[idx++] = &accountStatus; } user_attributes[idx] = NULL ; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s",qmailuser, qmaildomain, basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } bool EnderLDAP::isExistDomain(const char * domain) { int error, entriesCount; LDAPMessage *result_identifier; char finaldn[MAXDNSIZE]; snprintf(finaldn, MAXDNSIZE, "ou=%s, %s", domain, basedn); error = ldap_search_s(ld, finaldn, LDAP_SCOPE_BASE, "objectclass=*", NULL, 0, &result_identifier); entriesCount = ldap_count_entries(ld, result_identifier); if (entriesCount == 0) return false; else return true; } /* Method isExistDomain ends here */ bool EnderLDAP::isExistUser(QmailUser * user) { char finaldn[MAXDNSIZE]; int error, entriesCount; LDAPMessage *result_identifier; snprintf(finaldn, MAXDNSIZE, "cn=%s,ou=%s, %s", user->getMail(),user->getDomain(), basedn); error = ldap_search_s(ld, finaldn, LDAP_SCOPE_BASE, "objectclass=qmailUser", NULL, 0, &result_identifier); entriesCount = ldap_count_entries(ld, result_identifier); if (entriesCount == 0) //if user is not found return false; else return true; } /* Method isExistUser ends here */ QmailUser * EnderLDAP::ReturnUserAttribs(char * tmpmail) { QmailUser * user = new QmailUser(tmpmail); int error, entriesCount, i; char finaldn[MAXDNSIZE]; LDAPMessage *entry, *result_identifier; BerElement *ber; char *attribute, **values; char *maa[MAXALTERNATES + 1]; char *mfa[MAXFORWARDS + 1]; for (i = 0; i < MAXFORWARDS + 1; i++) maa[i] = NULL; for (i = 0; i < MAXALTERNATES + 1; i++) mfa[i] = NULL; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s",user->getMail(), user->getDomain(), basedn); error = ldap_search_s(ld, finaldn, LDAP_SCOPE_SUBTREE, "objectclass=*", NULL, 0, &result_identifier); if ((entriesCount = ldap_count_entries(ld, result_identifier)) == 0) return 0; for (entry = ldap_first_entry(ld, result_identifier); entry != NULL; entry = ldap_next_entry(ld, entry)) { for (attribute = ldap_first_attribute(ld, entry, &ber); attribute != NULL; attribute = ldap_next_attribute(ld, entry, ber)) { #ifdef DEBUG cout <setCn(values[0]); } else if (strcmp(attribute, "mailHost") == 0) { values = ldap_get_values(ld, entry, attribute); user->setMailHost(values[0]); } else if (strcmp(attribute, "cn") == 0) { values = ldap_get_values(ld, entry, attribute); user->setCn(values[0]); } else if (strcmp(attribute, "mailMessageStore") == 0) { values = ldap_get_values(ld, entry, attribute); user->setMailMessageStore(values[0]); } else if (strcmp(attribute, "mailQuota") == 0) { values = ldap_get_values(ld, entry, attribute ); user->setMailQuota(values[0]); } else if (strcmp(attribute, "deliveryProgramPath")==0) { values = ldap_get_values(ld, entry, attribute); user->setDeliveryProgramPath(values[0]); } else if (strcmp(attribute, "qmailDotMode") == 0) { values = ldap_get_values(ld, entry, attribute); user->setQmailDotMode(values[0]); } else if (strcmp(attribute, "deliveryMode") == 0) { values = ldap_get_values(ld, entry, attribute); user->setDeliveryMode(values[0]); } else if (strcmp(attribute, "mailReplyText") == 0) { values = ldap_get_values(ld, entry, attribute); user->setMailReplyText(values[0]); } else if (strcmp(attribute, "accountStatus") == 0) { values = ldap_get_values(ld, entry, attribute); user->setAccountStatus(values[0]); } else if (strcmp(attribute, "homeDirectory") == 0) { values = ldap_get_values(ld, entry, attribute); user->setHomeDirectory(values[0]); } else if (strcmp(attribute, "mailAlternateAddress") == 0) { values = ldap_get_values(ld, entry, attribute); for (i = 0; values[i] != NULL; i++) { maa[i] = (char *)malloc(MAXBUFSIZ); strncpy(maa[i], values[i], MAXBUFSIZ); } user->setMailAlternateAddress(maa); } if (strcmp(attribute, "mailForwardingAddress") == 0) { values = ldap_get_values(ld, entry, attribute); for (i = 0; values[i] != NULL; i++) { mfa[i] = (char *)malloc(MAXBUFSIZ); strncpy(mfa[i], values[i], MAXBUFSIZ); } user->setMailForwardingAddress(mfa); } else { values = ldap_get_values ( ld, entry, attribute ); #ifdef DEBUG cout << "Value: " << values[0] << endl; #endif } ldap_value_free(values); } } /* big for ends here */ return user; } int EnderLDAP::ChangeUserPassword (QmailUser * user) { int idx=0; char finaldn[MAXDNSIZE]; LDAPMod userPassword ; char * userPassword_values[2]; if (user->getUserPassword() != NULL ) { userPassword_values[0] =strdup ( user->getUserPassword() ); userPassword_values[1] = NULL ; userPassword.mod_op = LDAP_MOD_REPLACE ; userPassword.mod_type = "userPassword" ; userPassword.mod_values = userPassword_values ; user_attributes[idx++] = &userPassword ; } user_attributes[idx] = NULL ; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", user->getMail(), user->getDomain(), basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes ) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } //ChangeUserPassword ends int EnderLDAP::SetUserQuota (QmailUser * user) { int idx = 0; char finaldn[MAXDNSIZE]; LDAPMod mailQuota ; char * mailQuota_values[2]; if (user->getMailQuota() != NULL) { mailQuota_values[0] =strdup(user->getMailQuota() ); mailQuota_values[1] = NULL; mailQuota.mod_op = LDAP_MOD_REPLACE; mailQuota.mod_type = "mailQuota"; mailQuota.mod_values = mailQuota_values; user_attributes[idx++] = &mailQuota; } user_attributes[idx] = NULL ; sprintf(finaldn,"cn=%s, ou=%s, %s",user->getMail() , user->getDomain() , basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes ) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } /* ChangeUserPassword ends */ int EnderLDAP::ChangeUserMailHost (QmailUser * user) { int idx=0; char finaldn[MAXDNSIZE]; LDAPMod mailHost ; char * mailHost_values[2]; if (user->getMailHost() != NULL ) { mailHost_values[0] =strdup ( user->getMailHost() ); mailHost_values[1] = NULL ; mailHost.mod_op = LDAP_MOD_REPLACE ; mailHost.mod_type = "mailHost" ; mailHost.mod_values = mailHost_values ; user_attributes[idx++] = &mailHost ; } user_attributes[idx] = NULL ; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", user->getMail(), user->getDomain(), basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } /* ChangeMailHost() ends here */ void EnderLDAP::ListDomains() { int error, entriesCount, must_free_values; int numOfDomains = 0; LDAPMessage *entry, *result_identifier; BerElement *ber; char *attribute, **values; error = ldap_search_s(ld, basedn, LDAP_SCOPE_ONELEVEL, "objectclass=*", NULL, 0, &result_identifier); if ((entriesCount = ldap_count_entries(ld, result_identifier)) == 0) { cout <<"Currently No Domains available \n"; exit(0); } for (entry = ldap_first_entry(ld, result_identifier); entry != NULL; entry = ldap_next_entry(ld, entry)) { for (attribute = ldap_first_attribute(ld, entry, &ber); attribute != NULL; attribute = ldap_next_attribute(ld, entry, ber)) { must_free_values=0; cout.setf (ios::right || ios::adjustfield); if(strcmp(attribute,"ou")==0) { must_free_values=1; values=ldap_get_values(ld,entry,attribute); cout <<"Domain: "<< values[0] ; numOfDomains++; } else if(strcmp(attribute,"description")==0) { must_free_values=1; values=ldap_get_values(ld,entry,attribute); cout << "\n" << setw(10)<<"( "<= 255) return; /* if mail is specified */ if (mail != NULL) { if ((strcmp(email, mail) == 0) && (write == false)) { write = true; tmp = new QmailUser(email); tmp->setCn(cn); usr[written] = tmp; ldap_value_free(values); //free values written++; } else if (write == true) { tmp = new QmailUser(email); tmp->setCn(cn); usr[written] = tmp; ldap_value_free(values); //free values written++; } } else { tmp = new QmailUser(email); tmp->setCn(cn); usr[i] = tmp; ldap_value_free(values); //free values written++; } } /* for entry ends */ } void EnderLDAP::FindDomainUser (const char * mail, const char * domain, QmailUser *usr[]) { int error, entriesCount, i, numOfUsers = 0; char *attribute, **values; char email[BUFSIZ], cn[BUFSIZ]; LDAPMessage *entry, *result_identifier; BerElement *ber; QmailUser *tmp; char finaldn[MAXDNSIZE]; cout << "\nListing users for " << mail << "--" << domain << "...\n\n"; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s",mail, domain, basedn); error = ldap_search_s(ld, finaldn, LDAP_SCOPE_SUBTREE, "objectclass=qmailUser", NULL, 0, &result_identifier); if ((entriesCount = ldap_count_entries(ld, result_identifier)) == 0) { usr[0] = NULL; return; } i = 0; bzero(email, BUFSIZ); bzero(cn, BUFSIZ); for (entry = ldap_first_entry(ld, result_identifier); entry != NULL; i++, entry = ldap_next_entry(ld, entry)) { for (attribute = ldap_first_attribute(ld, entry, &ber); attribute != NULL; attribute = ldap_next_attribute(ld, entry, ber)) { if(strcmp(attribute,"cn")==0) { values=ldap_get_values(ld,entry,attribute); strncpy(cn, values[0], BUFSIZ); cout <<"User: "<< values[0]; } else if(strcmp(attribute,"uid")==0) { values=ldap_get_values(ld,entry,attribute); strncpy(email, values[0], BUFSIZ); cout <<"\n"<setCn(cn); usr[i] = tmp; ldap_value_free(values); //free values } /* for entry ends */ cout <<"Totaly "<getMailMessageStore() != NULL) { maildir_values[0] =strdup(user->getMailMessageStore()); maildir_values[1] = NULL; maildir.mod_op = LDAP_MOD_REPLACE; maildir.mod_type = "mailMessageStore"; maildir.mod_values = maildir_values; user_attributes[idx++] = &maildir; } user_attributes[idx] = NULL; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s",user->getMail(), user->getDomain(), basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } int EnderLDAP::ChangeUserAcctStatus (QmailUser * user) { int idx = 0; char finaldn[MAXDNSIZE]; LDAPMod acctstatus ; char * acctstatus_values[2]; if (user->getAccountStatus() != NULL) { acctstatus_values[0] =strdup(user->getAccountStatus()); acctstatus_values[1] = NULL; acctstatus.mod_op = LDAP_MOD_REPLACE; acctstatus.mod_type = "accountStatus"; acctstatus.mod_values = acctstatus_values; user_attributes[idx++] = &acctstatus; } user_attributes[idx] = NULL; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", user->getMail(), user->getDomain(), basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } int EnderLDAP::ChangeUserDeliveryMode(QmailUser * user) { int idx = 0; char finaldn[MAXDNSIZE]; LDAPMod deliveryMode; char * deliveryMode_values[2]; if (user->getDeliveryMode() != NULL) { deliveryMode_values[0] = strdup(user->getDeliveryMode()); deliveryMode_values[1] = NULL; deliveryMode.mod_op = LDAP_MOD_REPLACE; deliveryMode.mod_type = "deliveryMode"; deliveryMode.mod_values = deliveryMode_values; user_attributes[idx++] = &deliveryMode; } user_attributes[idx] = NULL; snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", user->getMail(), user->getDomain(), basedn); if (ldap_modify_s( this->ld, finaldn, user_attributes) == LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } void EnderLDAP::LowerCase ( char *string ) { for (; *string != 0; ++string ) if(isupper(*string)) *string = tolower(*string); } int EnderLDAP::AddDelMailForwardingAddress(QmailUser *user, int action ) { LDAPMod mFA; /* mail Forwarding Address */ int idx = 0; char * mFA_values[2]; char finaldn[MAXDNSIZE]; qmaildomain = user->getDomain(); qmailuser = user->getMail(); //if (user->getMailForwardingAddress(0) != NULL) { mFA_values[0] = strdup(user->getMailForwardingAddress(0)); mFA_values[1] = NULL; if (action == 0) mFA.mod_op = LDAP_MOD_ADD; else mFA.mod_op = LDAP_MOD_DELETE; mFA.mod_type = "mailForwardingAddress"; mFA.mod_values = mFA_values; user_attributes[idx++] = &mFA; user_attributes[idx] = NULL; //} snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", qmailuser, qmaildomain, basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes)== LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } int EnderLDAP::AddDelMailAlternateAddress(QmailUser *user, int action ) { LDAPMod mAA; /* mail Alternate Address */ int idx = 0; char * mAA_values[2]; char finaldn[MAXDNSIZE]; qmaildomain = user->getDomain(); qmailuser = user->getMail(); //if (user->getMailForwardingAddress(0) != NULL) { mAA_values[0] = strdup(user->getMailAlternateAddress(0)); mAA_values[1] = NULL; if (action == 0) mAA.mod_op = LDAP_MOD_ADD; else mAA.mod_op = LDAP_MOD_DELETE; mAA.mod_type = "mailAlternateAddress"; mAA.mod_values = mAA_values; user_attributes[idx++] = &mAA; user_attributes[idx] = NULL; //} snprintf(finaldn, MAXDNSIZE, "cn=%s, ou=%s, %s", qmailuser, qmaildomain, basedn); #ifdef DEBUG cout <<"final " <ld, finaldn, user_attributes)== LDAP_SUCCESS) return LDAP_SUCCESS; else return -1; } qldapadmin-1.0-RC1/src/EnderLDAP.h0100644000175000000000000000324607402662235015522 0ustar muratwheel/* * LDAP Base Class, Member Definitions * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #ifndef ENDERLDAP_H #define ENDERLDAP_H #include #include "QmailUser.h" #include "QmailDomain.h" #include "cfgfile.h" bool control_loop ( int, char * ); class EnderLDAP { public: EnderLDAP(char * ="localhost",int =389); ~EnderLDAP(); LDAP * getSessionHandle() const; //int bind ( char * , char * ); int bind(); int AddDomain(QmailDomain *); int AddUser(QmailUser *); int ChangeUserPassword(QmailUser *); int ChangeUserMailHost(QmailUser *); int ChangeUserMaildir(QmailUser *); int ChangeUserAcctStatus(QmailUser *); int ChangeUserDeliveryMode(QmailUser *); int DeleteDomain(const char *); int DeleteUser(QmailUser *); int DeleteUser(const char *, const char *); int DumpUserInfo(QmailUser *); int DeleteEntireDomain(const char *); int ModifyUser(QmailUser *, int); int Search(QmailUser *); int SetUserQuota(QmailUser *); int AddDelMailForwardingAddress(QmailUser *, int); int AddDelMailAlternateAddress(QmailUser *, int); void FindDomainUser (const char *, const char *, QmailUser **); void ListDomains(); void ListDomains_(QmailDomain **); void ListDomainUsers(char *); void ListDomainUsers_(const char *, char *, QmailUser **); void LowerCase(char *); bool isExistDomain(const char *); bool isExistUser(QmailUser *); QmailUser * ReturnUserAttribs(char *); ConfigFile *cfg; private: LDAP *ld; LDAPMod * domain_attributes[100]; LDAPMod * user_attributes[100]; char *basedn; char * qmailuser; char * qmaildomain; }; #endif qldapadmin-1.0-RC1/src/LDAPException.cpp0100644000175000000000000000213607400123262016741 0ustar muratwheel/* * LDAP Exception Class, Member Implementations * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include "LDAPException.h" LDAPException::LDAPException(int res_code, char *err_string=0){ m_res_code=res_code; m_res_string=ldap_err2string(res_code); if(err_string != 0) m_err_string=strdup(err_string); else m_err_string=0; } LDAPException::LDAPException(const EnderLDAP *lc){ m_err_string=0; m_res_string=0; LDAP *l = lc->getSessionHandle(); ldap_get_option(l,LDAP_OPT_ERROR_NUMBER,&m_res_code); m_res_string=ldap_err2string(m_res_code); ldap_get_option(l,LDAP_OPT_ERROR_STRING,&m_err_string); } int LDAPException::getResultCode() { return m_res_code; } char* LDAPException::getResultMsg() { return strdup(m_res_string); } ostream& operator << (ostream& s, LDAPException e){ s << "Error " << e.m_res_code << ": " << e.m_res_string; if (e.m_err_string != 0) s << endl << "additional info: " << e.m_err_string ; return s; } qldapadmin-1.0-RC1/src/LDAPException.h0100644000175000000000000000124407400123262016405 0ustar muratwheel/* * LDAP Exception Class, Member Definitions * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #ifndef LDAP_EXCEPTION_H #define LDAP_EXCEPTION_H #include #include "EnderLDAP.h" class LDAPException{ private : int m_res_code; int m_custom_res_code; char* m_res_string; char* m_err_string; public : LDAPException(int res_code ); LDAPException(int res_code, char *err_string=0); LDAPException(const EnderLDAP *lc); int getResultCode(); char* getResultMsg(); friend ostream& operator << (ostream &s, LDAPException e); }; #endif //LDAP_EXCEPTION_H qldapadmin-1.0-RC1/src/Makefile0100644000175000000000000000507607403127030015304 0ustar muratwheel SH = /bin/sh CC = g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin MANDIR = /usr/share/man/man1 OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o cfgfile.o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o ../bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddforward addforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelforward delforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddaltaddr addaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelaltaddr delaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetacctstatus setaccountstatus.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetdeliverymode setdeliverymode.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f ../bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ../bin`; do \ echo "install -c -m 500 ../bin/$$file /usr/local/bin/$$file" ; \ install -c -m 500 ../bin/$$file /usr/local/bin ; \ done @echo @echo "Installing manual pages to $(MANDIR) " @echo @for file in `ls ../man`; do \ echo "install -c -m 600 ../man/$$file $(MANDIR)/$$file" ; \ install -c -m 500 ../man/$$file $(MANDIR) ; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f ../bin/* qldapadmin-1.0-RC1/src/Makefile.FreeBSD0100644000175000000000000000507607403133052016516 0ustar muratwheel SH = /bin/sh CC = g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin MANDIR = /usr/local/man/man1 OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o cfgfile.o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o ../bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddforward addforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelforward delforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddaltaddr addaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelaltaddr delaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetacctstatus setaccountstatus.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetdeliverymode setdeliverymode.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f ../bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ../bin`; do \ echo "install -c -m 500 ../bin/$$file /usr/local/bin/$$file" ; \ install -c -m 500 ../bin/$$file /usr/local/bin ; \ done @echo @echo "Installing manual pages to $(MANDIR) " @echo @for file in `ls ../man`; do \ echo "install -c -m 600 ../man/$$file $(MANDIR)/$$file" ; \ install -c -m 500 ../man/$$file $(MANDIR) ; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f ../bin/* qldapadmin-1.0-RC1/src/Makefile.Solaris0100644000175000000000000000510307556436316016731 0ustar muratwheel SH = /bin/sh CC = /usr/local/bin/g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt -lsocket -lresolv CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o cfgfile.o .SUFFIXES: .cpp .o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o ../bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddforward addforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelforward delforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddaltaddr addaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelaltaddr delaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetacctstatus setaccountstatus.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetdeliverymode setdeliverymode.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f ../bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ../bin`; do \ /usr/sbin/install -m 500 -f /usr/local/bin ../bin/$$file; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f bin/* qldapadmin-1.0-RC1/src/Makefile.linux0100644000175000000000000000507607403133052016443 0ustar muratwheel SH = /bin/sh CC = g++ MAKEFILE= Makefile CFLAGS = -O2 --pipe LDFLAGS = -L/usr/local/lib LIBS = -lldap -llber -lcrypt CPPFLAGS = -I/usr/local/include BINDIR = /usr/local/bin MANDIR = /usr/share/man/man1 OBJECTS = LDAPException.o EnderLDAP.o QmailUser.o QmailDomain.o cfgfile.o .cpp.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $< all: compile EnderLDAP compile:$(OBJECTS) EnderLDAP: $(OBJECTS) $(CC) -o ../bin/qadddomain adddomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeldomain deldomain.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistdomains listdomains.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qadduser adduser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdeluser deluser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qmodifyuser modifyuser.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qpasswd changepassword.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/quserinfo userinfo.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qlistusers listdomainusers.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddforward addforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelforward delforward.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qaddaltaddr addaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qdelaltaddr delaltaddr.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetquota setquota.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmailhost setmailhost.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetmsgstore setmsgstore.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetacctstatus setaccountstatus.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) $(CC) -o ../bin/qsetdeliverymode setdeliverymode.cpp $(OBJECTS) $(CPPFLAGS) $(LDFLAGS) $(LIBS) clean: rm -f $(OBJECTS) rm -f ../bin/* rm -f *core rm -f *~ install: @echo @echo "Installing binaries to $(BINDIR) " @echo @for file in `ls ../bin`; do \ echo "install -c -m 500 ../bin/$$file /usr/local/bin/$$file" ; \ install -c -m 500 ../bin/$$file /usr/local/bin ; \ done @echo @echo "Installing manual pages to $(MANDIR) " @echo @for file in `ls ../man`; do \ echo "install -c -m 600 ../man/$$file $(MANDIR)/$$file" ; \ install -c -m 500 ../man/$$file $(MANDIR) ; \ done @echo @echo "Done ..." @echo "roots@EnderUNIX.ORG" @echo "Enderunix Software Development Team (c) 2001 ..." @echo dist-clean: rm -f ../bin/* qldapadmin-1.0-RC1/src/QmailDomain.cpp0100644000175000000000000000165607403112757016555 0ustar muratwheel/* * LDAP Base Class, Member Implementations * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include "QmailDomain.h" #include "qconfig.h" #if defined SOLARIS #include #endif QmailDomain::QmailDomain () //constructor { bzero(ou, BUFSIZ); bzero(description, BUFSIZ); } QmailDomain::QmailDomain ( char * domainname) { strncpy(ou, domainname, BUFSIZ); bzero(description, BUFSIZ); } QmailDomain::QmailDomain ( char * domainname, char *desc ) { strncpy(ou, domainname, BUFSIZ); strncpy(description, desc, BUFSIZ); } QmailDomain::~QmailDomain () //Destructor { } void QmailDomain::setOu ( const char * in_ou ) //set domain Ou { strncpy(ou, in_ou, BUFSIZ); } void QmailDomain::setDescription ( const char * desc ) //set domain description { strncpy(description, desc, BUFSIZ); } qldapadmin-1.0-RC1/src/QmailDomain.h0100644000175000000000000000113207400123262016175 0ustar muratwheel/* * LDAP Base Class, Member Definitions * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #ifndef QMAILDOMAIN_H #define QMAILDOMAIN_H #include class QmailDomain { public: QmailDomain ( ); virtual ~QmailDomain ( ); QmailDomain ( char * ); QmailDomain ( char *, char * ); void setOu ( const char * ); void setDescription ( const char * ); char *getOu () { return ou; }; char *getDescription () { return description; }; private: char ou[BUFSIZ]; char description[BUFSIZ]; }; #endif qldapadmin-1.0-RC1/src/QmailUser.cpp0100644000175000000000000001322607556436316016271 0ustar muratwheel/* * LDAP Base Class, Member Implementations * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include #include #include #include "QmailUser.h" #include "qconfig.h" #if defined (SOLARIS) #include #include #endif #if defined (LINUX) #include #endif QmailUser::QmailUser () { bzero(dn, BUFSIZ); bzero(uid, BUFSIZ); bzero(mail, BUFSIZ); bzero(cn, BUFSIZ); bzero(sn, BUFSIZ); bzero(mailMessageStore, BUFSIZ); bzero(homeDirectory, BUFSIZ); bzero(userPassword, BUFSIZ); for (int i = 0; i <= MAXALTERNATES+1; i++) mailAlternateAddress[i] = NULL; bzero(mailHost, BUFSIZ); bzero(mailQuota, BUFSIZ); for (int i = 0; i <= MAXFORWARDS+1; i++) mailForwardingAddress[i] = NULL; bzero(deliveryProgramPath, BUFSIZ); bzero(qmailDotMode, BUFSIZ); bzero(deliveryMode, BUFSIZ); bzero(mailReplyText, BUFSIZ); bzero(accountStatus, BUFSIZ); mfaindex = 0; maaindex = 0; } QmailUser::QmailUser(char * in_mail) { bzero(dn, BUFSIZ); bzero(sn, BUFSIZ); strncpy(uid, in_mail, BUFSIZ); strncpy(mail, in_mail, BUFSIZ); strncpy(domain, this->getDomainFromEmail(in_mail), BUFSIZ); bzero(mailMessageStore, BUFSIZ); bzero(homeDirectory, BUFSIZ); bzero(userPassword, BUFSIZ); for (int i = 0; i <= MAXALTERNATES+1; i++) mailAlternateAddress[i] = NULL; bzero(mailHost, BUFSIZ); bzero(mailQuota, BUFSIZ); for (int i = 0; i <= MAXFORWARDS+1; i++) mailForwardingAddress[i] = NULL; bzero(deliveryProgramPath, BUFSIZ); bzero(qmailDotMode, BUFSIZ); bzero(deliveryMode, BUFSIZ); bzero(mailReplyText, BUFSIZ); bzero(accountStatus, BUFSIZ); mfaindex = 0; maaindex = 0; } void QmailUser::setMail (const char * in_mail ) { char tmp[256]; strncpy(tmp, in_mail, 256); strncpy(uid, in_mail, BUFSIZ); strncpy(mail, in_mail, BUFSIZ); strncpy(dn, in_mail, BUFSIZ); strncpy(domain, this->getDomainFromEmail(tmp), BUFSIZ); } //set user cn value void QmailUser::setCn (const char * in_cn ) { strncpy(cn, in_cn, BUFSIZ); strncpy(sn, in_cn, BUFSIZ); } //set mailMessageStore void QmailUser::setMailMessageStore (const char * ms ) { strncpy(mailMessageStore, ms, BUFSIZ); } //set Homedirectory void QmailUser::setHomeDirectory (const char * hd ) { strncpy(homeDirectory, hd, BUFSIZ); } //set User password void QmailUser::setUserPassword (const char * up ) { char rand; char lastrand1 = 'a'; char lastrand2 = 'a'; char *crypt_out; char salt[3]; char passphrase[MAXBUFSIZ]; srandom (time(NULL)); rand = random() % 64; if (rand < 26) lastrand1 = rand + 'a'; if (rand > 25) lastrand1 = rand - 26 + 'A'; if (rand > 51) lastrand1 = rand - 52 + '0'; if (rand == 62) lastrand1 = ';'; if (rand == 63) lastrand1 = '.'; rand = random() % 64; if (rand < 26) lastrand2 = rand + 'a'; if (rand > 25) lastrand2 = rand - 26 + 'A'; if (rand > 51) lastrand2 = rand - 52 + '0'; if (rand == 62) lastrand2 = ';'; if (rand == 63) lastrand2 = '.'; salt[0] = lastrand1; salt[1] = lastrand2; salt[2] = 0; crypt_out = crypt(up,salt); snprintf(passphrase, MAXBUFSIZ, "{crypt}%s", crypt_out ); #ifdef DEBUG cout << "Final Passphrase: "<< passphrase << endl; #endif strncpy(userPassword, strdup(passphrase), BUFSIZ); } /* void QmailUser::setMailAlternateAddress ( char * maa ) { mailAlternateAddress = maa; } */ void QmailUser::setMailAlternateAddress(char ** maa) { #ifdef DEBUG cout << "DEBUG:\n" << "QmailUser MAA: \n"; for (int i = 0; i <= MAXALTERNATES+1; i++ ) cout << "i: " << i << " " << maa[i] << endl; #endif int i = 0; while( maa[i] != NULL ) { mailAlternateAddress[i] = strdup(maa[i]); i++; } mailAlternateAddress[i] = NULL; } //set MailHost void QmailUser::setMailHost(const char * mhost) { strncpy(mailHost, mhost, BUFSIZ); } //set MailQuota void QmailUser::setMailQuota(const char * mq) { strncpy(mailQuota, mq, BUFSIZ); } void QmailUser::setMailForwardingAddress(char ** mfa) { #ifdef DEBUG cout << "DEBUG:\n" << "QmailUser MFA: \n"; for (int i = 0; i <= MAXFORWARDS+1; i++ ) cout << "i: " << i << " " << mfa[i] << endl; #endif int i = 0; while (mfa[i]!= NULL) { mailForwardingAddress[i] = strdup(mfa[i]); i++; } mailForwardingAddress[i] = NULL; } void QmailUser::setDeliveryProgramPath(const char * dpp) { strncpy(deliveryProgramPath, dpp, BUFSIZ); } void QmailUser::setQmailDotMode(const char * qdm) { strncpy(qmailDotMode, qdm, BUFSIZ); } //set DeliveryMode void QmailUser::setDeliveryMode(const char * dm) { strncpy(deliveryMode, dm, BUFSIZ); } void QmailUser::setMailReplyText(const char * mrt) { strncpy(mailReplyText, mrt, BUFSIZ); } void QmailUser::setAccountStatus(const char * as) { strncpy(accountStatus, as, BUFSIZ); } QmailUser::~QmailUser() { } //this function takes email address and returns domainname char * QmailUser::getDomainFromEmail(char * email) { while (*email != '@' && *email != '\0') email++; if (*email != '\0') return ++email; else { cout <<"Please give a valid email address\n"; exit(-1); } } char * QmailUser::setMaildirFromEmail(const char * email) { int i=0; char User[MAXBUFSIZ]; char msgstore[2048]; while (*email != '@' && *email != '\0') { User[i++] = *email; email++; } if (*email != '\0') { email++; User[i] = '\0'; snprintf(msgstore, 2048, "%s/%s", email, User); strncpy(mailMessageStore, strdup(msgstore), BUFSIZ); return mailMessageStore; } else { cout <<"Please give a valid email address\n"; exit(-1); } } void QmailUser::print(void) { int i = 0; while (mailForwardingAddress[i] != NULL) cout << mailForwardingAddress[i++] << endl; } qldapadmin-1.0-RC1/src/QmailUser.h0100644000175000000000000000453407402662235015727 0ustar muratwheel/* * LDAP Base Class, Member Definitions * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #ifndef QMAILUSER_H #define QMAILUSER_H #include #include "qconfig.h" class QmailUser { public: QmailUser(); QmailUser(char *); ~QmailUser(); char * getMail() { return mail; }; char * getCn() { return cn; }; char * getMailMessageStore() {return mailMessageStore; }; char * getHomeDirectory() {return homeDirectory; }; char * getUserPassword() { return userPassword; }; char * getMailAlternateAddress(int index) { return mailAlternateAddress[index]; }; char * getMailHost() { return mailHost; }; char * getMailQuota() { return mailQuota; }; char * getMailForwardingAddress(int index) { return mailForwardingAddress[index]; }; char * getDeliveryProgramPath() { return deliveryProgramPath;}; char * getQmailDotMode() {return qmailDotMode; }; char * getDeliveryMode() {return deliveryMode; }; char * getMailReplyText() { return mailReplyText; }; char * getAccountStatus() { return accountStatus; }; char * getDomain() { return domain; }; char * getDomainFromEmail(char *); char * setMaildirFromEmail(const char *); void setMailMessageStore(const char *); void setHomeDirectory(const char *); void setUserPassword(const char *); void setMailAlternateAddress(char **); void setMailHost(const char *); void setMail(const char *); void setCn(const char *); void setMailQuota(const char *); void setMailForwardingAddress(char **); void setDeliveryProgramPath(const char*); void setQmailDotMode(const char *); void setDeliveryMode(const char *); void setMailReplyText(const char *); void setAccountStatus(const char *); void print(void); private: int mfaindex; // mail forwarding address index int maaindex; // mail alternate address index char dn[BUFSIZ]; char uid[BUFSIZ]; char mail[BUFSIZ]; char domain[BUFSIZ]; char cn[BUFSIZ]; char sn[BUFSIZ]; char mailMessageStore[BUFSIZ]; char homeDirectory[BUFSIZ]; char userPassword[BUFSIZ]; char * mailAlternateAddress[MAXALTERNATES+1]; char mailHost[BUFSIZ]; char mailQuota[BUFSIZ]; char * mailForwardingAddress[MAXFORWARDS+1]; char deliveryProgramPath[BUFSIZ]; char qmailDotMode[BUFSIZ]; char deliveryMode[BUFSIZ]; char mailReplyText[BUFSIZ]; char accountStatus[BUFSIZ]; }; #endif qldapadmin-1.0-RC1/src/addaltaddr.cpp0100644000175000000000000000426707403107021016433 0ustar muratwheel/* * addaltaddr.cpp: Adding mail Alternate address * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}; char *tmpaddaltaddr[2] = {0}; int main (int argc, char * argv[]) { int c, a = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"a:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'a': if (strlen(optarg) > MAXBUFSIZ) { fprintf(stderr, "argument too long\n"); exit(-1); } tmpaddaltaddr[0] = strdup(optarg); //strncpy(tmpaddaltaddr[0], optarg, MAXBUFSIZ); a = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || a == 0) usage(); EnderLDAP addaltaddr; if ((addaltaddr.bind()) < 0) { ldap_perror(addaltaddr.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (addaltaddr.isExistUser(user)) //if user exist set it's addaltaddr user->setMailAlternateAddress(tmpaddaltaddr); else { cout << "This user does not exist \n"; exit(1); } if ((addaltaddr.AddDelMailAlternateAddress(user, 0)) != LDAP_SUCCESS) { /* if secound argument is 0 add forwarding address if 1 delete forwarding address */ cout << "User mail alternate address could NOT been added \n"; ldap_perror(addaltaddr.getSessionHandle(), "addaltaddr:"); exit(-1); } cout << "User mail alternate address has been added successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qaddaltaddr -a forward@domain.com username\n"; exit(0); } qldapadmin-1.0-RC1/src/adddomain.cpp0100644000175000000000000000442007403107021016256 0ustar muratwheel/* * adddomain.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" #define SIZE 1024 void usage (void); char tmpou[SIZE] = {0}; char tmpdsc[SIZE] = {0}; int main (int argc, char * argv[]) { int c ,dc = 0; int error = 0; extern char *optarg; extern int optind; if (argc == 1) { //when no argument is given cout <<"Please enter domainname: "; cin.getline(tmpou,SIZE); cout <<"Please enter domainnane description: "; cin.getline(tmpdsc,SIZE); } else { while( !error && (c = getopt(argc, argv, "c:hv")) != -1 ) { switch(c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'c': strncpy(tmpdsc, optarg, SIZE); dc = 1; break; case 'h': usage(); break; default: error = 1; break; } //switch }//while if (optind < argc) { strncpy(tmpou, argv[optind], SIZE); } if(tmpou[0] == 0 || dc == 0) usage(); } //else ends here; EnderLDAP adddomain; if ((adddomain.bind ()) < 0) { ldap_perror(adddomain.getSessionHandle(), "bind:"); exit(-1); } if (adddomain.isExistDomain(tmpou)) { cout <<"This domain already exists\n"; exit(-1); } QmailDomain * domain = new QmailDomain(); domain->setOu(tmpou); domain->setDescription(tmpdsc); if ((adddomain.AddDomain(domain)) != LDAP_SUCCESS) { ldap_perror(adddomain.getSessionHandle(), "adddomain:"); exit(-1); } cout << "\nQmailDomain has been created successfully\n" << "You need to add the domain to your control files manually\n" << "/var/qmail/control/locals\n" << "/var/qmail/control/rcpthosts\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " < #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}; char *tmpaddforward[2] = {0}; int main (int argc, char * argv[]) { int c, f = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"f:hv")) != -1) { switch (c) { case 'v': cout << "EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'f': if (strlen(optarg) > MAXBUFSIZ) { fprintf(stderr, "argument too long\n"); exit(-1); } tmpaddforward[0] = strdup(optarg); //strncpy(tmpaddforward[0], optarg, MAXBUFSIZ); f = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || f == 0) usage(); EnderLDAP addforward; if ((addforward.bind()) < 0) { ldap_perror(addforward.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (addforward.isExistUser(user)) //if user exist set it's addforward user->setMailForwardingAddress(tmpaddforward); else { cout << "This user does not exist \n"; exit(1); } if ((addforward.AddDelMailForwardingAddress(user, 0)) != LDAP_SUCCESS) { /* if secound argument is 0 add forwarding address if 1 delete forwarding address */ cout << "User mail forwarding address could NOT been added \n"; ldap_perror(addforward.getSessionHandle(), "addforward:"); exit(-1); } cout << "User mail forwarding address has been added successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qaddforward -f forward@domain.com username\n"; exit(0); } qldapadmin-1.0-RC1/src/adduser.cpp0100644000175000000000000002371507403107021015775 0ustar muratwheel/* * adduser.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" #include "QmailUser.h" #include "passwd.h" #include "QmailDomain.h" void get_email(char * tmpmail); void get_host(char * tmphost); void get_alternateaddress(char ** tmpalternate); void get_quota(char * tmpquota); void get_replytext(char * tmpreplytext); void get_maildir( char * tmpmaildir) ; void get_forwardingaddress(char ** tmpforwarding); void get_dppath(char * tmpdppath); void get_dotmode(char * tmpdotmode); void get_deliverymode(char * tmpdeliverymode); void get_accountstatus(char * tmpstatus); void usage(void); void get_options(int argc, char * argv []); void get_gecos(char * tmpcn); char tmpmail[MAXBUFSIZ], tmphost[MAXBUFSIZ], tmpcn[MAXBUFSIZ], tmpmaildir[MAXBUFSIZ], usrpass[MAXBUFSIZ], tmpquota[MAXBUFSIZ], tmpdppath[MAXBUFSIZ], tmpdotmode[20], tmpstatus[20], tmpdeliverymode[20], tmpreplytext[2048]; char * tmpforwarding[MAXFORWARDS+1]; char * tmpalternate[MAXALTERNATES+1]; int main (int argc, char * argv[]) { QmailUser * user = new QmailUser(); EnderLDAP adduser; if (argc == 1) { get_email (tmpmail); user->setMail(tmpmail); get_password(); user->setUserPassword(tmppass); get_gecos(tmpcn); if (strlen(tmpcn) > 0) user->setCn(tmpcn); else user->setCn(tmpmail); get_host(tmphost ); if ( strlen(tmphost) > 0) user->setMailHost(tmphost); else user->setMailHost(adduser.cfg->mailhost); get_maildir(tmpmaildir); if (strlen(tmpmaildir) > 0) user->setMailMessageStore(tmpmaildir); else user->setMaildirFromEmail(tmpmail); get_alternateaddress(tmpalternate); if (tmpalternate[0] != NULL) user->setMailAlternateAddress(tmpalternate); get_quota(tmpquota); if (strlen(tmpquota) > 0 ) user->setMailQuota(tmpquota); get_forwardingaddress(tmpforwarding); if (tmpforwarding[0] != NULL) user->setMailForwardingAddress(tmpforwarding); get_dppath(tmpdppath); if (strlen(tmpdppath) > 0) user->setDeliveryProgramPath(tmpdppath); get_replytext(tmpreplytext); if (strlen(tmpreplytext) > 0 ) user->setMailReplyText(tmpreplytext); get_dotmode(tmpdotmode); user->setQmailDotMode(tmpdotmode); get_deliverymode(tmpdeliverymode); user->setDeliveryMode(tmpdeliverymode); get_accountstatus(tmpstatus); user->setAccountStatus(tmpstatus); } else { get_options(argc, argv); user->setMail(tmpmail); if (strlen(usrpass) > 0) user->setUserPassword(usrpass); else { cout <<"Missing password \n"; exit(-1); } if (strlen(tmphost) > 0) user->setMailHost(tmphost); else user->setMailHost(adduser.cfg->mailhost); if (strlen(tmpmaildir) > 0) user->setMailMessageStore(tmpmaildir); else user->setMaildirFromEmail(tmpmail); if (strlen(tmpquota) > 0) user->setMailQuota(tmpquota); else if (HARDQUOTA == 1){ /* if hardquota is enabled */ sprintf(tmpquota, "%sS, %sC", adduser.cfg->default_quota_size, adduser.cfg->default_quota_count); user->setMailQuota(tmpquota); } if (strlen(tmpcn) > 0 ) user->setCn(tmpcn); else user->setCn(tmpmail); } if ((adduser.bind()) < 0) { ldap_perror(adduser.getSessionHandle(), "bind"); exit(-1); } if ((adduser.AddUser(user)) != LDAP_SUCCESS) { ldap_perror(adduser.getSessionHandle(), "adduser:"); exit(-1); } // if we come this far, this means that we've done it!:) cout << "QmailLDAP user has been created successfully\n"; // make compilers happy :) return 0; } void get_email(char * tmpmail) { cout <<"\nPlease enter an e-mail address: "; cin.getline ( tmpmail, MAXBUFSIZ ); while (strlen(tmpmail) <= 0) { cout <<"\nYou should give me an address buddy, huh?\n"; cout << "Please enter an e-mail address: "; cin.getline(tmpmail, MAXBUFSIZ); } } // end of get_mail() void get_host(char * tmphost) { ConfigFile cfg; cout <<"\nPlease enter the host [default: "< 0 && i < MAXALTERNATES) { tmpalternate[i++] = strdup(tmp); if (i != MAXALTERNATES) cin.getline(tmp, MAXBUFSIZ); } } void get_quota(char * tmpquota) { cout <<"\nPlease enter Quota:\n"; cout <<"[10000000S, 1000C] for 10MB and 1000 mail quota:\n"; cin.getline(tmpquota, MAXBUFSIZ); } void get_forwardingaddress(char ** tmpforwarding) { int i = 0; char tmp[MAXBUFSIZ]; cout <<"\nPlease enter MailForwarding Addresses one by one,\n"; cout <<"Just press enter to quit:\n\n"; cin.getline(tmp, MAXBUFSIZ); // initializing for (i = 0; i <= MAXFORWARDS + 1; i++) tmpforwarding[i] = NULL; i = 0; while (strlen(tmp) > 0 && i < MAXFORWARDS) { tmpforwarding[i++] = strdup(tmp); if (i != MAXFORWARDS) cin.getline(tmp, MAXBUFSIZ); } } void get_dppath(char * tmpdppath) { cout <<"\nPlease enter delivery program path: "; cin.getline(tmpdppath, MAXBUFSIZ); } void get_dotmode(char * tmpdotmode) { int tmp; cout <<"\nPlease enter qmail dot mode\n\n"; cout <<"[B] Both - Default\n[D] DotOnly\n[L] LdapOnly\n"; cout <<"[P] LdapWithProgram\n[N] None - Normal Delivery\n"; tmp = cin.get(); switch (tmp) { case 'B': case 'b': strncpy(tmpdotmode, "both", 4); break; case 'D': case 'd': strncpy(tmpdotmode, "dotonly", 7); break; case 'L': case 'l': strncpy(tmpdotmode, "ldaponly", 8); break; case 'P': case 'p': strncpy(tmpdotmode, "ldapwithprog", 12); break; case 'N': case 'n': strncpy(tmpdotmode, "none", 4); break; default: cout <<"Assuming Default [BOTH] is selected\n"; strncpy(tmpdotmode, "both", 4); break; } } void get_deliverymode( char * tmpdeliverymode) { int tmp; cout <<"\nPlease enter delivery mode:\n\n"; cout <<"[N] Normal -- Default\n[F] ForwardOnly\n[X] No Mbox\n"; cout <<"[L] Local Delivery\n[R] Reply\n[E] Echo the Message\n"; tmp = cin.get(); switch (tmp) { case 'E': case 'e': strncpy(tmpdeliverymode, "echo", 4); break; case 'F': case 'f': strncpy(tmpdeliverymode, "forwardonly", 11); break; case 'L': case 'l': strncpy(tmpdeliverymode, "localdelivery", 13); break; case 'N': case 'n': strncpy(tmpdeliverymode, "normal", 6); break; case 'R': case 'r': strncpy(tmpdeliverymode, "reply", 5); break; case 'X': case 'x': strncpy(tmpdeliverymode, "nombox", 6); break; default: cout <<"Assuming default [NORMAL] is selected\n"; strncpy(tmpdeliverymode, "normal",6); break; } // end of switch } void get_replytext(char * tmpreplytext) { cout <<"\nPlease enter mail Reply Text:\n"; cin.getline(tmpreplytext, 2048); } void get_accountstatus(char * tmpstatus) { int tmp; cout <<"\nPlease enter Account Status\n[A] Active (Default)\n"; cout <<"[D] Disabled\n[X] No Pop\n"; tmp = cin.get(); switch (tmp) { case 'A': case 'a': strncpy(tmpstatus, "active", 6); break; case 'D': case 'd': strncpy(tmpstatus, "disabled", 8); break; case 'X': case 'x': strncpy(tmpstatus, "nopop", 5); break; default: cout << "\nAssuming default [ACTIVE] is selected\n"; strncpy(tmpstatus, "active", 6); break; } //endof switch } void get_options(int argc, char **argv) { int c, errflag; extern char *optarg; extern int optind; errflag = 0; while (!errflag && (c = getopt(argc, argv, "u:c:p:q:s:d:vh")) != -1 ) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: "<< ENDERLDAP_VERSION << endl; exit (0); break; case 'h': usage(); exit (0); case 'u': strncpy(tmpmail, optarg, MAXBUFSIZ); break; case 'c': strncpy(tmpcn, optarg, MAXBUFSIZ); break; case 'p': strncpy(usrpass, optarg ,MAXBUFSIZ); break; case 'q': strncpy(tmpquota, optarg, MAXBUFSIZ); break; case 's': strncpy(tmphost, optarg, MAXBUFSIZ); break; case 'd': strncpy(tmpmaildir, optarg, MAXBUFSIZ); break; default: errflag = 1; break; } } } void get_gecos(char * tmpcn) { cout << "\nPlease enter User Name and Surname: "; cin.getline ( tmpcn, MAXBUFSIZ ); } void get_maildir(char * tmpmaildir) { cout << "\nPlease enter mail Message Store: [domain/user]: "; cin.getline ( tmpmaildir, MAXBUFSIZ ); } void usage(void) { cout << "EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION <<"\nquadduser: usage:\n" << "\t-u E-Mail Address\n" << "\t-c Gecos Field\n" << "\t-p User Password\n" << "\t-q Quota [ byte(S), count(C) ]\n" << "\t-s MailHost\n" << "\t-d MailDirectory\n" << "\t-v Version Info\n" << "\t-h This Screen\n"; } qldapadmin-1.0-RC1/src/cfgfile.cpp0100644000175000000000000000623207403107021015740 0ustar muratwheel/* * cfgfile.cpp : configuration file for ldap authentication * /usr/local/etc/qldapadmin.conf * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include #include "cfgfile.h" #include "qconfig.h" extern int errno; ConfigFile::ConfigFile() { LoadConfigParams(); } ConfigFile::~ConfigFile() { } void ConfigFile::LoadConfigParams() { FILE *fd; char buf[BUFSIZE]; char keyword[KEYSIZE]; char value[VALSIZE]; char *cp1, *cp2; char *variables[] = { "Invalid", "LDAP_USER", "LDAP_PASSWORD", "LDAP_BASEDN", "LDAP_SERVER", "LDAP_PORT", "MAILHOST", "DEFAULT_QUOTA_SIZE", "DEFAULT_QUOTA_COUNT" }; int i, key, line, keyword_nums = sizeof(variables)/sizeof(char *); if ((fd = fopen(CONFIGFILE, "r")) == NULL) { fprintf(stderr, "open %s: %s\n", CONFIGFILE, strerror(errno)); exit(-1); } line = 0; while ((fgets(buf, BUFSIZE, fd)) != NULL) { line++; if ( (buf[0] == '#')) /* skip comments */ continue; cp1 = buf; cp2 = keyword; while (isspace((int)*cp1)) /* skip blanks */ *cp1++; while ( isgraph((int)*cp1) && (*cp1 !='=')) *cp2++ = *cp1++; *cp2 = '\0'; cp2 = value; while ( (*cp1 != '\0') && (*cp1 !='\n') && (*cp1 !='=') ) *cp1++; *cp1++; /*skip = value */ while (isspace((int)*cp1)) *cp1++; /*skip blanks */ if (*cp1 == '"') /* start getting keyword value */ *cp1++; while ( (*cp1 != '\0') && (*cp1 !='\n') && (*cp1 !='"') ) *cp2++ = *cp1++; *cp2-- = '\0'; if (keyword[0] =='\0' || value[0] =='\0') continue; key = 0; for (i = 0; i < keyword_nums; i++) { if ((strcmp(keyword, variables[i])) == 0) { key = i; break; } } switch(key) { case 0: printf("Invalid keyword: %s\n", keyword); exit(-1); break; case 1: strncpy(ldap_user, value, BUFSIZE); break; case 2: strncpy(ldap_password, value, BUFSIZE); break; case 3: strncpy(ldap_basedn, value, BUFSIZE); break; case 4: strncpy(ldap_server, value, BUFSIZE); break; case 5: strncpy(ldap_port, value, BUFSIZE);; break; case 6: strncpy(mailhost, value, BUFSIZE); break; case 7: strncpy(default_quota_size, value, BUFSIZE); break; case 8: strncpy(default_quota_count, value, BUFSIZE); break; } /* switch (key) ends here */ } /* fgets ends here */ fclose(fd); } int ConfigFile::UpdateConfigParams(ConfigFile *cfg) { FILE *fd; int ret; if ((fd = fopen("/tmp/qldapadmin.conf", "w")) == NULL) { fprintf(stderr, "open: %s\n", strerror(errno)); exit(-1); } fprintf (fd, "LDAP_SERVER=\"%s\"\n", cfg->ldap_server); fprintf (fd, "LDAP_USER=\"%s\"\n", cfg->ldap_user); fprintf (fd, "LDAP_PASSWORD=\"%s\"\n", cfg->ldap_password); fprintf (fd, "LDAP_BASEDN=\"%s\"\n", cfg->ldap_basedn); fprintf (fd, "LDAP_PORT=%s\n", cfg->ldap_port); fprintf (fd, "MAILHOST=\"%s\"\n", cfg->mailhost); fclose(fd); if ((ret = rename("/tmp/qldapadmin.conf", CONFIGFILE)) < 0) return errno; else return 0; } qldapadmin-1.0-RC1/src/cfgfile.h0100644000175000000000000000073707403107021015411 0ustar muratwheel#ifndef CFGFILE_H #define CFGFILE_H #define BUFSIZE 1024 #define KEYSIZE 64 #define VALSIZE 256 class ConfigFile { public: ConfigFile(); ~ConfigFile(); void LoadConfigParams(); int UpdateConfigParams(ConfigFile *); char ldap_user[BUFSIZE]; char ldap_password[BUFSIZE]; char ldap_basedn[BUFSIZE]; char ldap_server[BUFSIZE]; char mailhost[BUFSIZE]; char ldap_port[BUFSIZE]; char default_quota_size[BUFSIZE]; char default_quota_count[BUFSIZE]; private: }; #endif qldapadmin-1.0-RC1/src/changepassword.cpp0100644000175000000000000000411607403107021017350 0ustar muratwheel/* * changepassword.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #if defined(SOLARIS) #include #endif #include #include "EnderLDAP.h" #include "qconfig.h" #include "passwd.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c, p = 0, error = 0; extern char *optarg; extern int optind; if (argc == 1) { cout <<"Please enter username: "; cin.getline(tmpuser, MAXBUFSIZ); get_password(); } else { while (!error && (c = getopt(argc,argv,"p:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'p': strncpy(tmppass, optarg, MAXBUFSIZ); p = 1; break; case 'h': usage(); break; default: error = 1; break; } //switch } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || p == 0) //not enough argument is given usage(); } //else EnderLDAP changepassword; if ((changepassword.bind()) < 0) { ldap_perror(changepassword.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (!changepassword.isExistUser(user)) { cout << "This user does not exist \n"; exit(-1); } user->setUserPassword(tmppass); //if user is found set it's password if ((changepassword.ChangeUserPassword(user)) != LDAP_SUCCESS) { ldap_perror(changepassword.getSessionHandle(), "passwd:"); exit(-1); } cout <<"User password has been changed successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qpasswd -p password username\n"; exit(0); } qldapadmin-1.0-RC1/src/delaltaddr.cpp0100644000175000000000000000426607403107021016446 0ustar muratwheel/* * delaltdelr.cpp: deleting mail Alternate address * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}; char *tmpdelaltdelr[2] = {0}; int main (int argc, char * argv[]) { int c, a = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"a:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'a': if (strlen(optarg) > MAXBUFSIZ) { fprintf(stderr, "argument too long\n"); exit(-1); } tmpdelaltdelr[0] = strdup(optarg); //strncpy(tmpdelaltdelr[0], optarg, MAXBUFSIZ); a = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || a == 0) usage(); EnderLDAP delaltdelr; if ((delaltdelr.bind()) < 0) { ldap_perror(delaltdelr.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (delaltdelr.isExistUser(user)) //if user exist set it's delaltdelr user->setMailAlternateAddress(tmpdelaltdelr); else { cout << "This user does not exist \n"; exit(1); } if ((delaltdelr.AddDelMailAlternateAddress(user, 0)) != LDAP_SUCCESS ) { /* if secound argument is 0: add alternate address, 1:delete */ cout << "User mail alternate address could NOT been deled \n"; ldap_perror(delaltdelr.getSessionHandle(), "delaltdelr:"); exit(-1); } cout << "User mail alternate address has been deled successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: "< #include #include #include #include "EnderLDAP.h" #include "LDAPException.h" #include "qconfig.h" #define SIZE 1024 char tmpdomain[SIZE]={0}; void usage(void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << endl; cout <<"usage: qdeldomain [options] domainname\n" << "options: \n" << "\t-f force deletion\n" << "\t-v Version Info\n" << "\t-h This Screen\n"; exit(0); } int main (int argc, char * argv[]) { int c, f = 0, error = 0; char choose; extern char *optarg; extern int optind; if (argc == 1) { cout << "Please enter domainname: "; cin.getline(tmpdomain, SIZE) ; if (strlen(tmpdomain) <= 0) { cout <<"Please enter something! \n"; exit(-1); } } else { while( !error && (c = getopt(argc, argv, "fhv")) != -1 ) { switch(c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit (0); break; case 'f': /* force deletion */ f = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpdomain, argv[optind], SIZE); } if (tmpdomain[0] == 0) usage(); } /* big else ends */ EnderLDAP deletedomain; if ((deletedomain.bind()) < 0) { ldap_perror(deletedomain.getSessionHandle(), "bind:"); exit(-1); } if (deletedomain.isExistDomain(tmpdomain )) { //check domain existence if (f == 0) { //Force not specified cout << "All users will be deleted [y/n]:"; cin >> choose; if (choose == 'y' || choose == 'Y') { if ((deletedomain.DeleteEntireDomain(tmpdomain)) != LDAP_SUCCESS) { ldap_perror(deletedomain.getSessionHandle(), "deldomain"); exit(-1); } } else { cout <<"Domain is not deleted !\n"; return 0; } } else { if ((deletedomain.DeleteEntireDomain(tmpdomain)) != LDAP_SUCCESS) { ldap_perror(deletedomain.getSessionHandle(), "deldomain"); exit(-1); } } } else { cout << "This domain does not exist !\n"; exit(1); } return 0; } qldapadmin-1.0-RC1/src/delforward.cpp0100644000175000000000000000417407403107021016475 0ustar muratwheel/* * setdelforward.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}; char *tmpdelforward[2] = {0}; int main (int argc, char * argv[]) { int c, f = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"f:hv")) != -1) { switch (c) { case 'v': cout << "\nEnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'f': if (strlen(optarg) > MAXBUFSIZ) { fprintf(stderr, "argument too long\n"); exit(-1); } tmpdelforward[0] = strdup(optarg); //strncpy(tmpdelforward[0], optarg, MAXBUFSIZ); f = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || f == 0) usage(); EnderLDAP delforward; if ((delforward.bind()) < 0) { ldap_perror(delforward.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (delforward.isExistUser(user)) //if user exist set it's delforward user->setMailForwardingAddress(tmpdelforward); else { cout << "This user does not exist \n"; exit(1); } if ((delforward.AddDelMailForwardingAddress(user, 1)) != LDAP_SUCCESS) { /* if second argument is 1 delete forwarding */ cout << "User mail forwarding address could NOT been deleted \n"; ldap_perror(delforward.getSessionHandle(), "delforward:"); exit(-1); } cout << "User mail forwarding address has been changed deleted\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qdelforward -f forward@domain.com username\n"; exit(0); } qldapadmin-1.0-RC1/src/deluser.cpp0100755000175000000000000000371507403107021016012 0ustar muratwheel/* * deluser.cpp * * EnderUnix Software Development Team @ Turkiye * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "LDAPException.h" #include "qconfig.h" void usage(void); char tmpuser[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c , error = 0; extern char *optarg; extern int optind; if (argc == 1) { cout << "Please enter username: "; cin.getline(tmpuser, MAXBUFSIZ); if (strlen(tmpuser) <= 0) { cout <<"Please enter something! \n"; exit(-1); } } else { while (!error && (c = getopt(argc,argv,"hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit (0); break; case 'h': usage(); break; default: error = 1; break; } //switch ends } //while ends if(optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0) usage(); } //big else ends EnderLDAP deleteuser; if ((deleteuser.bind()) < 0) { ldap_perror(deleteuser.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser (tmpuser); //creat a new obkect if (!deleteuser.isExistUser(user)) { cout <<"This user does not exist \n"; exit(-1); } if ((deleteuser.DeleteUser(user)) < 0) { ldap_perror(deleteuser.getSessionHandle(), "Delete user:"); exit(-1); } cout << "\nUser has been deleted successfully!\n"; return 0; } void usage(void) { cout << "EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qdeluser [options] username\n"; cout <<"\noptions: \n"; cout <<"\t -v Version Info\n"; cout <<"\t -h This Screen\n"; exit(0); } qldapadmin-1.0-RC1/src/listdomains.cpp0100755000175000000000000000077407401626353016713 0ustar muratwheel/* * listdomains.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "LDAPException.h" #include "qconfig.h" int main (void) { EnderLDAP myLDAP; if ((myLDAP.bind()) < 0) { ldap_perror(myLDAP.getSessionHandle(), "bind:"); exit(-1); } myLDAP.ListDomains(); return 0; } qldapadmin-1.0-RC1/src/listdomainusers.cpp0100755000175000000000000000342307403107021017570 0ustar muratwheel/* * listdomainusers.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "LDAPException.h" #include "qconfig.h" #define SIZE 1024 void usage(void); char tmpdomain[SIZE]={0}; int main (int argc, char * argv[]) { int c, error = 0 ; extern char *optarg; extern int optind; if (argc == 1 ) { //if domain not specified as a argument cout << "Please enter domainname: "; cin.getline(tmpdomain, SIZE); if (strlen(tmpdomain) <= 0) { cout << "Please give me something \n"; exit (-1); } } else { while( !error && (c = getopt(argc, argv, "hv")) != -1) { switch(c) { case 'v': cout <<"\nEnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit (0); break; case 'h': usage(); exit (0); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpdomain, argv[optind], SIZE); } if (tmpdomain[0] == 0) usage(); } // else ends EnderLDAP myLDAP; if ((myLDAP.bind()) < 0) { ldap_perror(myLDAP.getSessionHandle(), "bind:"); exit(-1); } if (myLDAP.isExistDomain(tmpdomain)) myLDAP.ListDomainUsers(tmpdomain); else { cout <<"This domain does not exist !\n"; exit(-1); } return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "usage: qlistusers domainname\n" << "\t-v Version Info\n" << "\t-h This Screen\n"; exit(0); } qldapadmin-1.0-RC1/src/modifyuser.cpp0100644000175000000000000002503107402662235016541 0ustar muratwheel/* * modifyuser.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void get_alternateaddress(char * tmpalternate); void get_accountstatus(char * tmpstatus); void get_dppath(char * tmpdppath); void get_dotmode(char * tmpdotmode); void get_deliverymode(char * tmpdeliverymode); void get_email(char * tmpmail); void get_forwardingaddress(char * tmpforwarding); void get_gecos(char * tmpcn); void get_host(char * tmphost); void get_maildir(char * tmpmaildir); void get_quota(char * tmpquota); void get_replytext(char * tmpreplytext); QmailUser * olduser; char tmpmail[MAXBUFSIZ], tmpcn[MAXBUFSIZ], tmpmaildir[MAXBUFSIZ], tmphost[MAXBUFSIZ], tmpquota[MAXBUFSIZ], tmpalternate[MAXBUFSIZ], tmpforwarding[MAXBUFSIZ], tmpdppath[MAXBUFSIZ], tmpdotmode[20], tmpstatus[20], tmpdeliverymode[20], tmpreplytext[2048]; int main () { int choice; EnderLDAP modifyuser; if ((modifyuser.bind()) < 0) { ldap_perror(modifyuser.getSessionHandle(), "bind:"); exit(-1); } /* Get e-mail address from stdin */ get_email (tmpmail); /* creating user object whose attributes are * to be modified or created */ QmailUser * user = new QmailUser(tmpmail); /* creating deluser object * whose attributes are to be deleted */ QmailUser * deluser = new QmailUser(tmpmail); if (!modifyuser.isExistDomain(user->getDomain())) { cout <<"Sorry, domain not found!\n"; exit(-1); } else if (!modifyuser.isExistUser(user)) { cout <<"Sorry, user not found!\n"; exit(-1); } olduser = modifyuser.ReturnUserAttribs(tmpmail); /* Now Modifying Gecos, (cn, sn attributes ) * Because, cn and sn attribs are required, * this atttibute is not removable */ cout <<"\n----------- Current Gecos: " << olduser->getCn()<< endl; get_gecos(tmpcn); if (strlen(tmpcn) > 0) user->setCn(tmpcn); /* Mail Message Store is mandatory, as you guess :) *Because of that, user doesn't have a chance that attrib. */ cout << "\n----------- Present Mail Message Store: " << olduser->getMailMessageStore() << endl; get_maildir(tmpmaildir); if (strlen(tmpmaildir) > 0) user->setMailMessageStore(tmpmaildir); /* Mail Reply Text */ cout << "\n----------- Present MailReplyText: " << olduser->getMailReplyText () << endl; cout << "[D] Delete Value\n[M] Modify Value\n[X] Don't touch\n"; while ((choice = cin.get())) { cin.ignore(); switch (choice) { case 'D': case 'd': if (olduser->getMailReplyText() != NULL) deluser->setMailReplyText("delete"); break; case 'M': case 'm': get_replytext(tmpreplytext); if (strlen(tmpreplytext) > 0) user->setMailReplyText(tmpreplytext); break; case 'X': case 'x': break; default: cout << "Invalid selection!\n[M]/[D]/[X], Modify, Delete, Leave it as is\n"; break; } if (control_loop(choice, "DdMmXx")) break; } /* Mailhost value is modified here */ cout << "\n----------- Present MailHost: "<< olduser->getMailHost() << endl; cout << "[D] Delete Value\n[M] Modify Value\n[X] Don't touch\n"; while ((choice = cin.get())) { cin.ignore(); switch (choice) { case 'D': case 'd': if (olduser->getMailHost() != NULL) deluser->setMailHost ( "delete" ); /* doesn't matter what * we set MailQuota here */ break; case 'M': case 'm': get_host(tmphost); if (strlen(tmphost) > 0) user->setMailHost(tmphost); break; case 'X': case 'x': break; default: cout << "Invalid selection!\n[M]/[D]/[X], Modify, Delete, Leave it as is\n"; break; } if (control_loop(choice, "DdMmXx")) break; } /* mailQuota attribute is modified */ cout <<"\n----------- Present Quota: "<< olduser->getMailQuota() << endl; cout <<"[D] Delete Value\n[M] Modify Value\n[X] Don't touch\n"; while ((choice = cin.get())) { cin.ignore(); switch (choice) { case 'D': case 'd': if (olduser->getMailQuota() != NULL) deluser->setMailQuota("delete"); /* doesn't matter what * we set MailQuota here */ break; case 'M': case 'm': get_quota(tmpquota); if (strlen(tmpquota) > 0) user->setMailQuota(tmpquota); break; case 'X': case 'x': break; default: cout << "Invalid selection!\n[M]/[D]/[X], Modify, Delete, Leave it as is\n"; break; } if (control_loop(choice, "DdMmXx")) break; } /* DeliveryProgramPath attrib is modified here! */ cout <<"\n----------- Present DeliveryProgramPath:" <getDeliveryProgramPath()<< endl; cout << "[D] Delete Value\n[M] Modify Value\n[X] Don't touch\n"; while ((choice = cin.get())) { cin.ignore(); switch (choice) { case 'D': case 'd': if (olduser->getDeliveryProgramPath() != NULL) deluser->setDeliveryProgramPath("delete"); break; case 'M': case 'm': get_dppath(tmpdppath); if (strlen(tmpdppath) > 0) user->setDeliveryProgramPath(tmpdppath); break; case 'X': case 'x': break; default: cout << "Invalid selection!\n[M]/[D]/[X], Modify, Delete, Leave it as is\n"; break; } if (control_loop(choice, "DdMmXx")) break; } /* These don't even have a chance to be deleted, only modified */ cout << "\n----------- Present Dot Mode: " << olduser->getQmailDotMode () << endl; get_dotmode(tmpdotmode); user->setQmailDotMode(tmpdotmode); cout << "\n----------- Present DeliveryMode: " << olduser->getDeliveryMode () << endl; get_deliverymode(tmpdeliverymode); user->setDeliveryMode(tmpdeliverymode); /* At last! */ cout << "\n----------- Present Account Status: " << olduser->getAccountStatus () << endl; get_accountstatus(tmpstatus); user->setAccountStatus(tmpstatus); /* First, we *modify* the modified values */ if ((modifyuser.ModifyUser(user, 'M')) < 0) { ldap_perror(modifyuser.getSessionHandle(), "modifyuser:"); exit (-1); } /* Then, in the second step, we delete the desired values */ if ((modifyuser.ModifyUser(deluser, 'D')) != LDAP_SUCCESS) { ldap_perror(modifyuser.getSessionHandle(), "modifyuser:"); exit (-1); } /* if we come this far, this means that we've done it!:) */ cout << "QmailLDAP user has been modified successfully \n\n"; return 0; } void get_email(char * tmpmail) { cout << "\nPlease enter an e-mail address:\n"; cin.getline(tmpmail, MAXBUFSIZ); while (strlen(tmpmail) <= 0) { cout <<"\nYou should give me an address buddy, huh?\n"; cout <<"Please enter an e-mail address:\n"; cin.getline(tmpmail, MAXBUFSIZ); } } void get_host ( char * tmphost ) { cout << "\nPlease enter the host: \n"; cin.getline(tmphost, MAXBUFSIZ); } void get_alternateaddress(char * tmpalternate) { cout <<"\nPlease enter Mail Alternate Address:\n"; cin.getline(tmpalternate, MAXBUFSIZ); } void get_quota(char * tmpquota) { cout << "\nPlease enter Quota:\n[10000000S, 1000C] for 10MB and 1000 mail quota:\n"; cin.getline(tmpquota, MAXBUFSIZ); } void get_forwardingaddress(char * tmpforwarding) { cout <<"\nPlease enter MailForwarding Address:\n"; cin.getline(tmpforwarding, MAXBUFSIZ); } void get_dppath(char * tmpdppath) { cout << "\nPlease enter delivery program path:\n"; cin.getline(tmpdppath, MAXBUFSIZ); } void get_dotmode(char * tmpdotmode) { int tmp; cout <<"\nPlease enter qmail dot mode\n\n"; cout <<"[B] Both - Default\n[D] DotOnly\n"; cout <<"[L] LdapOnly\n[P] LdapWithProgram\n[N] None - Normal Delivery\n"; tmp = cin.get(); switch (tmp) { case 'B': case 'b': strncpy(tmpdotmode, "both", 4); break; case 'D': case 'd': strncpy(tmpdotmode, "dotonly", 7); break; case 'L': case 'l': strncpy(tmpdotmode, "ldaponly", 8); break; case 'P': case 'p': strncpy(tmpdotmode, "ldapwithprog", 12); break; case 'N': case 'n': strncpy(tmpdotmode, "none", 4); break; default: cout << "Assuming Default [BOTH] is selected\n"; strncpy(tmpdotmode, "both", 4); break; } } void get_deliverymode(char * tmpdeliverymode) { int tmp; cout << "\nPlease enter delivery mode:\n\n"; cout << "[N] Normal -- Default\n[F] ForwardOnly\n"; cout <<" [X] No Mbox\n[L] Local Delivery\n[R] Reply\n[E] Echo the Message\n"; tmp = cin.get(); switch (tmp) { case 'E': case 'e': strncpy(tmpdeliverymode, "echo", 4); break; case 'F': case 'f': strncpy(tmpdeliverymode, "forwardonly", 11); break; case 'L': case 'l': strncpy(tmpdeliverymode, "localdelivery", 13); break; case 'N': case 'n': strncpy(tmpdeliverymode, "normal", 6); break; case 'R': case 'r': strncpy(tmpdeliverymode, "reply", 5); break; case 'X': case 'x': strncpy(tmpdeliverymode, "nombox", 6); break; default: cout << "Assuming default [NORMAL] is selected\n"; strncpy(tmpdeliverymode, "normal", 6); break; } } void get_replytext(char * tmpreplytext) { cout << "\nPlease enter mail Reply Text:\n"; cin.getline(tmpreplytext, 2048); } void get_accountstatus(char * tmpstatus) { int tmp; cout <<"\nPlease enter Account Status\n"; cout <<"[A] Active (Default)\n[D] Disabled\n[X] No Pop\n"; tmp = cin.get(); switch (tmp) { case 'A': case 'a': strncpy(tmpstatus, "active", 6); break; case 'D': case 'd': strncpy(tmpstatus, "disabled", 8); break; case 'X': case 'x': strncpy(tmpstatus, "nopop", 5); break; default: cout << "\nAssuming default [ACTIVE] is selected\n"; strncpy(tmpstatus, "active", 6); break; } } void get_gecos(char * tmpcn) { cout << "\nPlease enter User Name and Surname:\n"; cin.getline(tmpcn, MAXBUFSIZ); } void get_maildir(char * tmpmaildir) { cout << "\nPlease enter mail Message Store:\n"; cin.getline(tmpmaildir,MAXBUFSIZ); } qldapadmin-1.0-RC1/src/passwd.h0100644000175000000000000000113207401646573015323 0ustar muratwheel#include #include #include char tmppass[128], tmppass2[128]; int giveup=0; int get_password() { if(strlen (strcpy (tmppass, getpass("Enter password: " ))) >0) { strcpy (tmppass2, getpass("Enter password again: ")); if (strcmp( tmppass, tmppass2 ) != 0) { cout << "Passwords do not match, try again\n"; giveup++; if(giveup==4) { cout <<"Giving Up ! \n"; exit(1); } get_password(); } else { return 0; } } //if end else { cout << "You should enter a password\n"; exit(-1); } } //ends qldapadmin-1.0-RC1/src/qconfig.h0100644000175000000000000000103707403135700015437 0ustar muratwheel// #define SOLARIS /* if your OS is Solaris comment out this */ #define LINUX /* if your OS is Linux comment out this */ /* if your os is *BSD it is OK :) */ /* to enable HARDQUOTA set following value to 1 default no quota (0)*/ #define HARDQUOTA 1 /* Dont touch below if you don't know what you are doing! */ #define ENDERLDAP_VERSION "1.0-RC1" #define CONFIGFILE "/usr/local/etc/qldapadmin.conf" #define MAXBUFSIZ 1024 #define MAXDNSIZE 512 #define MAXDOMAINS 128 #define MAXUSERS 8192 #define MAXFORWARDS 3 #define MAXALTERNATES 3 qldapadmin-1.0-RC1/src/qldapadmin.conf.sample0100644000175000000000000000035007403231060020072 0ustar muratwheelLDAP_USER="cn=root, dc=enderunix, dc=org" LDAP_PASSWORD = secret LDAP_BASEDN="dc=enderunix, dc=org" LDAP_SERVER=localhost LDAP_PORT=389 MAILHOST = "pathfinder.enderunix.org" DEFAULT_QUOTA_SIZE="10000000" DEFAULT_QUOTA_COUNT="1000" qldapadmin-1.0-RC1/src/setaccountstatus.cpp0100644000175000000000000000431507403107021017755 0ustar muratwheel/* * setacctstatus.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage(void); char tmpuser[MAXBUFSIZ] = {0}, tmpacctstatus[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c , s = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"s:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 's': if ((strcmp(optarg, "active") == 0) || (strcmp(optarg, "disabled") == 0) || (strcmp(optarg, "nopop") == 0)) { strncpy(tmpacctstatus, optarg, MAXBUFSIZ); s = 1; } else { cout <<"Invalid Account Status \n"; exit(-1); } break; case 'h': usage(); break; default: error = 1; break; } //switch } //while if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || s ==0)//if mailhost or u (user) is not setted usage(); EnderLDAP setacctstatus; if ((setacctstatus.bind()) < 0) { ldap_perror(setacctstatus.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser (tmpuser); //create new obkect if (setacctstatus.isExistUser(user)) user->setAccountStatus(tmpacctstatus); else { cout << "This user does not exist \n"; exit(-1); } if ((setacctstatus.ChangeUserAcctStatus(user)) != LDAP_SUCCESS) { ldap_perror(setacctstatus.getSessionHandle(), "setacctstatus:"); exit(-1); } cout << "User account status has been changed successfully\n"; return 0; } void usage (void) { cout << "EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qsetacctstatus -s [active|disabled|nopop] username\n"; exit(0); } qldapadmin-1.0-RC1/src/setdeliverymode.cpp0100644000175000000000000000463707403107021017554 0ustar muratwheel/* * setdeliverymode.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage(void); char tmpuser[MAXBUFSIZ] = {0}, tmpdeliverymode[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c , m = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"m:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'm': if ((strcmp(optarg, "echo") == 0) || (strcmp(optarg, "forwardonly") == 0) || (strcmp(optarg, "localdelivery") == 0) || (strcmp(optarg, "normal") == 0) || (strcmp(optarg, "reply") == 0) || (strcmp(optarg, "nombox") == 0)) { strncpy(tmpdeliverymode, optarg, MAXBUFSIZ); m = 1; } else { cout <<"Invalid delivery mode value\n"; exit(-1); } break; case 'h': usage(); break; default: error = 1; break; } //switch } //while if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || m ==0)//if mailhost or u (user) is not setted usage(); EnderLDAP setdeliverymode; if ((setdeliverymode.bind()) < 0) { ldap_perror(setdeliverymode.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser (tmpuser); //create new obkect if (setdeliverymode.isExistUser(user)) user->setDeliveryMode(tmpdeliverymode); else { cout << "This user does not exist \n"; exit(-1); } if ((setdeliverymode.ChangeUserDeliveryMode(user)) != LDAP_SUCCESS) { ldap_perror(setdeliverymode.getSessionHandle(), "setdeliverymode:"); exit(-1); } cout << "User delivery mode has been changed successfully\n"; return 0; } void usage (void) { cout << "EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qsetdeliverymode -m [echo|forwardonly|localdelivery|normal|reply|nombox] username\n"; exit(0); } qldapadmin-1.0-RC1/src/setmailhost.cpp0100644000175000000000000000367207403107021016702 0ustar muratwheel/* * setmailhost.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage(void); char tmpuser[MAXBUFSIZ] = {0}, tmpmailhost[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c , m = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"m:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'm': strncpy(tmpmailhost, optarg, MAXBUFSIZ); m = 1; break; case 'h': usage(); break; default: error = 1; break; } //switch } //while if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 ||m ==0)//if mailhost or u (user) is not setted usage(); EnderLDAP setmailhost; if ((setmailhost.bind()) < 0) { ldap_perror(setmailhost.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser (tmpuser); //create new obkect if (setmailhost.isExistUser(user)) user->setMailHost(tmpmailhost); else { cout << "This user does not exist \n"; exit(-1); } if ((setmailhost.ChangeUserMailHost(user)) != LDAP_SUCCESS) { ldap_perror(setmailhost.getSessionHandle(), "setmailhost:"); exit(-1); } cout << "User mailhost has been changed successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qsetmailhost -m newmailhost username\n"; exit(0); } qldapadmin-1.0-RC1/src/setmsgstore.cpp0100644000175000000000000000352607403107021016723 0ustar muratwheel/* * setmsgstore.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage (void); char tmpuser[MAXBUFSIZ] = {0}, tmpmsgstore[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c, m = 0, error = 0; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"m:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'm': strncpy(tmpmsgstore, optarg, MAXBUFSIZ); m = 1; break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || m == 0) usage(); EnderLDAP set_msgstore; if ((set_msgstore.bind()) < 0) { ldap_perror(set_msgstore.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (set_msgstore.isExistUser(user)) //if user exist set it's msgstore user->setMailMessageStore(tmpmsgstore); else { cout << "This user does not exist \n"; exit(1); } if ((set_msgstore.ChangeUserMaildir( user)) < 0) { ldap_perror(set_msgstore.getSessionHandle(), "msgstore:"); exit(-1); } cout << "User mailmessagestore has been changed successfully\n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qsetmsgstore -m mailmessagestore username\n"; exit(0); } qldapadmin-1.0-RC1/src/setquota.cpp0100644000175000000000000000457707403107021016220 0ustar muratwheel/* * setquota.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include #include "EnderLDAP.h" #include "qconfig.h" #include "LDAPException.h" void usage(void); void check_int(char *value); char tmpuser[MAXBUFSIZ] = {0}, tmpQuotaS[MAXBUFSIZ] = {0}, tmpQuotaC[MAXBUFSIZ] = {0}; int main (int argc, char * argv[]) { int c, s = 0, cval = 0, error = 0; char quota[MAXDNSIZE]; extern char *optarg; extern int optind; while (!error && (c = getopt(argc,argv,"s:c:hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 's': strncpy(tmpQuotaS, optarg, MAXBUFSIZ); check_int(tmpQuotaS); s = 1; break; case 'c': strncpy(tmpQuotaC, optarg, MAXBUFSIZ); check_int(tmpQuotaC); cval = 1; break; case 'h': usage(); break; default: error = 1; break; } //switch } //while if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0 || s ==0 || cval == 0) usage(); EnderLDAP setquota; if ((setquota.bind()) < 0) { ldap_perror(setquota.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if ((setquota.isExistUser(user)) == false) { cout << "This user does not exist \n"; exit(-1); } sprintf(quota,"%sS, %sC" ,tmpQuotaS , tmpQuotaC); user->setMailQuota(quota); if ((setquota.SetUserQuota(user)) != LDAP_SUCCESS) { ldap_perror(setquota.getSessionHandle(), "setquota"); exit(-1); } cout << "User Quota has been changed successfully\n"; return 0; } void usage(void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: qsetquota -s QuotaSize -c MailCount username\n"; exit(0); } void check_int(char *value) //checks that user enter integer or not { int s = 0; while (value[s] != '\0') { if (value[s] < '0' || value[s] > '9') { cout <<"Please Enter Integer for QuotaSize and MailCount\n"; exit(-1); } s++; } //while } qldapadmin-1.0-RC1/src/userinfo.cpp0100644000175000000000000000274107403107021016174 0ustar muratwheel/* * userinfo.cpp * * EnderUnix Software Development Team @ Turkey * (c) 2001 Istanbul, Turkiye * * See COPYING for copyright and copying restrictions */ #include #include #include #include #include "EnderLDAP.h" #include "LDAPException.h" #include "qconfig.h" void usage (void); char tmpuser[MAXBUFSIZ]={0}; int main (int argc, char * argv[]) { int c, error = 0; extern char *optarg; extern int optind; if (argc == 1) { cout << "Please enter user: "; cin.getline(tmpuser,MAXBUFSIZ); } else { while (!error && (c = getopt(argc,argv,"hv")) != -1) { switch (c) { case 'v': cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; exit(0); break; case 'h': usage(); break; default: error = 1; break; } } if (optind < argc) { strncpy(tmpuser, argv[optind], MAXBUFSIZ); } if (tmpuser[0] == 0) usage(); } //else ends EnderLDAP userinfo; if ((userinfo.bind()) < 0) { ldap_perror(userinfo.getSessionHandle(), "bind:"); exit(-1); } QmailUser * user = new QmailUser(tmpuser); if (userinfo.DumpUserInfo(user) < 0) cout <<"No Such User \n"; return 0; } void usage (void) { cout <<"EnderUNIX QLDAPAdmin version: " << ENDERLDAP_VERSION << "\n"; cout <<"usage: quserinfo username\n"; exit(0); } qldapadmin-1.0-RC1/bin/0040755000175000000000000000000007403171431013624 5ustar muratwheel