OpenChange Project
jkerihuel Merge pull request #410 from roelvanmeer/fix-crashes
Fix crash caused by empty named_properties table
Latest commit 03bae8f Dec 16, 2015
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 libexchange2ical: Use oc_log. Mar 13, 2015
libmapi++ Give support to set read direction on QueryRows oxctabl in libmapi Feb 12, 2015
libmapi libmapi: IDSET_dump dumps to log level 5 Aug 26, 2015
libmapiadmin libmapiadmin: Use oc_log. Mar 13, 2015
libocpf mapiproxy/servers: Use oc_log. Mar 19, 2015
mapiproxy Fix crash caused by empty named_properties table Dec 16, 2015
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 Drop old notification system no longer in use Apr 9, 2015
python/openchange Fixed bugs regarding the cursor.execute(operation, params=None) API. Jul 29, 2015
qt Add newline. Feb 10, 2010
script Update README.md to notify developers of the requirement Aug 6, 2015
setup provision: parameters changes in provision scripts Jul 14, 2015
testprogs Remove dependency on testtools. Apr 22, 2015
testsuite unittest: Avoid compilation warning on ocdb-multitenancy tests Aug 24, 2015
utils client: Send only available bytes while sending an attachment Jul 29, 2015
.gitignore nprops: generation of mapistore_namedprops.py May 14, 2015
.travis.yml Remove dependency on testtools. Apr 22, 2015
CHANGES.md nspi: added missing attributes mappings for telephone and location Sep 10, 2015
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 Move exchange_debug interface from exchange.idl to exchange_debug.idl Jul 30, 2015
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 Disable ANSI colors by default and provide --enable-ansi-color Jul 30, 2015
config.sub Update copies of config.guess and config.sub. Jul 18, 2009
configure.ac Disable ANSI colors by default and provide --enable-ansi-color Jul 30, 2015
exchange.idl Fix typo Aug 10, 2015
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 Replace memory check so that -1 is returned instead of NDR_ERR_ALLOC … Sep 11, 2015
ndr_mapi.c Use ndr_dump_data instead of dump_data to print SBinary_short array Jul 30, 2015
properties_enum.h [ms-oxprops] Replace 0x40820040 with PidTagHierRev Mar 25, 2015
property.idl [oxosfld] Implement parsing and marshalling for PersistData May 15, 2015

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