OpenChange Project
C Python Perl C++ Makefile Shell Other
#220 Compare This branch is 256 commits ahead, 1 commit behind openchange:master.
Permalink
Failed to load latest commit information.
bin Add dummy file to make sure bin/ directory exists. Nov 22, 2012
doc Merge pull request #162 from jelmer/config-spec Mar 24, 2015
libexchange2ical Changes to avoid compile warnings after IDL changes Oct 28, 2015
libmapi++ Give support to set read direction on QueryRows oxctabl in libmapi Feb 12, 2015
libmapi Add verbosity to RAWIDSET_push_guid_glob premature returns Feb 10, 2016
libmapiadmin libmapiadmin: Use oc_log. Mar 13, 2015
libocpf Changes to avoid compile warnings after IDL changes Oct 28, 2015
mapiproxy Use logged user to allocate new fmids from indexing Feb 22, 2016
packaging/rhel Remove Debian packaging; the latest version can be found at Nov 27, 2012
php Do not hardcode PKG_CONFIG_PATH in config.m4 Aug 11, 2014
pyopenchange Warning compilation pointer-sign Jan 13, 2016
python/openchange ntlm: Do not crash if we receive OAuth2 request Dec 16, 2015
qt Add newline. Feb 10, 2010
script Merge pull request #211 from zentyal/jgarcia/oc_timer_stats-sorting Feb 3, 2016
setup openchange_migration: Ignore exception on directory app Feb 4, 2016
testprogs Remove dependency on testtools. Apr 22, 2015
testsuite oxcstor: Start support for logon map table Feb 22, 2016
utils mapitest: Refactor to set a non-expected value as failed test Nov 27, 2015
.gitignore nprops: generation of mapistore_namedprops.py May 14, 2015
.travis.yml Updated travis Nov 5, 2015
CHANGES.md Update CHANGES.md for release 2.4-zentyal23 Apr 5, 2016
COPYING Add COPYING file with GPLv3 license Jan 17, 2009
Doxyfile.in Update doxygen configuration to match latest version Jul 24, 2010
IDL_LICENSE.txt added the IDL license Oct 10, 2007
Mainpage.doxy Add initial support for Doxygen API documentation Sep 13, 2008
Makefile oxcstor: Start support for logon map table Feb 22, 2016
README.md Fixing image markdown format Jun 19, 2014
README.smbconf.md First iteration of the asynchronous emsmdb endpoint service. Apr 9, 2015
VERSION Start development of openchange-2.3-VULCAN Aug 11, 2014
asyncemsmdb.idl Add asyncemsmdb endpoint server stub with sample tevent_add_timer asy… Apr 9, 2015
autogen.sh SVN -> Git labels in autogen.sh Apr 8, 2013
config.guess Update copies of config.guess and config.sub. Jul 18, 2009
config.mk.in Add --enable-timers option Jan 25, 2016
config.sub Update copies of config.guess and config.sub. Jul 18, 2009
configure.ac Add --enable-timers option Jan 25, 2016
exchange.idl nspi: Beautify StringsArray_r structure output Feb 11, 2016
exchange_debug.idl Move exchange_debug interface from exchange.idl to exchange_debug.idl Jul 30, 2015
idl_types.h Updated to latest code from trunk. Mar 2, 2012
install-sh OpenChange public core branch released. Oct 29, 2006
libmapi++.pc.in Add pkg-config support for libmapi++. Feb 2, 2010
libmapi.pc.in Add tevent to dependencies. Aug 5, 2009
libmapiadmin.pc.in - Update openchange libraries to 0.9: close trac ticket #165 Dec 2, 2009
libocpf.pc.in - Update openchange libraries to 0.9: close trac ticket #165 Dec 2, 2009
missing Add missing script - prevent configure from generating warning vs mis… Feb 19, 2009
ndr_fasttransfer.c fxdump: Dump PT_MV_LONG properties in FastTransfer Buffer NDR Jan 28, 2016
ndr_mapi.c nspi: Beautify StringsArray_r structure output Feb 11, 2016
properties_enum.h libmapi: Add PidTagRoamingBinary tag Jan 9, 2016
property.idl oxocal: Add constansts for PidLidClientIntent masks Jan 25, 2016

README.md

About OpenChange

travis build

The OpenChange Project aims to provide a portable Open Source implementation of Microsoft Exchange Server and Exchange protocols. Exchange is a groupware server designed to work with Microsoft Outlook, and providing features such as a messaging server, shared calendars, contact databases, public folders, notes and tasks.

The OpenChange project has three goals:

  • To provide a library for interoperability with Exchange protocols, and to assist implementers to use this to create groupware that interoperates with both Exchange and other OpenChange-based software.

  • To provide an alternative to Microsoft Exchange Server which uses native Exchange protocols and provides exactly equivalent functionality when viewed from Microsoft Outlook clients.

  • To develop a body of knowledge about the most popular groupware protocols in use commercially today in order to promote development of a documented and unencumbered standard, with all the benefits that standards bring.

Documentation

There are two sources of documentation - text files in the doc/ directory, and API documentation generated from the source files using doxygen. You can create the API documentation yourself (using "make doxygen" at the top level) or you can refer to the copy on the OpenChange web site at http://apidocs.openchange.org/overview/index.html

doc/howto.txt contains instructions on how to install and set up client libraries, client utilities and the server / proxy parts of OpenChange. doc/man/ contains man(1) pages for several OpenChange utilities. Note that man pages for programming (i.e. the parts that would appear in man3) are generated by doxygen, and will be found in apidocs/ if you generate the documentation yourself. doc/doxygen/ provides static content used as part of the doxygen API documentation generation process. doc/examples/ provides programming examples for libmapi.

Structure

  • bin/ This directory is created during the build process. It contains the binaries (executable programs) that are compiled during the "make" step. The source for most of these is in the utils/ directory, described below.

  • doc/ This directory contains documentation - see description above (in DOCUMENTATION) for the various contents of this directory.

  • gen_ndr/ This directory contains routines for handling the Network Data Representation (NDR) for various Exchange RPC calls. The contents of this directory are generated (using Samba's pidl IDL compiler) at build time. The main input file is exchange.idl (see top level directory).

  • libexchange2ical This directory provides functionality for converting between Exchange calendar appointments and ICalendar (RFC2445 / RFC5545) format. Exchange -> ICalendar is fairly mature, ICalendar to Exchange is in work.

  • libmapi/ This directory contains the main client-side library, called libmapi. libmapi closely reflects the underlying protocol operations (Exchange RPC) being performed between the client and the server. For more information, consult the API documentation (either build yourself, or online at http://apidocs.openchange.org/libmapi/index.html)

  • libmapi++/ This directory contains C++ bindings for libmapi. It is not a replacement for libmapi, but is intended to provide easier access to many libmapi functions for C++ programmers. For more information, consult the API documentation (either build yourself, or online at http://apidocs.openchange.org/libmapi++/index.html)

  • libmapiadmin/ This directory contains client-side library functions for administering OpenChange or Exchange servers. For more information, consult the API documentation (either build yourself, or online at http://apidocs.openchange.org/libmapiadmin/index.html). If you are looking for a program you can run, instead of library functions to write your own program, "openchangepfadmin" might be of interest.

  • libocpf/ This directory contains library functions for the OpenChange Property Files (OCPF). This allows building of mail messages, address book entries, appointments and similar objects from text files. For more information, consult the API documentation (either build yourself, or online at http://apidocs.openchange.org/libocpf/index.html)

  • mapiproxy/ This directory provides an Exchange RPC proxy. You can use this to provide transparent proxying, or to change / monitor connections between the client and server. For more information, consult the API documentation (either build yourself, or online at http://apidocs.openchange.org/mapiproxy/index.html)

  • python/ This directory contains python scripts used to set up ("provision") the server side. They are not required for the client side.

  • qt/ This directory contains Qt4 bindings (lib/ subdirectory) and a sample application (demo/ subdirectory). The sample application is intended for research and development use, not as a complete end-user application.

  • samba4/ This directory will be created during the build process if you call "make samba" or execute the ./script/installsamba4.sh script. It is used to build samba4, if required.

  • script/ This directory contains a range of scripts useful for development or use of OpenChange. [TODO: document the scripts - perhaps write script/README?]

  • setup/ This directory contains data for setting up ("provisioning") the server.

  • testprogs/ This directory contains developer test tools

  • utils/ This directory contains the source code for a range of applications / utilities that can be used to interact with an exchange server. They include:

    • utils/backup/ backup and restore tools
    • utils/exchange2ical converts Exchange calendar into an ICal file
    • utils/exchange2mbox two way conversion between Exchange mail and mbox
    • utils/mapiprofile set up client side profiles (login information)
    • utils/mapitest/ test tools for libmapi functionality
    • utils/mapitrace/ test tool for tracing MAPI calls
    • utils/openchangeclient command line client for Exchange RPC
    • utils/openchangepfadmin Public Folders admin tools and administration of Exchange users (add/del)
    • utils/schemaIDGUID For more information on these tools, refer to the man(1) pages in doc/man/man1