Release Notes

grommunio 2021.08.1

Release type: Major

Release date: 17th of August 2021

Major changes:

  • Extension of distribution support and available repositories (SUSE Linux Enterprise Server 15, Red Hat Enterprise Linux 8 incl. derivatives)

  • Extension of available processor architectures: ARM64, PowerPC (ppc64le) and IBM zSeries (s390x)

  • New installation images: OVA (VMware), Docker, Raspberry Pi (4+)

  • Live Status Overview and Mobile Device Status

  • Support for Mobile Policies (MDM)

  • Extensive enhancements to migration tools for migrating Exchange (PST), Kopano (DB/Attachments) and generic mail systems (IMAP/CalDAV/CardDAV)

  • Support of Active Directory Forest installations

  • Support of deputy configuration

  • Extensions of the Free/Busy functionality

  • Support of special control characters

  • Configuration based integration of grommunio Files, Meet, Chat into grommunio Web

  • Inclusion of grommunio Files, Meet, Chat and Archive in the installation images

Important

Due to https://grommunio.com/en/news-en/aus-grommunio-wird-grommuniogrommunio-becomes-grommunio , grammm was renamed to grommunio. We are aware that this creates some challenges for the migration of existing platforms. All subscription holders are eligible for free professional services for the migration process. For the migration process, the estimated time required to for the completion of migration is 5000 users per hour.

Due to the nature of the rebranding from grammm to grommunio, a simple, automated upgrade mechanism was not created. Subscription holders with update services enabled automatically have access to the services available by the distribution upgrade process. The configuration switchover (configuration, data) has not changed much, and therefore the migration process is possible with the respective configuration dumps.

grommunio Admin API

Repository: https://github.com/grommunio/admin-api

Code statistics:

  • +15323 lines added

  • -5131 lines removed

Commits:

  • 2021-08: 16

  • 2021-07: 33

  • 2021-06: 22

  • 2021-05: 15

  • 2021-04: 20

  • 2021-03: 14

New (Improvements)

  • Add (in)active user count to domain

  • Add CLI documentation

  • Add CLI fs operations

  • Add CLI config tracing

  • Add CLI mconf reload

  • Add IDN support and input validation

  • Add LDAP server pooling

  • Add access to user store properties

  • Add authmgr configuration management

  • Add database connection check and CLI safeguard

  • Add device delete (resync) endpoint

  • Add domain effective sync policy endpoint

  • Add endpoints for user delegates

  • Add fetchmail management

  • Add format validation endpoint

  • Add journald log viewer

  • Add log message for failed logins

  • Add mailq endpoint

  • Add man pages

  • Add nginx vhost status proxies

  • Add permanent domain deletion to API

  • Add possibility to filter sync top data

  • Add public folder detail endpoint

  • Add read-only permissions

  • Add separate permissions and ownerships for mconf

  • Add support for JSON serialized device states

  • Add support for numeric permission strings

  • Add systemctl enable/disable commands

  • Add user device sync information endpoint

  • Allow force updating LDAP config

  • Automatically adapt to new schema version

  • Change public folder IDs to string

  • Change user sync data to normal array

  • Enforce user delegate format

  • Implement database-stored configurations

  • Implement dbconf commit hooks

  • Implement domain management via CLI

  • Implement grommunio-chat interface

  • Implement import of aliases from LDAP

  • Implement organizations

  • Implement public folder editing

  • Implement remote CLI

  • Improve API documentation

  • Improve CLI logging output

  • Improve LDAP configuration check

  • Improve LDAP configuration via CLI

  • Improve LDAP import “no users” message

  • Improve LDAP usability

  • Improve automatic service reload

  • Improve handling of unreadable config files

  • Invalidate redis cache on sync policy update

  • Move domain creation to orm

  • Move user creation to orm

  • Move user store access to separate endpoint

  • Optimize domain and user setup

  • Provide sync policies

  • Relax startup database connection test

  • Reload additional services on domain creation

  • Reload gromox-adaptor service on domain creation

  • Reload gromox-http service on user creation

  • Reload services on LDAP config change

  • Reload systemd after en- or disabling units

  • Reorganize system admin capabilities

  • Sort dbconf services and files alphabetically

  • Support loading of JSON OpenAPI spec

  • Support unlimited storage quotas

  • Switch to shell-exec systemd control

Bugfixes

  • Fix LDAP check crashing on invalid externalID

  • Fix LDAP check not working with AD

  • Fix PATCH roles not working properly

  • Fix Python version lock in Makefile

  • Fix autocomplete

  • Fix bad response on domain creation failure

  • Fix broken login with PyJWT 2

  • Fix clean target grommunio-dbconf

  • Fix crashes when MySQL is unavailable on startup

  • Fix dbconf service endpoint not working

  • Fix declarative base query using wrong session

  • Fix handling of broken LDAP IDs

  • Fix missing user delegates request body

  • Fix numerical file permissions not working

  • Fix traceback when aborting password reset

  • Fix unaligned reads/writes exmdbpp

  • Fix user password attribute

  • Fix wrong HTTP status on dashboard service signal

  • Fix wrong redis key used for policy invalidation

  • Fix wrong service signal response code

  • Ignore incomplete LDAP objects

Removed

  • Remove database URL quoting

  • Remove fetchmail entries from profile endpoint

  • Remove Flask-SQLAlchemy dependency

  • Remove groups

  • Remove old systemd code

  • Remove permissions and roles on domain purge

  • Remove PyJWT version constraint

  • Remove unused dbus import

grommunio Admin Web

Repository: https://github.com/grommunio/admin-web

Code statistics:

  • +43319 lines added

  • -18542 lines removed

Commits:

  • 2021-08: 10

  • 2021-07: 52

  • 2021-06: 28

  • 2021-05: 46

  • 2021-04: 53

  • 2021-03: 47

New (Improvements)

  • Add Circular progress to login button while logging in

  • Add LDAP config parameter ‘aliases’

  • Add LDAP filter defaults

  • Add auth manager config

  • Add autocompletes for domain.org and mlist.class

  • Add checkbox to set when putting LDAP config

  • Add confirm dialog for stop/restart service buttons

  • Add count of tablerows above tables

  • Add createRole query param to POST /system/domains

  • Add dashboard for domain admin

  • Add displayname to headline of user details

  • Add email to fetchmail dialog headline

  • Add form autofill attributes to LDAP config

  • Add human readble MSE to slider

  • Add icon to get back to users view when in LDAP view

  • Add indication of LDAP user sync at LDAP config view

  • Add missing autocompletes

  • Add more LDAP tooltips

  • Add name and id attribute to login form

  • Add new LDAP import buttons

  • Add new orgAdmin and DomainPurge role

  • Add new table view wrapper

  • Add org to domain

  • Add placeholder to LDAP server TF

  • Add possiblity to set 0 MB as quota limits

  • Add scroll: auto to drawer

  • Add send and receive quota to AddUser dialog

  • Add service detail page

  • Add sync statistics

  • Add sync tab to user page

  • Add tooltip with service description to service list

  • After successfully adding an item, set loading to false

  • After successfully importing/syncing users, refetch users

  • Always divide quotas by 1024 before calculating size unit

  • Automatically uppercase ssl fingerprints of fetchmail entries

  • Button colors expanded with signal colors and adapted according to their function.

  • Change AD to ActiveDirectory template

  • Change default values of fetchmail dialog

  • Change endpoint for quota values

  • Change helpertexts of custom mapping

  • Change logs hover color to work on light and dark mode

  • Change role multiselect to autocomplete

  • Check email and domain format with backend endpoint

  • Completely remove swap chart if it’s 0

  • Convert folder match to local filtering

  • Convert maxattrsize to MB

  • Fetch domain lvl2 in user details to get chat-attribute

  • Fill form when selecting LDAP template

  • Fully reset store when logging out

  • Get command name from code

  • Imlemented new responsive grid layout for the dashboard

  • Implement CRUD for orgs

  • Implement DBConf Filecreation

  • Implement anti spam statistics into dashboard with a responsive layout

  • Implement auto refresh of logs

  • Implement autocomplete for AddRoles

  • Implement autocomplete for Folders

  • Implement class-members /-filters XOR

  • Implement db file deletion

  • Implement domain editing and deletion for OrgAdmins

  • Implement dynamic table row fonts according to device status

  • Implement fancy sorting algorithm for domain admin dashboard

  • Implement fetchmail crud

  • Implement file editing

  • Implement folder editing

  • Implement full domain deletion

  • Implement grommunio chat team/user managment

  • Implement live server status page

  • Implement local services filter

  • Implement log viewer

  • Implement mailq

  • Implement minified sync policy prototype

  • Implement new Chart designs

  • Implement proper login form autocompletion

  • Implement read-only capabilities/permissions

  • Implement send/receive quota limit

  • Implement service autostart

  • Implement service deletion

  • Implement service renaming

  • Implement sync policy for users

  • Implement sync policy prototype

  • Implement sync table

  • Implement sync table filters

  • Implement used space bar

  • Implement user delegates

  • Implement vhost status endpoints

  • Improve design of mailQ

  • Improve design of quota graph

  • Improve fetchmail

  • Improve log viewer

  • Improve sync table header

  • Improve wording of owner removal

  • Improved strings for LDAP configuration

  • Increase size of services chart to prevent wrapping of deactivating chip

  • LDAP: update textual requirements for server field

  • Make all multiline textfields outlined

  • Make deactivated domains re-activatable

  • Make quotas optional for adding users

  • Mark deleted domains as deleted in drawer

  • More details in per-domain view

  • Move used space percentage to center of bar

  • New service chart design

  • Rectify default values for LDAP fields

  • Redesign quota chart

  • Reduce count of mlists when deleting

  • Relabel buttons for CNF clause

  • Relabel quota error

  • Rename RemoveOwner class

  • Rename classes to groups on the outside (only displayed text)

  • Reorganize ldap config

  • Reorganize permission handling

  • Resolve eqeqeq warning

  • Resolve fetchmail warning

  • Separate user and storeprops fetch in 2 different try/catch blocks

  • Show domain displayname if it’s different than the domainname

  • Significantly improve data managment

  • Significantly improve design of sync policy mask

  • Slightly improve padding and margin

  • Split spam and performance into 2 chapters by headlines

  • Translations

  • Trim message about LDAP fields being optional

  • Update LDAP tooltip strings

  • Update counter after softdeleting domain

  • Update mconf and ldap url

  • When updating domainStatus, also update drawer domains

  • Wrap detail view components in new wrapper

  • View: fix also update timestamp

Bugfixes

  • Fix broken classes fetch

  • Fix broken dashboard layout

  • Fix broken default vhost

  • Fix broken domain patch

  • Fix broken fetchOrgs and edit maillist

  • Fix broken folder details

  • Fix broken folder sorting

  • Fix broken format check

  • Fix broken grochat checkbox

  • Fix broken ldap template select

  • Fix broken parent groups

  • Fix broken role editing

  • Fix broken service disableing

  • Fix broken table filters

  • Fix broken toggleswitch

  • Fix broken used space labels

  • Fix broken user edit

  • Fix chart issues

  • Fix crashing empty-ldap view

  • Fix crashing mlist details

  • Fix crashing views

  • Fix disk labels

  • Fix doubling visual feedback of ldap responses

  • Fix non-resizing charts

  • Fix non-updating authBackendSelection

  • Fix potential live status crashes

  • Fix quota absence not displayed properly

  • Fix tooltip warnings for link button

  • Fix uncaught config.json error

  • Fix valid domain names rejection

  • Fix warnings

  • Fix wrong default searchAttribute

  • Fix wrong implementation of ldap enable-available-switch

  • Properly show ldap ok-status

Removed

  • Remove availability text if LDAP is disabled

  • Remove chat user option in post dialog

  • Remove empty limit parameter from entire app

  • Remove error color from cancel button in AddDialogs

  • Remove groups

  • Remove password and make maxUser mandatory

  • Remove redundant home icons in views

  • Remove sorting from user list, besides username

  • Remove srcFolder from required textfields and disable save-button if a required tf isnt filled

grommunio CUI

Repository: https://github.com/grommunio/grommunio-cui

Code statistics:

  • +2565 lines added

  • -2879 lines removed

Commits:

  • 2021-08: 10

  • 2021-07: 48

  • 2021-06: 1

  • 2021-05: 50

  • 2021-04: 0

  • 2021-03: 37

New (Improvements)

  • Add cancel button to admin pw change dialog

  • Add cancel button to reboot and shutdown question box

  • Add checked informations to homescreen

  • Add footerbar for better keyboard shortcut readability

  • Add help note to “Change password” dialog

  • Add last login time to bottom half of homescreen

  • Add launcher script

  • Add load average to footerbar and introduce quiet mode

  • Add menu entry to reset AAPI password

  • Add padded Edit class GEdit

  • Add shutdown to menu

  • Add some kbd layouts

  • Add space to “Average load”

  • Add status messagebox after admin pw reset

  • Add status messagebox after tymesyncd configuration

  • Add timesyncd config to main menu

  • Add timezone configuration via yast2

  • Change Buttons to RadioButtons

  • Change column size of menu field descriptions

  • Change hidden keyboard switcher to menu guided

  • Change netmask to cidr

  • Change stupid cat command to pythons internal open

  • Change wrap mode of all editable fields to ellipsis

  • Check content of netifaces before getting default gw

  • Correct indenting after event refactoring

  • Create a general input box for changing admin-web password

  • Create header for log viewer

  • Create message after dns settings apply

  • Delete redundant copy of README

  • Disable mouse support as mentioned in #9

  • Ditch ordered_set from requirement

  • Ditch urwid>=2.1 requirement

  • Do not check for timesyncd configuration

  • Do not show gateway on lo

  • Drop menu element number

  • Enable /etc/hosts writing

  • Enhance GText class with some additional methods

  • Enhance dialog sizes of IP and DNS config

  • Escape the quote at the system call for changing admin-web password

  • Finish log viewer

  • Give menu items more contrast

  • Handle footerbar correctly if screen width changes

  • Introduce a general Text class padding the correct chars

  • Keyboard layout switcher

  • Make function check_if_password_is_set available for all

  • Make getty upbranding compatible

  • Make homescreen more readable

  • Make it upbranding compatible

  • Make rest upbranding compatible

  • Make some checks more exact

  • Move timsyncd configuration behind timezone configuration

  • New program names in help texts

  • Optimize further wording

  • Optimize logging support

  • Optimize wording

  • Read grommunio-admin config dump and extract the log units

  • Reboot when asked for reboot, don’t poweroff

  • Recolor footerbar

  • Rectify indent of docstrings

  • Reduce from unnecessary 3 digits to 2 digits in average load view

  • Reduce length of keyb/color line

  • Replace custom netconfig implementation by yast2

  • Replace incorrect credentials message

  • Replace windowed shell by fullscreen one

  • Restore termios setting when CUI exits

  • Revert “Remove systemd from requirements because it is already in systemd-python.”

  • Reword main menu texts

  • Set up environment variables for terminal shell

  • Show IPv6 addresses in overview

  • Split large handle_event function

  • Stop abusing str() to test for classes/enums

  • Supress messages of shell commands

  • Switch to RGB444 format

  • Tone down brightness of the “dark” scheme

  • Tone down reverse color in light mode

  • Trim excessive sentence punctuation/structuring

  • Update header to be more suitable to the new footerbar

  • Update systemd module requirement

  • Use “reboot” command without path

  • Use autologin if no initial password is set

  • Use long names in binaries again and rename gro* to grommunio-*

  • Use systemd-journal instead of viewing log files directly

Bugfixes

  • Fix admin api pw reset and use better wording

  • Fix bug on keyboard change while in main menu

  • Fix correct display of distro and version

  • Fix crash on starting if no grommunio-admin was present

  • Fix hanging in menu while colormode or kbd switching

  • Fix missing captions on some formating calllls of GEdit

  • Fix not closing password change dialog on hitting close with enter

  • Fix out of bounds on the right side of log viewer

  • Fix returning back from unsupported shell

  • Fix shell injection bug on resetting admin pw

  • Fix some config file issues on writing

  • Fix suboptimal contrast in “light” mode

  • Fix tab handling lock after message- or input box call

  • Fix that only one time logging is needed

  • Fix wrong ‘NOTHING’ message if only enter being pressed

  • Fix wrong admin interface url

  • Fix wrong color switching in menues

  • Fix wrong current window setting on input boxes

  • Fix wrong explaining text on first menu start

  • Fix wrong logging formating

  • getty: do set up stderr as well

Removed

  • Remove “activated by what” and check privileges.

  • Remove arbitrary startup wait phase

  • Remove extraneous HL coloring

  • Remove inconsistent status bar coloring

  • Remove systemd from requirements because it is already in systemd-python.

  • Remove the ‘heute’ clockstring.

  • Remove unnecessary border around mainwindow

  • Remove wrong hint to yast.

grommunio Core (gromox)

Repository: https://github.com/grommunio/gromox

Code statistics:

  • +65616 lines added

  • -95032 lines removed

Commits:

  • 2021-08: 78

  • 2021-07: 207

  • 2021-06: 197

  • 2021-05: 159

  • 2021-04: 308

  • 2021-03: 256

New (Improvements)

  • adaptor: reduce main() unwinding boilerplate

  • adaptor: use stdlib containers for data_source

  • alias_translator: add PLUGIN_RELOAD functionality

  • alias_translator: expand mailaddr buffers to UADDR_SIZE

  • all: add <cerrno> include for errno

  • all: avoid integer underflow in qsort comparators

  • all: check return values of ext_buffer_push_*

  • all: delete extra blank lines from header files

  • all: disambiguate multiply assigned error/warning codes

  • all: drop C (void) argument filler

  • all: drop _stop() function return values

  • all: ease setting breakpoints on thread entry functions

  • all: enlarge buffers for IPv6 addresses

  • all: favor simpler x[j] over *(x+j)

  • all: log all pthread_create failures

  • all: make use of EXT_PULL::g_*bin* member functions

  • all: make use of EXT_PULL::g_bool member functions

  • all: make use of EXT_PULL::g_bytes member functions

  • all: make use of EXT_PULL::g_guid* member functions

  • all: make use of EXT_PULL::g_proptag_a member functions

  • all: make use of EXT_PULL::g_restriction member functions

  • all: make use of EXT_PULL::g_str* member functions

  • all: make use of EXT_PULL::g_tpropval_a member functions

  • all: make use of EXT_PULL::g_uint* member functions

  • all: make use of EXT_PULL::* member functions

  • all: make use of EXT_PUSH::{advance,p_proptag_a} member functions

  • all: make use of EXT_PUSH::{check_ovf,p_tpropval_a,p_tarray_set} member functions

  • all: make use of EXT_PUSH::{init,p_guid,p_bool} member functions

  • all: make use of EXT_PUSH::* member functions

  • all: make use of EXT_PUSH::{p_bin,p_bin_s,p_bin_a,p_restriction} member functions

  • all: make use of EXT_PUSH::p_int* member functions

  • all: make use of EXT_PUSH::{p_msgctnt,p_eid_a,p_abk_eid} member functions

  • all: make use of EXT_PUSH::{p_store_eid,p_folder_eid,p_msg_eid} member functions

  • all: make use of EXT_PUSH::{p_str,p_wstr,p_bytes} member functions

  • all: make use of EXT_PUSH::{p_tagged_pv,p_oneoff_eid,p_proprow} member functions

  • all: make use of EXT_PUSH::p_uint* member functions

  • all: make use of EXT_PUSH::{release,p_xid,p_bin_ex} member functions

  • all: print connecting module together with gx_inet_connect error messages

  • all: reduce verbosity of pext->alloc()

  • all: replace awkward multiply-by-minus-1

  • all: replace memset by shorter initialization

  • all: replace memset with hardcoded sizes

  • all: replace sprintf by snprintf

  • all: reset deserializer struct counts on allocation failure

  • all: resolve instances of -Wunintialized

  • all: speedier shutdown of sleepy threads

  • all: switch plugins to return true for unhandled plugin calls

  • all: switch ports to uint16 / resolve instances of -Wformat

  • all: switch *_stop variables to atomic<bool>

  • all: switch to EXT_PULL::init

  • all: use anonymous namespaces for TU-local struct declarations

  • authmgr: delete unused mode argument

  • authmgr: implement “allow_all” auth mode

  • authmgr: make login check isochronal

  • authmgr: move up too-late return value check of mysql_meta

  • authmgr: support config reloading

  • authmgr: switch default mode to “externid”

  • bodyconv: add rtfcptortf to option summary

  • bodyconv: better error message when rtfcptortf fails

  • build: add another symbol to zendfake

  • build: add cryptest.cpp

  • build: add ldd check for mapi.so

  • build: add libgromox_common to pffimport link

  • build: add libgromox_mapi to pffimport link

  • build: add missing <mutex> include

  • build: add plugin support functions

  • build: change qconf to use -O0

  • build: deal with php-config which has no –ini-dir

  • build: delete sa_format_area.sh

  • build: installation order of LTLIBRARIES is significant

  • build: libpthread is needed for logthru

  • build: make struct BINARY_ARRAY trivial again

  • build: make struct PROPTAG_ARRAY trivial again

  • build: move ext_buffer.cpp into libgromox_common.la

  • build: move pffimport manpage to section 8gx

  • build: pass -fsanitize to linker as well when using –with-asan/ubsan

  • build: quench compiler warnings on autolocking libcrypto implementations

  • build: quench gcc-7 compiler warnings for -Wunused*

  • build: reorder php-config calls and show immediate results

  • build: resolve instance of -Wformat-overflow

  • build: resolve attempts at narrowing conversion under -funsigned-char

  • build: scan for more variants of php-config

  • build: support OpenLDAP 2.5

  • build: use AC_PATH_PROGS to make deptrace recognize the PHP dependency

  • build: zendfake needs a non-noinst LTLIB

  • daemons: add ctor/dtor for main process contexts

  • daemons: add missing reporting of gx_inet_connect failures

  • daemons: delete use of ip6_container, ip6_filter

  • daemons: set up SIGINT handler like SIGTERM

  • daemons: upgrade to POSIX signal functions

  • daemons: use inheritance to base off SCHEDULE_CONTEXT

  • dbop: add “fetchmail” table

  • dbop: add fetchmail table for dbop -C

  • dbop: add missing classes.filters for new db setups

  • dbop: add table “configs”

  • dbop: add users.chat_id and domains.chat_id

  • dbop: add users.sync_policy and domains.sync_policy

  • dbop: error when schema version unobtainable

  • dbop: make user_properties table fit for multivalue props

  • delivery: abolish pthread_cancel

  • delivery: abolish unnecessary (a+i)-> syntax

  • delivery: add missing mutex unlock

  • delivery: add missing pthread_join calls

  • delivery: delete unneeded pthread_setcanceltype call

  • doc: add Autodiscovery manpage

  • doc: add document for the RWZ stream/file format

  • doc: add general notes for logon_object_get_properties

  • doc: add manpage for gromox-abktconv

  • doc: add manpage for gromox-abktpull

  • doc: add manpages for gromox-kpd2mt

  • doc: add Name sections to all pages

  • doc: add notes about character set woes

  • doc: authmgr has relaxed requirement on ldap_adaptor

  • doc: Autodiscover corrections to mod_fastcgi

  • doc: bulletize FILES sections

  • doc: delete obsolete digest.8gx manpage

  • doc: detail on addressEntryDisplayTableMSDOS

  • doc: do not escape (

  • doc: expand on the relationship between DCERPC, EMSMDB and OXCROPS

  • doc: mark up tcp_mss_size default value

  • doc: mention caching behavior for PR_EC_WEBACCESS_JSON

  • doc: mention exchange_emsmdb.cfg:rop_debug

  • doc: mention openldap as build requirement

  • doc: move exrpc_debug explanation to exmdb_provider.4gx

  • doc: note about variability of ${libdir}

  • doc: rearrange aux utilities in gromox.7

  • doc: replace roff SS command by TP

  • doc: show right option combinations for gromox-pffimport

  • doc: turn oxoabkt.txt to rST

  • doc: update documentation pertaining to MAPIHTTP and norms

  • doc: update event.8gx

  • doc: upgrade changelog.txt to changelog.rst

  • doc: use default indent for RS command

  • doc: use the right rST syntax for literal code blocks

  • doc: use the right syntax for literal blocks

  • email_lib: qp_decode_ex’s return value needs proper type

  • emsmdb: deindent logon_object_get_named_{propids,propnames}

  • event: add another termination checkpoint

  • event: add missing pthread_join for accept/scan threads

  • event: kick threads with a signal upon termination request

  • event_proxy: reduce excess gx_inet_connect messages

  • event: reduce main() unwinding boilerplate

  • event: replace pthread_cancel by pthread_join

  • event: resolve buffer overrun in ev_deqwork

  • event: switch g_dequeue_lists to a stdlib container

  • event: switch g_enqueue_lists to a stdlib container

  • event: switch g_host_list to a stdlib container

  • event: switch HOST_NODE::phash to a stdlib container

  • event: switch listnode allocations to new/delete

  • event: switch to std::mutex

  • exch: add length parameter to common_util_addressbook_entryid_to_username

  • exch: add length parameter to common_util_check_delegate

  • exch: add length parameter to common_util_essdn_to_username

  • exch: add length parameter to common_util_parse_addressbook_entryid

  • exch: add length parameter to *_to_essdn functions

  • exchange_emsmdb: add directive exrpc_debug

  • exchange_emsmdb: add length parameter to common_util_entryid_to_username

  • exchange_emsmdb: add length parameter to common_util_essdn_to_username

  • exchange_emsmdb: add variable for enabling trivial ROP status dumps

  • exchange_emsmdb: allow setting rop_debug from config file

  • exchange_emsmdb: change ATTACHMENT_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change FASTDOWNCTX_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change FASTUPCTX_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change FTSTREAM_PARSER freestanding functions to member funcs

  • exchange_emsmdb: change ICSDOWNCTX_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change ICSUPCTX_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change MESSAGE_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change STREAM_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: change SUBSCRIPTION_OBJECT freestanding functions to member funcs

  • exchange_emsmdb: collect magic array size into a mnemonic

  • exchange_emsmdb: compact common subexpressions

  • exchange_emsmdb: compact common_util hook definitions

  • exchange_emsmdb: compact exmdb_client declaration boilerplate

  • exchange_emsmdb: compact exmdb_client hook definitions

  • exchange_emsmdb: compact if-1L-1L blocks to use ?:

  • exchange_emsmdb: compact if-1L-1L into ?:

  • exchange_emsmdb: compact repeated expression (T*)expr

  • exchange_emsmdb: const qualifiers for logon_object_check_readonly_property

  • exchange_emsmdb: deindent ftstream_parser_read_element

  • exchange_emsmdb: deindent oxcfold_deletemessages

  • exchange_emsmdb: deindent rop_syncimportdeletes

  • exchange_emsmdb: delete unused function folder_object_get_tag_access

  • exchange_emsmdb: delete unused function table_object_get_table_id

  • exchange_emsmdb: emit MID during rop_sendmessage as hex

  • exchange_emsmdb: kick threads with a signal upon termination request

  • exchange_emsmdb: make folder_object_* member functions

  • exchange_emsmdb: make logon_object_check_private a member function

  • exchange_emsmdb: make logon_object_get_account a member function

  • exchange_emsmdb: make logon_object_get_dir a member function

  • exchange_emsmdb: make logon_object_guid a member function

  • exchange_emsmdb: make logon_object_* member functions

  • exchange_emsmdb: quench repeated ((T*)expr)

  • exchange_emsmdb: reduce indent in ftstream_producer_write_groupinfo

  • exchange_emsmdb: reduce indent in rop_querynamedproperties

  • exchange_emsmdb: repair botched access check in rop_syncconfigure

  • exchange_emsmdb: replace folder_object_get_calculated_property silly casts

  • exchange_emsmdb: restore MOH functions

  • exchange_emsmdb: rework return codes for emsmdb_interface_connect_ex

  • exchange_emsmdb: source inline folder_object_get_id

  • exchange_emsmdb: source inline folder_object_get_type

  • exchange_emsmdb: source inline logon_object_get_account_id

  • exchange_emsmdb: source inline logon_object_get_logon_mode

  • exchange_emsmdb: source inline logon_object_get_mailbox_guid

  • exchange_emsmdb: source inline table_object_get_rop_id

  • exchange_emsmdb: store ownership bit

  • exchange_emsmdb: substitute lookalike variable names

  • exchange_emsmdb: switch to std::mutex

  • exchange_emsmdb: trim goto from emsmdb_interface_connect_ex

  • exchange_emsmdb: trim single-use variables in ftstream_producer

  • exchange_emsmdb: turn freestanding FTSTREAM_PRODUCER functions into member ones

  • exchange_emsmdb: turn freestanding ICS_STATE functions into member ones

  • exchange_emsmdb: use “auto” specifier with common_util_get_propvals

  • exchange_emsmdb: use “auto” specifier with emsmdb_interface_get_emsmdb_info

  • exchange_emsmdb: use “auto” specifier with rop_processor_get_logon_object

  • exchange_emsmdb: use mnemonic names for RPC opnums

  • exchange_emsmdb: wrap FASTDOWNCTX_OBJECT in unique_ptr

  • exchange_emsmdb: wrap FASTUPCTX_OBJECT in unique_ptr

  • exchange_emsmdb: wrap FTSTREAM_PARSER in unique_ptr

  • exchange_emsmdb: wrap FTSTREAM_PRODUCER in unique_ptr

  • exchange_emsmdb: wrap ICS_STATE in unique_ptr

  • exchange_emsmdb: wrap LOGON_OBJECT in unique_ptr

  • exchange_emsmdb: wrap STREAM_OBJECT in unique_ptr

  • exchange_emsmdb: wrap SUBSCRIPTION_OBJECT in unique_ptr

  • exchange_nsp: add length parameter to ab_tree_get_display_name

  • exchange_nsp: add PLUGIN_RELOAD functionality

  • exchange_nsp: adjust ab_tree code to zcore ab_tree again

  • exchange_nsp: clear some type overlaps

  • exchange_nsp: comapct if-1L-1L blocks to use ?:

  • exchange_nsp: combine LPROPTAG_ARRAY / MID_ARRAY

  • exchange_nsp: combine STRING_ARRAY / STRINGS_ARRAY

  • exchange_nsp: compact repeated expression (T*)expr

  • exchange_nsp: deindent ab_tree_get_node_type, ab_tree_get_server_dn

  • exchange_nsp: dissolve 11 type aliases

  • exchange_nsp: dissolve 4 type aliases

  • exchange_nsp: drop implicit conversion of AB_BASE_REF

  • exchange_nsp: replace custom AB_BASE_REF by unique_ptr-with-deleter

  • exchange_nsp: resolve some copy-paste flagged code

  • exchange_nsp: switch g_base_hash to a stdlib container

  • exchange_nsp: switch to documented MAPI type names

  • exchange_nsp: switch to std::mutex

  • exchange_nsp: use implicit conversion from nullptr to AB_BASE_REF

  • exchange_nsp: use mnemonic names for RPC opnums

  • exchange_rfr: add length parameter to rfr_get_newdsa

  • exchange_rfr: use mnemonic names for RPC opnums

  • exch: centralize pidlid constants

  • exch: change overlapping variable names g_cache_interval

  • exch: compact conditional expressions around sqlite3_step

  • exch: compact repeated logic involving rop_make_util_*_guid

  • exch: compact return expressions

  • exch: compact tag list modifications

  • exch: construct SQL queries with snprintf rather than sprintf

  • exch: CSE-combine permission checks

  • exch: cure overlapping variable names (improve debugging)

  • exch: deduplicate exmdb_ext.cpp

  • exch: deduplicate struct DB_NOTIFY_DATAGRAM

  • exch: deduplicate struct EXMDB_REQUEST

  • exch: deduplicate struct EXMDB_RESPONSE

  • exch: delete empty functions

  • exch: delete xstmt::finalize calls before return

  • exch: delete xstmt::finalize calls near end of scope

  • exch: expand char arrays to hold usernames (emailaddrs)

  • exch: implement send quota

  • exch: make IDL-generated exmdb_client_ functions part of a namespace

  • exch, mda, mra: add SIGHUP handler

  • exch: MH support

  • exchnage_nsp: make calls to ab_tree_put_base automatic

  • exch: read delegates.txt with a consistent list format

  • exch: reduce excess gx_inet_connect messages

  • exch: reduce verbosity of ndr_stack_alloc

  • exch: rename source directory str_filter to match plugin name

  • exch: resolve instances of -Wmissing-braces

  • exch: resolve cov-scan reports

  • exch: roll nullptr check into xstmt::finalize

  • exch: switch to std::mutex

  • exch: switch to std::shared_mutex

  • exch: trim nullptr post-assignment for xstmt

  • exch: use “auto” specifier with get_rpc_info

  • exch: wrap ATTACHMENT_OBJECT in unique_ptr

  • exch: wrap FOLDER_OBJECT in unique_ptr

  • exch: wrap ICSDOWNCTX_OBJECT in unique_ptr

  • exch: wrap ICSUPCTX_OBJECT in unique_ptr

  • exch: wrap MESSAGE_OBJECT in unique_ptr

  • exch: wrap TABLE_OBJECT in unique_ptr

  • exmdb_client: drop extra payload_cb==0 check

  • exmdb_local: silence a cov-scan warning

  • exmdb_provider: add destructor for IDSET_CACHE

  • exmdb_provider: add length parameter to common_util_entryid_to_username

  • exmdb_provider: add missing pointer advancements in message_rectify_message

  • exmdb_provider: add missing return statements after db_engine_put_db

  • exmdb_provider: add unwinding for plugin startup

  • exmdb_provider: add/utilize xstmt::finalize

  • exmdb_provider: add variable for enabling trivial RPC status dumps

  • exmdb_provider: allow reduction of cache_interval down to 1s

  • exmdb_provider: bump default limits for stub threads and router connections

  • exmdb_provider: change g_connection_list to a stdlib container

  • exmdb_provider: change g_router_list to a stdlib container

  • exmdb_provider: compact common subexpressions

  • exmdb_provider: compact common_util hook definitions

  • exmdb_provider: compact exmdb_client hook registrations

  • exmdb_provider: compact if-1L-1L into ?:

  • exmdb_provider: compact long common subexpressions

  • exmdb_provider: compact repeated error checking

  • exmdb_provider: compact repeated expression (T*)expr

  • exmdb_provider: cure nullptr dereferences in ext_rule OP_FORWARD processing

  • exmdb_provider: cure “SELECT count(idx)” error messages

  • exmdb_provider: decide for sqlite3_finalize based upon pointer to be freed

  • exmdb_provider: deindent table_load_content_table

  • exmdb_provider: deindent table_load_hierarchy

  • exmdb_provider: dissolve goto statements in db_engine_notify_content_table_add_row

  • exmdb_provider: dissolve goto statements in exmdb_server_get_content_sync

  • exmdb_provider: dissolve goto statements in table_load_content_table

  • exmdb_provider: emit log message when sqlite DBs cannot be opened

  • exmdb_provider: emit warning when folder_type is indeterminate

  • exmdb_provider: enable ctor/dtor on OPTIMIZE_STMTS

  • exmdb_provider: factor out folder name test into separate function

  • exmdb_provider: reduce indent in exmdb_parser.cpp:thread_work_func

  • exmdb_provider: reduce indent in folder_empty_folder

  • exmdb_provider: reduce variable scope in folder_empty_folder

  • exmdb_provider: reload exrpc_debug variable on SIGHUP

  • exmdb_provider: reorder error case handling in exmdb_server_create_folder_by_properties

  • exmdb_provider: reorder if-else blocks in table_load_content_table to facilitate deindent

  • exmdb_provider: reorder if-else blocks in table_load_hierarchy to facilitate deindent

  • exmdb_provider: replace pthread_cancel by join procedure

  • exmdb_provider: retire W-1299 warning

  • exmdb_provider: scoped cleanup for DB_ITEM objects

  • exmdb_provider: set PR_READ based upon PR_MESSAGE_FLAG

  • exmdb_provider: show exrpc requests with succinct result code

  • exmdb_provider: silence unchecked return values in exmdb_server_set_message_instance_conflict

  • exmdb_provider: simplify parts of folder_empty_folder

  • exmdb_provider: split common_util_get_properties into more sensible subfunctions

  • exmdb_provider: stop using strncpy

  • exmdb_provider: switch g_hash_list to a stdlib container

  • exmdb_provider: switch largely to std::mutex

  • exmdb_provider: use “auto” keyword around gx_sql_prep

  • exmdb_provider: use “auto” specifier with instance_get_instance

  • exmdb_provider: warn when store directory inaccessible

  • exmdb_provider: wrap DB_ITEM in a unique_ptr

  • exmdb_provider: wrap sqlite3_close in an exit scope

  • freebusy: centralize pidlid constants

  • freebusy: compact if-1L-1L blocks to use ?:

  • http: add idempotent return stmts to facilitate deindent

  • http: add plugin support functions

  • http: better status codes when FastCGI is not available

  • http: centralize call to http_end

  • http: compact read/SSL_read calls in http_parser_process

  • http: deindent htparse_*

  • http: deindent pdu_processor_destroy

  • http: drop implicit conversion of VCONN_REF

  • http: emit status 503 for “out of resources” cases

  • http: factor out building of 408-typed response

  • http: factor out building of 4xx-typed response

  • http: factor out building of 5xx-typed response

  • http: factor out END_PROCESSING code block from http_parser_process

  • http: make calls to http_parser_put_vconnection automatic

  • http: make the different 503 response codes more discernible

  • http: move rfc1123_dstring to lib and add a size argument

  • http: narrow the scope of http_parser_process local variables

  • http: quench “unloading <nothing>” messages

  • http: reduce messages’ log level from 8 to 6

  • http: reorder if-else branches to facilitate deindent

  • http: section htparse_* into lambdas for function splitting

  • http: section http_parser_process into lambdas for function splitting

  • http: split function http_parse_process

  • http: split functions htparse_rdhead, htparse_rdbody, htparse_wrrep, htparse_wait

  • http: switch g_vconnection_list to a stdlib container

  • http: switch HPM plugin list to a stdlib container

  • http: switch largely to std::mutex

  • http: switch PDU plugin list to a stdlib container

  • http: switch service plugin list to a stdlib container

  • http: trim use of strncpy / adjust buffer sizes

  • http: use “auto” keyword around http_parser_get_vconnection

  • imap: break up imap_parser_process into more sensible subfunctions

  • imap: cleanup unused variables

  • imap: clear ineffective unsigned comparison

  • imap: compact repeated expression (T*)expr

  • imap: compact repeated midb error reporting

  • imap: compact standardized response line emission

  • imap: cure an uninitialized variable issue in ps_stat_appending

  • imap: deindent imap_cmd_parser.cpp

  • imap: deindent imap_cmd_parser_password2

  • imap: deindent imap_parser_process subfunctions

  • imap: delete IMAP_CODE enum and reduce numeric range

  • imap: delete netconsole routine for imap_code

  • imap: delete parsing of imap_code.txt

  • imap: do not advertise RFC2971 commands when so disabled

  • imap: invert imap_parser_process’s if conditions to facilitate deindent

  • imap: pass full buffer size to sprintf

  • imap: quote folder names in LIST, LSUB, XLIST, STATUS results

  • imap: reduce scope of variables imap_parser_process

  • imap: reduce scope of variables in imap_parser_process 2

  • imap: resolve CHECKED_RETURN cov-scan warning

  • imap: resolve memory leak in resource_load_imap_lang_list

  • imap: standardized reporting of midb responses

  • imap: trim some gotos from imap_parser_process

  • imap: unbreak parsing of {} literals

  • imap: use “auto” specifier with resource_get_imap_code

  • imap: use stdlib container for g_lang_list

  • kdb2mt: heed SRCPASS environment variable

  • kpd2mt: abandon enable_shared_from_this

  • kpd2mt: add YError exception printer

  • kpd2mt: support reading attachments

  • ldap_adaptor: add missing std::forward<>()

  • ldap_adaptor: add option to disable auth connection persistence

  • ldap_adaptor: compact config log messages

  • ldap_adaptor: establish all server connections on first demand only

  • ldap_adaptor: guard against bad_alloc during reload

  • ldap_adaptor: ignore search referrals emitted by MSAD

  • ldap_adaptor: support config reloading

  • ldap_adaptor: unconditionally initialize plugin

  • ldap_adaptor: use proper parameters for ldap_sasl_bind simple binding

  • lib: add allocator support for EXT_PUSH

  • lib: add config_file_get_uint

  • lib: add const qualifiers to stream functions

  • lib: add const variants for the double_list API

  • lib: add ctor/dtor for RTF_READER

  • lib: add ctor/dtor to RTF_WRITER

  • lib: add default functions for exmdb_rpc hooks

  • lib: add dtor to EXT_PUSH

  • lib: add exmdb_rpc_free hook

  • lib: add generational support to resource_pool

  • lib: add hex2bin function

  • lib: add initializers for binhex.cpp:READ_STAT

  • lib: add ip_filter_add to list of exempted warnings about svc funcs

  • lib: add length parameter to GET_USERNAME

  • lib: add MAPI_E_ constants as comments to standard ec* codes

  • lib: add member initialization to EXT_PULL/EXT_PUSH

  • lib: add missing newline in slurp_file

  • lib: add more codes to exmdb_rpc_strerror

  • lib: add new fields for orgs user table

  • lib: add OOP-style interface/member functions to EXT_PULL class

  • lib: add OOP-style interface / member functions to EXT_PUSH class

  • lib: add plugin call type RELOAD

  • lib: add PST properties to mapidefs.h

  • lib: add rights flag combinations

  • lib: add SCHEDULE_CONTEXT::context_id to easier backreference program contexts

  • lib: add textual descriptions for all known EC/RPC errors

  • lib: add wrapper for sqlite3_stmt

  • lib: adjust mime_get_mimes_digest, mime_get_structure_digest argument and return types

  • lib: adjust parse_mime_field argument and return types

  • lib: adjust qp_decode return type

  • lib: allow redirecting HX_strlcpy to snprintf

  • lib: automatic finalization of xstmt

  • lib: automatic memory mgt for FOLDER_CONTENT

  • lib: avoid double UTF-8 encoding by html_to_plain

  • lib: avoid joining a non-existing thread

  • lib: cease treating ‘#’ in config values as comment

  • lib: change FOLDER_CONTENT freestanding functions to member funcs

  • lib: change mail_get_length return type to ssize_t

  • lib: change overquota report code to MAPI_E_STORE_FULL

  • lib: class maintenance on resource_pool

  • lib: collect magic array size into a mnemonic

  • lib: combine common expressions into function strange_roundup

  • lib: combine copy-and-pasted code into exmdb_rpc_strerror

  • lib: combine duplicated unique_tie implementation

  • lib: combine underflow/overflow protection logic near add/subtract

  • lib: comment out all unused proptags

  • lib: compact repeated expression (T*)expr

  • lib: consolidate exmdb socket read/write functions

  • lib: convert incomplete and syntactically broken RTF anyway

  • lib: deduplicate and use ACTTYPE names from documentation

  • lib: deduplicate decls for ADVISE_INFO, NOTIF_SINK

  • lib: deduplicate decls for FLATUID, FLATUID_ARRAY

  • lib: deduplicate decls for MESSAGE_STATE, STATE_ARRAY

  • lib: deduplicate decls for NEWMAIL_ZNOTIFICATION, OBJECT_ZNOTIFICATION

  • lib: deduplicate decls for PERMISSION_ROW, PERMISSION_SET

  • lib: deduplicate decls for PROPERTY_NAME, PROPNAME_ARRAY

  • lib: deduplicate decls for PROPID_ARRAY

  • lib: deduplicate decls for PROPTAG_ARRAY

  • lib: deduplicate decls for RESTRICTION*

  • lib: deduplicate decls for RULE_DATA

  • lib: deduplicate decls for RULE_LIST

  • lib: deduplicate decls for {SHORT,LONG,LONGLONG,STRING}_ARRAY

  • lib: deduplicate decls for SORT_ORDER, SORTORDER_SET

  • lib: deduplicate decls for struct BINARY, BINARY_ARRAY

  • lib: deduplicate decls for struct GUID, GUID_ARRAY

  • lib: deduplicate decls for TAGGED_PROPVAL, TPROPVAL_ARRAY, TARRAY_SET

  • lib: deduplicate decls for ZNOTIFICATION, ZNOTIFICATION_ARRAY

  • lib: deduplicate display type constants

  • lib: deduplicate exmdb_client_ declarations

  • lib: deduplicate exmdb_rpc.cpp

  • lib: deduplicate PidLid constants

  • lib: deduplicate PLUGIN_ definitions

  • lib: deduplicate resource_get_ defines

  • lib: deindent exmdb_ext.cpp

  • lib: delete empty function ext_buffer_pull_free

  • lib: delete empty function single_list_free

  • lib: delete redundant buffer packing functions

  • lib: delete unused array.cpp

  • lib: delete unused implementation of strcasestr

  • lib: delete unused PT_STRING8 variants of MAPI property definitions

  • lib: dissolve goto statements in exmdb_ext.cpp

  • lib: do away with contexts_pool function pointer casting

  • lib: drop 3rd argument from gx_sql_prep

  • lib: drop pthread_cancel from console_server_notify_main_stop

  • lib: ensure mime_get_length callers check for <0

  • lib: expand char arrays to hold usernames (emailaddrs)

  • lib: expand field sizes of EMAIL_ADDR

  • lib: expand mapidefs comment about MS-OAUT

  • lib: handle BinHex repetition char 0x90 at start of buffer

  • lib: have unique_tie::operator~ clear all private members

  • lib: make arglist part of the EXMIDL/ZCIDL macro

  • lib: make ext_buffer_push run in amortized linear

  • lib: make LONG_ARRAY et al trivial again

  • lib: mark EXT_PULL::init as requiring an allocator

  • lib: more detailed error return values for rtf_convert_group_node

  • lib: pick a better initial size for dynamic EXT_PUSH buffers

  • lib: put Olson tz code into a namespace

  • lib: rectify syntax error for beXX_to_cpu

  • lib: reduce indent of html_init_library

  • lib: reduce requirements for ext_buffer.hpp inclusion

  • lib: rename MAPI_ to ZMG_ constants

  • lib: replace hard-to-read byteswapping macros

  • lib: replace PROP_TAG_ADDRESBOOK* with standardized PR_ names

  • lib: rewrite config_file_save for size

  • lib: sort proptag lists

  • lib: split mysql parts off database.h

  • lib: stay silent on absence of optional service functions

  • lib: support for reading type-2 ABKT templates

  • lib: switch bounce_producer’s g_resource_list to a stdlib container

  • lib: switch bounce_producer to C++ stdlib mutexes

  • lib: switch service.context_num to uint

  • lib: switch to ABK display template control type/flag names from the docs

  • lib: switch to std::mutex

  • lib: trim 3rd arg to contexts_pool_init

  • lib: trim gotos from rtf_convert_group_node

  • lib: turn MIME_FIELD length valuse into unsigneds

  • lib: use common-place PR_OOF_*/PR_EC_* tag names

  • lib: use full 8-char salt for md5crypt

  • lib: use size_t for LIST_FILE members

  • lib: use standardized folder deletion flag names

  • lib: use standardized fright* flag names

  • lib: use standardized MAPI_ object type names

  • lib: use standardized MSGFLAG_ message flag names

  • lib: use standardized PR_ACCESS* tag names

  • lib: use standardized PR_ATTACH_DATA_BIN/OBJ tag name

  • lib: use standardized PR_ATTACH_* tag names

  • lib: use standardized PR_BODY tag name

  • lib: use standardized PR_CHANGE_KEY tag name

  • lib: use standardized PR_CREATION_TIME tag name

  • lib: use standardized PR_DELETED_* tag names

  • lib: use standardized PR_DISPLAY_NAME tag name

  • lib: use standardized PR_DISPLAY_* tag names

  • lib: use standardized PR_EMAIL_ADDRESS tag name

  • lib: use standardized PR_ENTRYID tag name

  • lib: use standardized PR_INTERNET_CPID, PR_LOCALE_ID

  • lib: use standardized PR_IPM_* tag names

  • lib: use standardized PR_LAST_MODIFICATION_TIME tag name

  • lib: use standardized PR_MESSAGE_FLAGS tag name

  • lib: use standardized PR_MESSAGE_SIZE tag name

  • lib: use standardized PR_MESSAGE_* tag names

  • lib: use standardized PR_OBJECT_TYPE tag name

  • lib: use standardized PR_PARENT_* tag names

  • lib: use standardized PR_PREDECESSOR_CHANGE_LIST tag name

  • lib: use standardized PR_READ tag name

  • lib: use standardized PR_RECORD_KEY tag name

  • lib: use standardized PR_SMTP_ADDRESS tag name

  • lib: use standardized PR_SOURCE_KEY tag name

  • lib: use standardized PR_STORE_* tag names

  • lib: use standardized PR_*SUBJECT* tag names

  • lib: use standardized PR_* tag names

  • lib: use stdlib containers for html.cpp

  • lib: use std::min for memcpy

  • lib: use STREAM_SEEK, BOOKMARK names from documentation

  • logthru: add logfile support and reloading

  • mapi_lib: add length parameter to common_util_entryid_to_username

  • mapi_lib: add length parameter to oxcical_get_smtp_address

  • mapi_lib: add length parameter to oxcmail_export_address

  • mapi_lib: add length parameter to oxcmail_export_addresses

  • mapi_lib: add length parameter to oxcmail_get_smtp_address

  • mapi_lib: centralize element growth parameters

  • mapilib: combine oxcical pidlid constants

  • mapilib: combine oxcmail pidlid constants

  • mapi_lib: compact busy status int/string mapping

  • mapi_lib: compact calendar scale int/string mapping

  • mapilib: compact oxcical if-1L-1L to ?:

  • mapi_lib: compact replicated busystatus emission code

  • mapi_lib: complete tpropval_array conversion to stdbool

  • mapi_lib: delete unnecessary memcpy during EXT_PULL::g_wstr

  • mapi_lib: guard against integer underflow in pull_svreid

  • mapi_lib: repair RECIPIENT_ROW::pdisplay_type pointing to stack

  • mapi_lib: replace address property magic values by standardized mnemonics

  • mapi_lib: replace busy status magic values by standardized mnemonics

  • mapi_lib: resolve instances of -Wabsolute-value

  • mapi_lib: rework code to soothe clang analyzer warning

  • mapi_lib: silence clang warning about uninitialized value in RTF parser

  • mapi_lib: support for the olWorkingElsewhere busy status

  • mapi_lib: support MH encodings

  • mapilib: switch oxcical from INT_HASH to unordered_map<int>

  • mapilib: switch oxcmail from INT_HASH to unordered_map<int>

  • mapi_lib: use standardized calender scale enum names

  • mda, mra: add const/unsigned qualifiers

  • mda, mra: compact system_service hook definitions

  • mda, mra: expand char arrays to hold usernames (emailaddrs)

  • mda, mra: handle multipurpose dispatch return codes

  • mda, mra: turn dispatch value into a multi-purpose field

  • mda, mra: use stdlib container for g_def_code_table

  • mda: switch to std::mutex

  • mda: switch to std::shared_mutex

  • midb: add additional locking needed for g_server_list

  • midb_agent: compact get_connection code

  • midb_agent: deindent fetch_detail, fetch_detail_uid

  • midb_agent: deindent get_connection

  • midb_agent: reduce excess gx_inet_connect messages

  • midb_agent: speed up termination during midb connection trying

  • midb_agent: use “auto” specifier with get_connection()

  • midb: break up if stmt for static analysis

  • midb: change silly FDDT return code on absent folder

  • midb: check return value of tpropval_array_set_propval

  • midb: compact repeated expression (T*)expr

  • midb: default REMOTE_CONN_floating(&&)

  • midb: drop implicit conversion of IDB_REF

  • midb: emit log message when sqlite DBs cannot be opened

  • midb: make calls to mail_engine_put_idb automatic

  • midb: mark IDB_REF(IDB_ITEM *) as explicit

  • midb: reduce indent in midcl_thrwork

  • midb: reduce main() unwinding boilerplate

  • midb: replace custom IDB_REF by unique_ptr-with-deleter

  • midb: replace magic return values by mnemonics

  • midb: replace pthread_cancel by join procedure

  • midb: restore str_hash_iter_get_value semantics

  • midb: switch g_hash_list to a stdlib container

  • midb: switch largely to std::mutex

  • midb: use “auto” keyword around gx_sql_prep

  • midb: use “auto” keyword around mail_engine_get_idb, mail_engine_get_folder_id

  • midb: utilitze xstmt::finalize

  • midb: wrap sqlite3_close in an exit scope

  • midb: zero-initialize AGENT_THREAD, REMOTE_CONN struct members

  • misc: replace more strncpy sites by HX_strlcpy

  • mlist_expand: expand mailaddr buffers to UADDR_SIZE

  • mod_cache: add missing include <atomic>

  • mod_cache: implement fallback to built-in defaults

  • mod_cache: move cache.txt reading to separate function

  • mod_cache: switch to std::mutex

  • mod_cache: use stdlib containers for g_directory_list

  • mod_fastcgi: avoid using /../ in path

  • mod_proxy: move proxy.txt reading into separate function

  • mod_proxy: pick better variable names

  • mod_proxy: switch g_proxy_list to a stdlib container

  • mra: switch to std::mutex

  • mra: switch to std::shared_mutex

  • mt2exm: set PR_LAST_MODIFICATION_TIME if not present

  • mt2exm: start exmdb connection after base maps have been read

  • mysql_adaptor: add manpage reference to logmsg about schema_upgrade skip/abort

  • mysql_adaptor: add schema_upgrades=hostid

  • mysql_adaptor: change default schema_upgrades action to “skip”

  • mysql_adaptor: collect magic array size into a mnemonic

  • mysql_adaptor: compact config log messages

  • mysql_adaptor: complain if there is an overlap between user and alias table

  • mysql_adaptor: deindent svc_mysql_adaptor

  • mysql_adaptor: deindent verify_password

  • mysql_adaptor: delete duplicate get_username <> get_username_from_id

  • mysql_adaptor: disable firsttime password feature by default

  • mysql_adaptor: establish server connections on demand only

  • mysql_adaptor: heed user_properties.order_id from now on

  • mysql_adaptor: move z_null to single user .cpp file

  • mysql_adaptor: new config loader with std::string and direct parameter init

  • mysql_adaptor: pass length parameter to firsttime_password

  • mysql_adaptor: reorder functions

  • mysql_adaptor: silence successful reconnect messages

  • mysql_adaptor: support config reloading

  • mysql_adaptor: use SHA512 crypt for firsttime_pw functionality

  • oxdisco: add built-in defaults

  • oxdisco: handle empty input XML document

  • pam_gromox: set global config file object

  • pff2mt: dump MNID_ID names with hex ID

  • pff2mt: resolve instances of -Wmismatched-new-delete

  • pff2mt: restore folder progress message

  • pffimport: abandon libpff item type for parent descriptor

  • pffimport: add command for splicing PFF objects into existing store hierarchy

  • pffimport: add const qualifiers to some functions

  • pffimport: add more dry-run mode checks

  • pffimport: add -p option for property detail view

  • pffimport: add support for transferring PT_CLSID propvals

  • pffimport: attachment support

  • pffimport: avoid running into PF-1034/PF-1038 assertions

  • pffimport: consistently report errors to stderr

  • pffimport: consistent return value checks

  • pffimport: cure occurrence of PF-1036 exception

  • pffimport: ditch extraneous argument to az_item_get_propv

  • pffimport: do not abort when treevisualizing u-0 type nodes

  • pffimport: drop extra set of braces from -p output

  • pffimport: dump NID_MESSAGE_STORE during -t walk

  • pffimport: dump NID_NAME_TO_ID_MAP during -t walk

  • pffimport: dump raw mvprop data for analysis

  • pffimport: emit all messages to stderr

  • pffimport: emit terse progress report in absence of -t

  • pffimport: facilitate debugging 0-byte multivalue properties

  • pffimport: factorize initial destination mailbox discovery

  • pffimport: factor out folder map dumping

  • pffimport: factor out part of the namedprop resolution

  • pffimport: handle Unicode properties with bogus data

  • pffimport: hook up attachments to their message objects

  • pffimport: implement named property translation

  • pffimport: infrastructure for folder mapping

  • pffimport: let az_item_get_string_by_propid take a proptag

  • pffimport: limit ASCII string dumps like Unicode dumps

  • pffimport: lookup named properties ahead of time

  • pffimport: move generic functions to another file

  • pffimport: move to pipeline-based importer architecture (pff2mt, mt2exm)

  • pffimport: new way to track each item level’s parent

  • pffimport: partial multivalue property support

  • pffimport: recognize –help option

  • pffimport: reduce az_item_get_record_entry_by_type arguments

  • pffimport: refine check for broken mvprop blocks

  • pffimport: reorder blocks in do_item2 for function split

  • pffimport: replace manual msg dumper by MESSAGE_CONTENT dumper

  • pffimport: replace recordent dumper by TAGGED_PROPVAL dumper

  • pffimport: report and skip over broken attachments

  • pffimport: report NID_MESSAGE_STORE presence as normal condition

  • pffimport: resolve instance of -Wmain

  • pffimport: resolve static analyzer warnings

  • pffimport: separate function for folder map population

  • pffimport: skip server-side propname resolution in dry mode

  • pffimport: skip transfer message in dry run

  • pffimport: spacing adjustments in tree output

  • pffimport: split do_item2 per pff item type

  • pffimport: split do_print_extra off do_item2

  • pffimport: start analysis at the absolute PFF root

  • pffimport: stop showing empty summary displayname/subject in tree mode

  • pffimport: stop showing too many commas in -t/-p output

  • pffimport: switch mostly to exception-based error reporting

  • pffimport: treat contacts, notes, tasks like email messages

  • php-lib-db: add log functions and replace die

  • php_mapi: address a potential future use-after-free

  • php_mapi: better error descriptions for exceptions

  • php_mapi: compact if-1L-1L blocks to use ?:

  • php_mapi: compact repeated error checking

  • php_mapi: deduplicate ext_pack_pull_*

  • php_mapi: deduplicate ONEOFF_ENTRYID

  • php_mapi: deduplicate PULL_CTX/PUSH_CTX

  • php_mapi: deduplicate types.h declarations

  • php_mapi: unbreak STREAM_OBJECT seeking

  • plugins: compact config file reading

  • pop3: add notes for POP3_CONTEXT::array

  • pop3: compact standardized response line emission

  • pop3: delete netconsole routine for pop3_code

  • pop3: delete parsing of pop3_code.txt

  • pop3: delete POP3_CODE enum and reduce numeric range

  • pop3: delete unused units_allocator.cpp

  • pop3: make ip6_filter optional

  • pop3: use a stdlib container for MSG_UNIT arrays

  • Rebranding followup

  • rebuild: employ documented option parsing

  • rebuild: trim dead stores

  • rebuild: use “auto” keyword around gx_sql_prep

  • Revert “ldap_adaptor: add option to disable auth connection persistence”

  • smtp: add config directive “command_protocol”

  • smtp: bump logmsg severity for rejected deliveries

  • smtp: collect smtp_parser_init parameters in a struct

  • smtp: compact standardized response line emission

  • smtp: delete netconsole routine for smtp_code

  • smtp: delete parsing of smtp_code.txt

  • smtp: delete SMTP_CODE enum and reduce numeric range

  • smtp: join overlapping struct definitions and move to stdlib containers

  • smtp: reduce indent in smtp_cmd_handler_check_onlycmd

  • smtp: rename to delivery-queue

  • str_filter: indent reduction in audit_filter.cpp

  • str_filter: replace internal condition for audit-disabled case

  • str_filter: switch g_audit_hash to a stdlib container type

  • str_table(domain_list): add PLUGIN_RELOAD functionality

  • system: add ProtectSystem=yes to systemd units

  • system: delete target units

  • tests: add more zendfake symbols

  • timer: add missing pthread_join for accept thread

  • timer: add pthread_kill for speedier shutdown

  • timer_agent: reduce excess gx_inet_connect messages

  • timer: avoid crash on shutdown

  • timer: lambda-ify block of code for outfactoring

  • timer: move to std::mutex

  • timer: replace pthread_cancel by pthread_join

  • timer: split code block into separate function

  • timer: switch connection list to std::list

  • timer: switch timer list to std::list

  • timer: use exit scopes and compact repeated teardown code

  • tools: add documented -? option

  • tools: add gromox-pffimport script with replacement notice

  • tools: construct SQL queries with snprintf rather than sprintf

  • tools: delete digest utility

  • tools: new utility “gromox-kpd2mt”

  • tools: PFF importer

  • tools: print conn info when database connection has failed

  • tools: reduce code nesting level

  • tools: rename kpd2mt to kdb2mt

  • tools: utilize xstmt::finalize

  • tools: wrap sqlite3_close in an exit scope

  • tools: wrap sqlite3_shutdown in an exit scope

  • zcore: add directive zrpc_debug

  • zcore: add directive zrpc_debug

  • zcore: add length parameter to ab_tree_get_display_name

  • zcore: add missing free() call when object_tree_create fails

  • zcore: add variable for enabling trivial RPC status dumps

  • zcore: change ATTACHMENT_OBJECT freestanding functions to member funcs

  • zcore: change CONTAINER_OBJECT freestanding functions to member funcs

  • zcore: change ICSDOWNCTX_OBJECT freestanding functions to member funcs

  • zcore: change ICSUPCTX_OBJECT freestanding functions to member funcs

  • zcore: change MESSAGE_OBJECT freestanding functions to member funcs

  • zcore: change TABLE_OBJECT freestanding functions to member funcs

  • zcore: change USER_OBJECT freestanding functions to member funcs

  • zcore: collapse zarafa_server.cpp nested ifs into one

  • zcore: compact common subexpressions

  • zcore: compact if-1-1 blocks to use ?:

  • zcore: compact if-1L-1L near return into ?:

  • zcore: compact repeated expression (T*)expr

  • zcore: compact repeated logic involving rop_make_util_*_guid

  • zcore: compact repeated static_cast exprs

  • zcore: CSE-combine multiflag checks

  • zcore: defer a few unique_ptr::reset calls on specific paths

  • zcore: deindent ab_tree_get_node_type, ab_tree_get_server_dn

  • zcore: deindent folder_object.cpp, store_object.cpp

  • zcore: deindent object_tree_free_root

  • zcore: deindent store_object_get_named_{propids,propnames}

  • zcore: deindent zarafa_server_deletemessages

  • zcore: deindent zarafa_server_logon

  • zcore: deindent zarafa_server_notification_proc

  • zcore: deindent zarafa_server_openabentry

  • zcore: deindent zarafa_server_submitmessage

  • zcore: do not switch to Chinese when store language unresolvable

  • zcore: drop implicit conversion of AB_BASE_REF

  • zcore: drop implicit conversion of USER_INFO_REF

  • zcore: factor PROP_TAG_ECUSERLANGUAGE handling out to split function

  • zcore: lambdaify sections of hierconttbl_query_rows

  • zcore: lambdaify sections of table_object_get_folder_permission_rights

  • zcore: log attempts to send mail to no recipients

  • zcore: log failed attempts to use delegate FROM

  • zcore: make calls to ab_tree_put_base automatic

  • zcore: make calls to zarafa_server_put_user_info automatic

  • zcore: make g_notify_table a stdlib container

  • zcore: make g_session_table a stdlib container

  • zcore: make g_user_table a stdlib container

  • zcore: make object_tree_* member functions

  • zcore: make OBJECT_TREE::phash a stdlib container

  • zcore, php_mapi: deduplicate RPC_REQUEST

  • zcore, php_mapi: deduplicate RPC_RESPONSE

  • zcore: reduce main() unwinding boilerplate

  • zcore: reload zrpc_debug variable on SIGHUP

  • zcore: repair inaccurate BOOL value passed to container_object_get_container_table_num

  • zcore: replace custom AB_BASE_REF by unique_ptr-with-deleter

  • zcore: replace custom USER_INFO_REF by unique_ptr-with-deleter

  • zcore: replace pthread_cancel by join procedure

  • zcore: resolve instances of -Wformat*

  • zcore: resolve deadcode warning for FOLDER_OBJECT::updaterules

  • zcore: skip call to table_object_set_table_id for unhandled table types

  • zcore: source code indent reduction

  • zcore: source-inline folder_object_get_id function calls

  • zcore: source-inline folder_object_get_store function calls

  • zcore: source-inline folder_object_get_type function calls

  • zcore: source-inline store_object_check_private function calls

  • zcore: source-inline store_object_get_account_id function calls

  • zcore: source-inline store_object_get_mailbox_guid function calls

  • zcore: split functions off hierconttbl_query_rows

  • zcore: split functions off table_object_get_folder_permission_rights

  • zcore: stop using strncpy

  • zcore: store ownership bit

  • zcore: switch ab_tree from INT_HASH to unordered_map

  • zcore: trim braces on if blocks with trivial condition /FALSE == .*b_/

  • zcore: trim braces on if blocks with trivial condition /TRUE == .*b_/

  • zcore: trim braces on single-expr blocks

  • zcore: trim redundant unique_ptr::reset calls

  • zcore: turn freestanding FOLDER_OBJECT functions into member ones

  • zcore: turn freestanding STORE_OBJECT functions into member ones

  • zcore: turn store_object_check_owner_mode into a member function

  • zcore: turn store_object_get_account into a member function

  • zcore: turn store_object_get_dir into a member function

  • zcore: turn store_object_guid into a member function

  • zcore: unbreak deletion of origin message during copy-delete moves

  • zcore: use “auto” specifier with zarafa_server_get_info

  • zcore: use “auto” specifier with zarafa_server_query_session/USER_INFO

  • zcore: use stdlib types for USER_INFO members

  • zcore: variable scope reduction in table_object_get_folder_permission_rights

  • zcore: wrap CONTAINER_OBJECT in unique_ptr

  • zcore: wrap OBJECT_TREE in unique_ptr

  • zcore: wrap STORE_OBJECT in unique_ptr

  • zcore: wrap USER_OBJECT in unique_ptr

Bugfixes

  • all: fix instances of -Wmaybe-uninitialized

  • all: fix instances of unchecked return values

  • all: fix instances of TOCTOU

  • all: fix instances of -Wodr

  • all: fix instances of -Wformat-truncation

  • all: fix instances of -Wsign-compare

  • all: fix instances of -Wshadow

  • authmgr: fix type mismatch on dlname ldap_auth_login2

  • daemons: fix type mismatch on log_info

  • daemons: fix unbalanced reference counts on service plugins

  • daemons: switch thread numbers to unsigned

  • doc: fix wrong file reference in mod_fastcgi.4gx

  • email_lib: fix evaluation of undefined variable

  • exch: fix instances of -Wunused-*

  • exch: fix instances of -Wunused-variable

  • exch: fix a number of dead stores

  • exch: fix incomplete module teardown on init failure

  • exch: fix potential null deref on plugin unload

  • exchange_emsmdb: fix an instance of type punning

  • exchange_emsmdb: fix comparison against unsigneds

  • exchange_emsmdb: fix compiler warning for casting to whacky type

  • exchange_emsmdb: fix copy paste error

  • exchange_emsmdb: fix crash during getpropertiesall

  • exchange_emsmdb: fix crash upon retrieval of some calculated properties

  • exchange_emsmdb: fix dereference null return value

  • exchange_emsmdb: fix failed substitution logon_object_get_account -> plogon->get_dir

  • exchange_emsmdb: fix ftstream_parser_create running into EISDIR error

  • exchange_emsmdb: fix incorrect sleep amount

  • exchange_emsmdb: fix integer arithmetic and truncation issues in rop_readstream, rop_seekstream

  • exchange_emsmdb: fix integer multiplication overflow during quota check

  • exchange_emsmdb: fix logical vs. bitwise operator

  • exchange_emsmdb: fix read from uninitialized variable

  • exchange_emsmdb: fix resource leaks

  • exchange_emsmdb: fix ropGetPropertiesList name

  • exchange_emsmdb: fix signed arithmetic issues in rop_seekrow

  • exchange_emsmdb: fix wrong size argument

  • exchange_nsp: fix function signature mismatches

  • exchange_nsp: fix nullptr deref in nsp_interface_resolve_names

  • exchange_rfr: fix out-of-bounds access

  • exmdb_client: fix unspecified state after std::move

  • exmdb_provider: fix instance of -Wmissing-declarations

  • exmdb_provider: fix instances of FORWARD_NULL

  • exmdb_provider: fix a set of unterminated strings

  • exmdb_provider: fix an incomplete permission check

  • exmdb_provider: fix an out-of-bounds write in common_util_get_proptags

  • exmdb_provider: fix an unterminated string buffer in common_util_username_to_essdn

  • exmdb_provider: fix broken recursive deletion of folders

  • exmdb_provider: fix crash on shutdown near pthread_kill

  • exmdb_provider: fix double call to db_engine_put_db

  • exmdb_provider: fix hang when aborting midway through db_engine_run

  • exmdb_provider: fix illegal mutex double unlock

  • exmdb_provider: fix missing calls to db_engine_put_db

  • exmdb_provider: fix null dereference in exmdb_parser_stop

  • exmdb_provider: fix out-of-bounds write

  • exmdb_provider: fix resource leak in exmdb_server_set_message_instance_conflict

  • exmdb_provider: fix too early db_engine_put_db calls

  • exmdb_provider: fix unchecked return value

  • exmdb_provider: fix unchecked return value in exmdb_server_load_message_instance

  • exmdb_provider: fix unchecked return values in exmdb_server_flush_instance

  • exmdb_provider: fix unused value in exmdb_server_query_table

  • exmdb_provider: fix unused value in exmdb_server_store_table_state

  • exmdb_provider: fix unused values in table_load_content_table

  • exmdb_provider: fix use of wrong quota property

  • exmdb_provider: fix wrong serialization of REQ_SET_MESSAGE_READ_STATE

  • http: fix a number of dead stores

  • http: fix crash when user_default_lang is unset

  • http: fix dereference null return value

  • http: fix destination buffer too small

  • http: fix explicit null dereference

  • http: fix ignored return values from ndr_pull_data_*

  • http: fix out-of-bounds read

  • http: fix out-of-bounds write

  • imap: dissolve uses of snprintf to fixed buffer in imap_parser_process

  • imap: fix absence of starttls capability keyword

  • imap: fix double free during shutdown

  • imap: fix garbage listing of folders

  • imap: fix off-by-one in literal processing

  • imap: fix wrong strptime format for internaldate parsing

  • ldap_adaptor: fix incorrect comparison

  • ldap_adaptor: fix null deref when LDAP server is away

  • lib/mapi: fix possible unsigned underflow

  • lib: fix a number of dead stores

  • lib: fix comparison against unsigneds (related to mime_get_length)

  • lib: fix crash when zcore uses a zero-length name during zcore_callid::COPYFOLDER

  • lib: fix inconsistent capacity allocations in ext_buffer

  • lib: fix intended return value of gx_snprintf1

  • lib: fix multiplication overflow in Olson tz code

  • lib: fix out-of-bounds write in parse_mail_addr, parse_mime_addr

  • lib: fix parenthesis bugged expression in threads_pool

  • lib: fix use-after-destruction near ext_buffer_push_release

  • lib: spello fix for pidTag* in comments

  • mapi_lib/rtf: fix passing an undefined value between functions

  • mapi_lib: fix PidLidIntendedStatus always being olTentative

  • mapi_lib: fix an allocation too short

  • mapi_lib: fix an out-of-bounds write in oxvcard_import

  • mapi_lib: fix memory leak in rtf_load_element_tree

  • mapi_lib: fix memory leak in rule_actions_dup

  • mapi_lib: fix returns with garbage values

  • mda: fix a number of dead stores

  • mda: fix spello “envelop”

  • midb: fix concurrent use of sqlite data structure

  • midb: fix leftover debugging breakpoint infinite loop

  • midb: fix out-of-bounds read

  • midb: fix unchecked return value

  • midb: fix wrong serialization of REQ_LOAD_PERMISSION_TABLE

  • misc: fix instances of NULL_RETURNS

  • misc: fix two overlapping copy operations

  • misc: fix unbounded strcpy calls

  • misc: fix unintialized pointers/scalars

  • mod_cache: fix spello “defualt”

  • mod_proxy: fix out-of-bounds access parsing proxy.txt

  • mra: fix occassional compile error

  • mt2exm: add small prefix to log messages

  • mt2exm: fix inverted meaning of exm_create_folder::o_excl parameter

  • mysql_adaptor: fix unchecked return value

  • oxcical: fix possible null deref in oxcical_parse_tzdefinition

  • oxdisco: fix incorrect XML tag name “DelpoymentId”

  • pff2mt: support oddly-encoded subject prefix length marker

  • pffimport: fix cov-scan reports

  • pffimport: fix i586 build error

  • php_mapi: fix a number of dead stores

  • php_mapi: fix signed arithmetic issues in stream_object_seek

  • tools: fix crash when /etc/gromox is unreadable

  • zcore: fix a number of dead stores

  • zcore: fix logical vs. bitwise operator

  • zcore: fix mismatch of RESP_CONFIGSYNC, RESP_SYNCMESSAGECHANGE structs

  • zcore: fix null deref in delegate rule scenario

  • zcore: fix resource leak

  • zcore: fix signed arithmetic issues in zarafa_server_seekrow

  • zcore: fix unsigned compared against 0

  • zcore: fix use after free in zarafa_server_openabentry

  • zcore: fix wrong deserialization of DB_NOTIFY_DATAGRAM/FOLDER_MODIFIED

  • zcore: fix zarafa_server_openembedded adding wrong message to objtree

Removed

  • adaptor: remove unused functions

  • all: remove config_file_set_value calls with no effect

  • all: remove outdated, inaccurate and trivial function descriptions

  • all: remove some unused includes

  • all: remove unused pthread.h includes

  • all: remove unused variables

  • exch: remove log_plugin service plugin

  • exch: remove mod_proxy

  • exchange_emsmdb: remove logically dead code

  • exmdb_provider: delete remove() call with garbage parameter

  • http: remove unused functions

  • ldap_adaptor: remove unnecessary base discovery

  • lib: abolish itoa function

  • lib: remove ext_pull_ freestanding function variants

  • lib: remove ext_push_ freestanding function variants

  • lib: remove ineffective unsigned comparison

  • lib: remove pointer indirection for PROPERTY_NAME::plid

  • lib: remove unused definitions from plugin.hpp

  • mda, mra: remove unnecessary decorative comment lines

  • midb: remove mail_engine_sync_mailbox’s goto spaghetti

  • midb: remove unused functions

  • midb: remove unused midb protocol commands

  • mod_fastcgi: remove unnecessary braces for 1-line blocks

  • mysql_adaptor: remove config_file_set_value calls

  • mysql_adaptor: remove unused function z_strlen

  • php_mapi: remove unused zcore RPC structs

  • smtp: remove unused smtp_param::threads_num member

  • system: remove obsolete PartOf= directives of systemd units

  • zcore: remove constant 2nd argument to table_query_rows

  • zcore: remove dead code from storetbl_query_rows

  • zcore: remove spurious break in table_object_query_rows

  • zcore: remove unused functions

grommunio Sync

Repository: https://github.com/grommunio/grommunio-sync

Code statistics:

  • +23138 lines added

  • -25155 lines removed

Commits:

  • 2021-08: 5

  • 2021-07: 23

  • 2021-06: 6

  • 2021-05: 1

  • 2021-04: 0

  • 2021-03: 0

New (Improvements)

  • add missing ADMIN_API_POLICY_ENDPOINT to config.php

  • added ProvisioningManager

  • added TTL to InterprocessData setData

  • added TTL to setKey

  • check if contentdata is set before accessing it

  • deviceManager is available only when authenticated, adjusting code to match

  • enable provisioning by default

  • let sync have its own user

  • log: assign su permissions for logrotate

  • log: update paths

  • refactoring provisioning process

  • retrieving policies from admin api

  • save state data as json

  • save states in redis and the user store

  • set missing properties for signed emails

  • use microtime for start

Bugfixes

  • don’t serialize json ASDevice in redis

  • fix Utils::PrintAsString() to recognize null correctly

  • fix fallback to default policies if API endpoint is not available

  • rename redis key to statefoldercache

Removed

  • remove default policies and policyname

  • remove grommunio-sync-admin.php

grommunio Setup

Repository: <internal-only>

Code statistics:

  • +2180 lines added

  • -1278 lines removed

Commits:

  • 2021-08: 18

  • 2021-07: 19

  • 2021-06: 2

  • 2021-05: 8

  • 2021-04: 7

  • 2021-03: 91

New (Improvements)

  • log: redirect ssl self-generation to log file

  • move fullca function to separate script

  • move logfile to /var/log/ for persitence

  • mysql_adaptor: set schema_upgrade in the right file

  • new SQL setup

  • new TLS setup dialog

  • new hostname dialog

  • new repo dialog

  • new repo setup

  • new setup finish screen

  • new welcome screen

  • plugin: add onlyoffice as default enabled plugin

  • query admin for relayhost and set it in postfix

  • rebranding: update URLs / mail

  • reject some path injections for FQDN & hostname

  • replace cron entry by a persistent systemd timer

  • repos: enable autorefresh

  • req: add redis new grommunio default service for operation

  • res: rename certbot service and timer

  • restore sh compatibility

  • reword the Lets_Encrypt prompt

  • services: don’t enable prosody if not checked as to be installed in the first place

  • set +x bit on certbot-renew-hook

  • setup: be more specific than “Admin UI”

  • ssl: adjust to new nginx config structure

  • ssl: switch to certbot standalone mode

  • strip filler wording from dialog texts

  • style/log: re-add indications at which stage the configuration stage runs

  • style: avoid mixing double and single quotes in a config file

  • style: better dialog in case of failure

  • style: better readability through spacing

  • style: change idents to one standard

  • style: make code-style consistent

  • style: put init vars on top, static anyways

  • style: re-add unused progress indicators

  • style: readability/style

  • support “localhost” as a default domain for dirty setups

  • support PHP8

  • support: add support package

  • support: silence killing of bgid

  • tls: add the link to the current terms of service from Let’s Encrypt

  • tls: inform admin about failed certbot command

  • tls: move recommended domains to optional

  • trim filler wording

  • typo: replace _ with space

  • typo: stls->starttls

  • upgrade to 15.3

  • use IPv6 transport and privileged port for LDA

  • use mysql to provide virtual_mailbox_domains

  • use systemctl, not service

  • verify installed amount of memory and warn user

  • visibility: don’t show all the logs to terminal, pipe to logfile instead.

  • workflow: nginx failing start

  • write php config to new location

Bugfixes

  • nginx: correct replacement of vars

  • postfix: FQDN fix

  • shellcheck: fix SC2004

  • shellcheck: fix SC2006

  • shellcheck: fix SC2016

  • shellcheck: fix SC2027 && SC2086

  • shellcheck: fix SC2046

  • shellcheck: fix SC2086

  • shellcheck: fix SC2102

  • shellcheck: fix SC2129

  • shellcheck: fix SC2148

  • shellcheck: fix SC2166

  • shellcheck: fix SC2223

  • shellcheck: fix SC2254

  • ssl: fix providing owncert unresolvable loop

  • style: readability / style fixes

Removed

  • Remove Zb, Zu escape codes

  • Remove inconsistent step counter

grommunio Web

Repository: https://github.com/grommunio/grommunio-web

Code statistics:

  • +15712 lines added

  • -4891 lines removed

Commits:

  • 2021-08: 18

  • 2021-07: 8

  • 2021-06: 2

  • 2021-05: 3

  • 2021-04: 3

  • 2021-03: 47

New (Improvements)

  • Add CSS to style popout window

  • Add default domain configuration

  • Added Development section to Readme

  • Disable password plugin server side

  • Explicitly show English as British English

  • Highlight ‘open shared folders’ button

  • Implement another way to make textareas white without changing notes colors

  • Improve darktheme

  • Let contact detail dialog show business address by default

  • Let web have its own user

  • MAPI: add error code to action rejection message dialogs

  • MAPI: emit textual error strings

  • Plugin: MDM plugin

  • Plugin: Meet plugin

  • Plugin: Passwd - plugin improvements (handling)

  • Plugin: Passwd - reorder conditions for enhancement

  • Plugin: Passwd - restore ability to use zcore setpasswd

  • Rebrand grammm to grommunio

  • Remove redundant error log

  • Remove unused themes

  • Rename current themes and rename intern light and dark theme

  • Reword “Unknown MAPI Error: 0x000003eb”

  • Send request to admin API to change the password

  • Set page title to something useful

  • Sort the language list in the settings dialog

  • Style: gradient header in light theme

  • Translate ecUnknownUser to a sensible error message

  • Try fixing broken popout CSS

  • Update border color

  • Use DOMPurify as XSS sanitizer

  • Use anchored gitignores

Bugfixes

  • Fix: ERROR - variable customItems is undeclared

  • Fix: broken ‘Additional information’ textarea

  • Fix: color in dropdown box

  • Fix: copy & paste from certain browsers end in copy of steuerzeichen.

  • Fix: css on firefox

  • Fix: dark theme bugs and added css variables to make the code more maintainable

  • Fix: invisible settings icon

  • Fix: make manifest.xml build and source aware

  • Fix: presentation of the topbar with linear-gradient & changed svg color.

  • Fix: weird background-color of addressbook

Removed

  • Core: remove obsolete CmdAgent

  • Disable nwjs usage