mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 03:53:50 +00:00 
			
		
		
		
	Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | a063dd3b26 | ||
|  | 1cdd451d70 | ||
|  | 8cc7642cdd | ||
|  | 6883c916af | ||
|  | 978a568c0f | ||
|  | f6975f9334 | ||
|  | 0120ff5612 | 
| @@ -4,6 +4,22 @@ All notable changes to the Zulip server are documented in this file. | |||||||
|  |  | ||||||
| ### Unreleased | ### Unreleased | ||||||
|  |  | ||||||
|  | ### 1.4.3 - 2017-01-29 | ||||||
|  | - CVE-2017-0881: Users could subscribe to invite-only streams. | ||||||
|  |  | ||||||
|  | ### 1.4.2 - 2016-09-27 | ||||||
|  | - Upgraded Django to version 1.8.15 (with the Zulip patches applied), | ||||||
|  |   fixing a CSRF vulnerability in Django (see | ||||||
|  |   https://www.djangoproject.com/weblog/2016/sep/26/security-releases/), | ||||||
|  |   and a number of other Django bugs from past Django stable releases | ||||||
|  |   that largely affects parts of Django that are not used by Zulip. | ||||||
|  | - Fixed buggy logrotate configuration. | ||||||
|  |  | ||||||
|  | ### 1.4.1 - 2016-09-03 | ||||||
|  | - Fixed settings bug upgrading from pre-1.4.0 releases to 1.4.0. | ||||||
|  | - Fixed local file uploads integration being broken for new 1.4.0 | ||||||
|  |   installations. | ||||||
|  |  | ||||||
| ### 1.4 - 2016-08-25 | ### 1.4 - 2016-08-25 | ||||||
|  |  | ||||||
| - Migrated Zulip's python dependencies to be installed via a virtualenv, | - Migrated Zulip's python dependencies to be installed via a virtualenv, | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| /var/log/zulip/server.log /var/log/zulip/workers.log /var/log/zulip/manage.log { | /var/log/zulip/server.log /var/log/zulip/workers.log /var/log/zulip/manage.log { | ||||||
| 	missingok | 	missingok | ||||||
| 	rotate 10 | 	rotate 10 | ||||||
| 	size 1GB | 	size 1G | ||||||
| 	compress | 	compress | ||||||
| 	delaycompress | 	delaycompress | ||||||
| 	notifempty | 	notifempty | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| -r ipython.txt | -r ipython.txt | ||||||
| # Django itself; we use a slightly patched version | # Django itself; we use a slightly patched version | ||||||
| git+https://github.com/zulip/truncated-django.git | git+https://github.com/zulip/truncated-django-1.8.15.git@cbf4fa3aef1b17f37d75a70e57f9b69a0f99ed5c#egg=Django==1.8.15 | ||||||
|  |  | ||||||
| GitPython==0.3.2.1 | GitPython==0.3.2.1 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -42,6 +42,14 @@ if not args.skip_puppet: | |||||||
|     subprocess.check_call(["apt-get", "update"]) |     subprocess.check_call(["apt-get", "update"]) | ||||||
|     subprocess.check_call(["apt-get", "-y", "upgrade"]) |     subprocess.check_call(["apt-get", "-y", "upgrade"]) | ||||||
|  |  | ||||||
|  | if not os.path.exists((os.path.join(deploy_path, "zproject/prod_settings"))): | ||||||
|  |     subprocess.check_call(["ln", "-nsf", "/etc/zulip/settings.py", | ||||||
|  |                            os.path.join(deploy_path, "zproject/prod_settings.py")]) | ||||||
|  |  | ||||||
|  | # delete local_settings.py symlink if it exists, as it is now prod_settings.py | ||||||
|  | if os.path.exists((os.path.join(deploy_path, "zproject/local_settings.py"))): | ||||||
|  |     subprocess.check_call(["rm", os.path.join(deploy_path, "zproject/local_settings.py")]) | ||||||
|  |  | ||||||
| subprocess.check_call([os.path.join(deploy_path, "scripts", "lib", "create-production-venv"), | subprocess.check_call([os.path.join(deploy_path, "scripts", "lib", "create-production-venv"), | ||||||
|                        os.path.join(deploy_path, "zulip-venv")]) |                        os.path.join(deploy_path, "zulip-venv")]) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,7 +24,6 @@ Reusing existing connection to localhost:443. | |||||||
|   Content-Type: text/html; charset=utf-8 |   Content-Type: text/html; charset=utf-8 | ||||||
|   Transfer-Encoding: chunked |   Transfer-Encoding: chunked | ||||||
|   Connection: keep-alive |   Connection: keep-alive | ||||||
|   Cache-Control: max-age=0 |  | ||||||
|   Strict-Transport-Security: max-age=15768000 |   Strict-Transport-Security: max-age=15768000 | ||||||
| Length: unspecified [text/html] | Length: unspecified [text/html] | ||||||
| Saving to: ‘/tmp/index.html’ | Saving to: ‘/tmp/index.html’ | ||||||
|   | |||||||
| @@ -1501,6 +1501,29 @@ class SubscriptionAPITest(ZulipTestCase): | |||||||
|         self.assertIn("exists", json) |         self.assertIn("exists", json) | ||||||
|         self.assertTrue(json["exists"]) |         self.assertTrue(json["exists"]) | ||||||
|  |  | ||||||
|  |     def test_existing_subscriptions_autosubscription_private_stream(self): | ||||||
|  |         # type: () -> None | ||||||
|  |         """Call /json/subscriptions/exist on an existing private stream with | ||||||
|  |         autosubscribe should fail. | ||||||
|  |         """ | ||||||
|  |         stream_name = "Saxony" | ||||||
|  |         result = self.common_subscribe_to_streams("cordelia@zulip.com", [stream_name], | ||||||
|  |                                                   invite_only=True) | ||||||
|  |         stream = get_stream(stream_name, self.realm) | ||||||
|  |  | ||||||
|  |         result = self.client_post("/json/subscriptions/exists", | ||||||
|  |                                   {"stream": stream_name, "autosubscribe": True}) | ||||||
|  |         self.assert_json_success(result) | ||||||
|  |         json = ujson.loads(result.content) | ||||||
|  |         self.assertIn("exists", json) | ||||||
|  |         self.assertTrue(json["exists"]) | ||||||
|  |         self.assertIn("subscribed", json) | ||||||
|  |         # Importantly, we are not now subscribed | ||||||
|  |         self.assertFalse(json["subscribed"]) | ||||||
|  |         self.assertEqual(Subscription.objects.filter( | ||||||
|  |             recipient__type=Recipient.STREAM, | ||||||
|  |             recipient__type_id=stream.id).count(), 1) | ||||||
|  |  | ||||||
|     def get_subscription(self, user_profile, stream_name): |     def get_subscription(self, user_profile, stream_name): | ||||||
|         # type: (UserProfile, text_type) -> Subscription |         # type: (UserProfile, text_type) -> Subscription | ||||||
|         stream = Stream.objects.get(realm=self.realm, name=stream_name) |         stream = Stream.objects.get(realm=self.realm, name=stream_name) | ||||||
|   | |||||||
| @@ -447,7 +447,7 @@ def stream_exists_backend(request, user_profile, stream_name, autosubscribe): | |||||||
|     result = {"exists": bool(stream)} |     result = {"exists": bool(stream)} | ||||||
|     if stream is not None: |     if stream is not None: | ||||||
|         recipient = get_recipient(Recipient.STREAM, stream.id) |         recipient = get_recipient(Recipient.STREAM, stream.id) | ||||||
|         if autosubscribe: |         if not stream.invite_only and autosubscribe: | ||||||
|             bulk_add_subscriptions([stream], [user_profile]) |             bulk_add_subscriptions([stream], [user_profile]) | ||||||
|         result["subscribed"] = Subscription.objects.filter(user_profile=user_profile, |         result["subscribed"] = Subscription.objects.filter(user_profile=user_profile, | ||||||
|                                                            recipient=recipient, |                                                            recipient=recipient, | ||||||
|   | |||||||
| @@ -155,7 +155,7 @@ INLINE_IMAGE_PREVIEW = True | |||||||
| # https://github.com/zulip/zulip/issues/291 for discussion of a better | # https://github.com/zulip/zulip/issues/291 for discussion of a better | ||||||
| # solution that won't be automatically reverted by the Zulip upgrade | # solution that won't be automatically reverted by the Zulip upgrade | ||||||
| # script), and then restart nginx. | # script), and then restart nginx. | ||||||
| LOCAL_UPLOADS_DIR = "/home/zulip/var/uploads" | LOCAL_UPLOADS_DIR = "/home/zulip/uploads" | ||||||
| #S3_AUTH_UPLOADS_BUCKET = "" | #S3_AUTH_UPLOADS_BUCKET = "" | ||||||
| #S3_AVATAR_BUCKET = "" | #S3_AVATAR_BUCKET = "" | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user