mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			5.0-rc2-br
			...
			2.1.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 49ff894d6a | ||
|  | f3e75b6b5f | ||
|  | 6b9f37dc8f | ||
|  | cd926b8aae | 
| @@ -7,6 +7,15 @@ All notable changes to the Zulip server are documented in this file. | ||||
| This section lists notable unreleased changes; it is generally updated | ||||
| in bursts. | ||||
|  | ||||
| ### 2.1.1 -- 2019-12-13 | ||||
|  | ||||
| - Fixed upgrading to 2.1.x with the LDAP integration enabled in a | ||||
|   configuration where `AUTH_LDAP_REVERSE_EMAIL_SEARCH` is newly | ||||
|   required, but is not set yet. | ||||
| - Reimplemented --postgres-missing-dictionaries installer option, | ||||
|   used with our new support for a DBaaS managed database. | ||||
| - Improved documentation for `AUTH_LDAP_REVERSE_EMAIL_SEARCH`. | ||||
|  | ||||
| ### 2.1.0 -- 2019-12-12 | ||||
|  | ||||
| **Highlights:** | ||||
|   | ||||
| @@ -176,29 +176,33 @@ In either configuration, you will need to do the following: | ||||
|    the form it needs for authentication.  There are three supported | ||||
|    ways to set up the username and/or email mapping: | ||||
|  | ||||
|    (A) Using email addresses as usernames, if LDAP has each user's | ||||
|       email address.  To do this, just set `AUTH_LDAP_USER_SEARCH` to | ||||
|       query by email address. | ||||
|    (A) Using email addresses as Zulip usernames, if LDAP has each | ||||
|       user's email address: | ||||
|       * Make `AUTH_LDAP_USER_SEARCH` a query by email address. | ||||
|       * Set `AUTH_LDAP_REVERSE_EMAIL_SEARCH` to the same query with | ||||
|         `%(email)s` rather than `%(user)s` as the search parameter. | ||||
|       * Set `AUTH_LDAP_USERNAME_ATTR` to the name of the LDAP | ||||
|         attribute for the user's LDAP username in the search result | ||||
|         for `AUTH_LDAP_REVERSE_EMAIL_SEARCH`. | ||||
|  | ||||
|    (B) Using LDAP usernames as Zulip usernames, with email addresses | ||||
|       formed consistently like `sam` -> `sam@example.com`.  To do | ||||
|       this, set `AUTH_LDAP_USER_SEARCH` to query by LDAP username, and | ||||
|       `LDAP_APPEND_DOMAIN = "example.com"`. | ||||
|       formed consistently like `sam` -> `sam@example.com`: | ||||
|       * Set `AUTH_LDAP_USER_SEARCH` to query by LDAP username | ||||
|       * Set `LDAP_APPEND_DOMAIN = "example.com"`. | ||||
|  | ||||
|    (C) Using LDAP usernames as Zulip usernames, with email addresses | ||||
|       taken from some other attribute in LDAP (for example, `email`). | ||||
|       To do this, set `AUTH_LDAP_USER_SEARCH` to query by LDAP | ||||
|       username, and `LDAP_EMAIL_ATTR = "email"`. | ||||
|  | ||||
| 1. In configurations (A) and (C), you need to tell Zulip how to look | ||||
|    up a user's LDAP data given their user's email address: | ||||
|  | ||||
|    * Set `AUTH_LDAP_REVERSE_EMAIL_SEARCH` to a query that will find an | ||||
|    LDAP user given their email address.  Generally, this will be | ||||
|    `AUTH_LDAP_USER_SEARCH` in configuration (A) or a search by | ||||
|    `LDAP_EMAIL_ATTR` in configuration (C). | ||||
|    * Set `AUTH_LDAP_USERNAME_ATTR` to the name of the LDAP attribute | ||||
|    for the user's LDAP username in that search result. | ||||
|       taken from some other attribute in LDAP (for example, `mail`): | ||||
|       * Set `AUTH_LDAP_USER_SEARCH` to query by LDAP username | ||||
|       * Set `LDAP_EMAIL_ATTR = "mail"`. | ||||
|       * Set `AUTH_LDAP_REVERSE_EMAIL_SEARCH` to a query that will find | ||||
|         an LDAP user given their email address (i.e. a search by | ||||
|         `LDAP_EMAIL_ATTR`).  For example: | ||||
|         ``` | ||||
|         AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", | ||||
|                                                     ldap.SCOPE_SUBTREE, "(mail=%(email)s)") | ||||
|         ``` | ||||
|       * Set `AUTH_LDAP_USERNAME_ATTR` to the name of the LDAP | ||||
|         attribute for the user's LDAP username in that search result. | ||||
|  | ||||
| You can quickly test whether your configuration works by running: | ||||
|  | ||||
| @@ -210,24 +214,29 @@ from the root of your Zulip installation.  If your configuration is | ||||
| working, that will output the full name for your user (and that user's | ||||
| email address, if it isn't the same as the "Zulip username"). | ||||
|  | ||||
| **Active Directory**: For Active Directory, one typically sets | ||||
|   `AUTH_LDAP_USER_SEARCH` to one of: | ||||
| **Active Directory**: Most Active Directory installations will use one | ||||
| of the following configurations: | ||||
|  | ||||
| * To access by Active Directory username: | ||||
|     ``` | ||||
|     AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", | ||||
|                                        ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)") | ||||
|     AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", | ||||
|                                        ldap.SCOPE_SUBTREE, "(mail=%(email)s)") | ||||
|     ``` | ||||
|  | ||||
| * To access by Active Directory email address: | ||||
|     ``` | ||||
|     AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", | ||||
|                                        ldap.SCOPE_SUBTREE, "(mail=%(user)s)") | ||||
|     AUTH_LDAP_REVERSE_EMAIL_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", | ||||
|                                                 ldap.SCOPE_SUBTREE, "(mail=%(email)s)") | ||||
|     ``` | ||||
|  | ||||
| **If you are using LDAP for authentication**: you will need to enable | ||||
| the `zproject.backends.ZulipLDAPAuthBackend` auth backend, in | ||||
| `AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`.  After doing | ||||
| so (and as always [restarting the Zulip server](settings.md) to ensure | ||||
| `AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`.  After doing so | ||||
| (and as always [restarting the Zulip server](settings.md) to ensure | ||||
| your settings changes take effect), you should be able to log into | ||||
| Zulip by entering your email address and LDAP password on the Zulip | ||||
| login form. | ||||
|   | ||||
| @@ -134,14 +134,11 @@ follows: | ||||
| postgres_password = abcd1234 | ||||
| ``` | ||||
|  | ||||
| Now complete the installation by running the following command to ask | ||||
| the Zulip installer to initialize the postgres database. (Note: The | ||||
| options are different from before). | ||||
| Now complete the installation by running the following commands. | ||||
|  | ||||
| ``` | ||||
| ./zulip-server-*/scripts/setup/install --certbot \ | ||||
|     --email=YOUR_EMAIL --hostname=YOUR_HOSTNAME \ | ||||
|     --remote-postgres --postgres-missing-dictionaries | ||||
| # Ask Zulip installer to initialize the postgres database. | ||||
| su zulip -c '/home/zulip/deployments/current/scripts/setup/initialize-database' | ||||
|  | ||||
| # And then generate a realm creation link: | ||||
| su zulip -c '/home/zulip/deployments/current/manage.py generate_realm_creation_link' | ||||
|   | ||||
| @@ -280,7 +280,7 @@ if [ "$DEPLOYMENT_TYPE" = "dockervoyager" ]; then | ||||
| fi | ||||
|  | ||||
| if [ -n "$POSTGRES_MISSING_DICTIONARIES" ]; then | ||||
|     export POSTGRES_MISSING_DICTIONARIES="true" | ||||
|     crudini --set /etc/zulip/zulip.conf postgresql missing_dictionaries true | ||||
| fi | ||||
|  | ||||
| if [ -n "$REMOTE_POSTGRES" ]; then | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import os | ||||
|  | ||||
| ZULIP_VERSION = "2.1.0" | ||||
| ZULIP_VERSION = "2.1.1" | ||||
| # Add information on number of commits and commit hash to version, if available | ||||
| zulip_git_version_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'zulip-git-version') | ||||
| if os.path.exists(zulip_git_version_file): | ||||
| @@ -10,7 +10,7 @@ if os.path.exists(zulip_git_version_file): | ||||
|             ZULIP_VERSION = version | ||||
|  | ||||
| LATEST_MAJOR_VERSION = "2.1" | ||||
| LATEST_RELEASE_VERSION = "2.1.0" | ||||
| LATEST_RELEASE_VERSION = "2.1.1" | ||||
| LATEST_RELEASE_ANNOUNCEMENT = "https://blog.zulip.org/2019/12/13/zulip-2-1-released/" | ||||
|  | ||||
| # Bump the minor PROVISION_VERSION to indicate that folks should provision | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # Generated by Django 1.11.2 on 2017-06-22 10:22 | ||||
| import os | ||||
|  | ||||
| import bitfield.models | ||||
| import django.contrib.auth.models | ||||
| @@ -37,12 +36,11 @@ class Migration(migrations.Migration): | ||||
|  | ||||
|     initial = True | ||||
|  | ||||
|     zulip_postgres_dictionaries_unavailable = os.getenv("POSTGRES_MISSING_DICTIONARIES", False) | ||||
|     dependencies = [ | ||||
|         ('auth', '0001_initial'), | ||||
|     ] | ||||
|  | ||||
|     if zulip_postgres_dictionaries_unavailable: | ||||
|     if settings.POSTGRES_MISSING_DICTIONARIES: | ||||
|         fts_sql = """ | ||||
| CREATE TEXT SEARCH CONFIGURATION zulip.english_us_search (COPY=pg_catalog.english); | ||||
| """ | ||||
|   | ||||
| @@ -3,7 +3,6 @@ | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from django.conf import settings | ||||
| from django.contrib.auth import get_backends | ||||
| from django.db import migrations | ||||
| from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor | ||||
| from django.db.migrations.state import StateApps | ||||
| @@ -13,7 +12,6 @@ from django.utils.timezone import now as timezone_now | ||||
| from zerver.lib.cache import cache_delete, user_profile_by_api_key_cache_key | ||||
| from zerver.lib.queue import queue_json_publish | ||||
| from zerver.lib.utils import generate_api_key | ||||
| from zproject.backends import EmailAuthBackend | ||||
|  | ||||
| from typing import Any, Set, Union | ||||
|  | ||||
| @@ -159,8 +157,7 @@ def ensure_no_empty_passwords(apps: StateApps, schema_editor: DatabaseSchemaEdit | ||||
|     # If Zulip's built-in password authentication is not enabled on | ||||
|     # the server level, then we plan to skip resetting any users' API | ||||
|     # keys, since the bug requires EmailAuthBackend. | ||||
|     email_auth_enabled = any(isinstance(backend, EmailAuthBackend) | ||||
|                              for backend in get_backends()) | ||||
|     email_auth_enabled = 'zproject.backends.EmailAuthBackend' in settings.AUTHENTICATION_BACKENDS | ||||
|  | ||||
|     # A quick note: This query could in theory exclude users with | ||||
|     # is_active=False, is_bot=True, or realm__deactivated=True here to | ||||
|   | ||||
| @@ -293,6 +293,8 @@ elif REMOTE_POSTGRES_HOST != '': | ||||
|     else: | ||||
|         DATABASES['default']['OPTIONS']['sslmode'] = 'verify-full' | ||||
|  | ||||
| POSTGRES_MISSING_DICTIONARIES = bool(get_config('postgresql', 'missing_dictionaries', None)) | ||||
|  | ||||
| ######################################################################## | ||||
| # RABBITMQ CONFIGURATION | ||||
| ######################################################################## | ||||
|   | ||||
		Reference in New Issue
	
	Block a user