)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5c7a5642509c305603f49347780f9846590611bc","unresolved":true,"context_lines":[{"line_number":11,"context_line":"Note that we only consider which digests are allowed if an admin_key is"},{"line_number":12,"context_line":"set. If it is not, no deprecation warnings will be emitted and no"},{"line_number":13,"context_line":"information about allowed or deprecated digests will be published in"},{"line_number":14,"context_line":"/info."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ic0f573aefd920087c11fcb047bffc3c9c6ee0a11"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"47e41eed_641f4573","line":14,"updated":"2023-04-17 23:06:14.000000000","message":"I don\u0027t understand why `/info | jq .swift` looses keys when I comment out admin_key","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5c7a5642509c305603f49347780f9846590611bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"57a12e87_9ff8d579","updated":"2023-04-17 23:06:14.000000000","message":"we already have new swift clusters boardcasting allowed_digests and deprecated_digests under .tempurl\n\nmight it make sense to always include them under .swift","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64d5dd20efde01f0d6de3e572b71751634c35b1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"868340ce_763f92ef","in_reply_to":"57a12e87_9ff8d579","updated":"2023-04-18 21:44:33.000000000","message":"\u003e we already have new swift clusters boardcasting allowed_digests and deprecated_digests under .tempurl\n\nAnd `.formpost`, if that\u0027s configured.\n\n\u003e might it make sense to always include them under .swift\n\nMaybe, I guess? It sure *feels like* nonsense, though.","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"}],"etc/proxy-server.conf-sample":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"4ecf85d7b260294f7542865550e115ed82efe66d","unresolved":true,"context_lines":[{"line_number":938,"context_line":"# The digest algorithm(s) supported for generating signatures;"},{"line_number":939,"context_line":"# whitespace-delimited.  Note that sha1 is deprecated and may be"},{"line_number":940,"context_line":"# removed in a future release."},{"line_number":941,"context_line":"# allowed_digests \u003d sha1 sha256 sha512"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"# Note: Put formpost just before your auth filter(s) in the pipeline"},{"line_number":944,"context_line":"[filter:formpost]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"78e97583_b0554346","line":941,"updated":"2022-08-04 07:38:04.000000000","message":"Oh yeah, we need to update this here. Nice","commit_id":"663389a60be8af152127a69ef2279ad23063b775"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"4ecf85d7b260294f7542865550e115ed82efe66d","unresolved":true,"context_lines":[{"line_number":946,"context_line":"# The digest algorithm(s) supported for generating signatures;"},{"line_number":947,"context_line":"# whitespace-delimited.  Note that sha1 is deprecated and may be"},{"line_number":948,"context_line":"# removed in a future release."},{"line_number":949,"context_line":"# allowed_digests \u003d sha1 sha256 sha512"},{"line_number":950,"context_line":""},{"line_number":951,"context_line":"# Note: Just needs to be placed before the proxy-server in the pipeline."},{"line_number":952,"context_line":"[filter:name_check]"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"a5537b3c_dfe5dafc","line":949,"updated":"2022-08-04 07:38:04.000000000","message":"Oh opps not even here at all. thanks.","commit_id":"663389a60be8af152127a69ef2279ad23063b775"}],"swift/proxy/controllers/info.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"4ecf85d7b260294f7542865550e115ed82efe66d","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                                           \u0027/info\u0027,"},{"line_number":92,"context_line":"                                           expires,"},{"line_number":93,"context_line":"                                           self.admin_key,"},{"line_number":94,"context_line":"                                           hash_name))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            # While it\u0027s true that any() will short-circuit, this doesn\u0027t"},{"line_number":97,"context_line":"            # affect the timing-attack resistance since the only way this will"}],"source_content_type":"text/x-python","patch_set":2,"id":"6b106137_d56f3557","line":94,"updated":"2022-08-04 07:38:04.000000000","message":"Nice, I love how simple this has become.","commit_id":"663389a60be8af152127a69ef2279ad23063b775"}],"swift/proxy/server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b97aaa618ff3b12e1ba5577573dc5827f160c760","unresolved":true,"context_lines":[{"line_number":351,"context_line":"            account_autocreate\u003dself.account_autocreate,"},{"line_number":352,"context_line":"            info_allowed_digests\u003dsorted(self.allowed_digests),"},{"line_number":353,"context_line":"            **constraints.EFFECTIVE_CONSTRAINTS)"},{"line_number":354,"context_line":"        if deprecated_digests:"},{"line_number":355,"context_line":"            info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted(deprecated_digests)"},{"line_number":356,"context_line":"        register_swift_info(**info_dict)"},{"line_number":357,"context_line":"        self.watchdog \u003d Watchdog()"}],"source_content_type":"text/x-python","patch_set":1,"id":"70c55d64_33c765a1","line":354,"updated":"2022-07-23 05:00:03.000000000","message":"Forgot to do the warnings!","commit_id":"b2b4d35b59889b148e02e076bd48989919a435fe"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"114396d9fbafb954517f13bc1a4d4834f5babd59","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            account_autocreate\u003dself.account_autocreate,"},{"line_number":352,"context_line":"            info_allowed_digests\u003dsorted(self.allowed_digests),"},{"line_number":353,"context_line":"            **constraints.EFFECTIVE_CONSTRAINTS)"},{"line_number":354,"context_line":"        if deprecated_digests:"},{"line_number":355,"context_line":"            info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted(deprecated_digests)"},{"line_number":356,"context_line":"        register_swift_info(**info_dict)"},{"line_number":357,"context_line":"        self.watchdog \u003d Watchdog()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1c99f78c_5857fc8d","line":354,"in_reply_to":"70c55d64_33c765a1","updated":"2022-07-30 00:34:09.000000000","message":"Never mind; I forgot where we\u0027re doing the warnings now :eye_roll:\n\nStill needed to update the sample conf, though, and fix up tests, and add a bunch more.","commit_id":"b2b4d35b59889b148e02e076bd48989919a435fe"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"4ecf85d7b260294f7542865550e115ed82efe66d","unresolved":true,"context_lines":[{"line_number":356,"context_line":"        if self.admin_key:"},{"line_number":357,"context_line":"            info_dict[\u0027info_allowed_digests\u0027] \u003d sorted(self.allowed_digests)"},{"line_number":358,"context_line":"        if deprecated_digests:"},{"line_number":359,"context_line":"            info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted(deprecated_digests)"},{"line_number":360,"context_line":"        register_swift_info(**info_dict)"},{"line_number":361,"context_line":"        self.watchdog \u003d Watchdog()"},{"line_number":362,"context_line":"        self.watchdog.spawn()"}],"source_content_type":"text/x-python","patch_set":2,"id":"a9f653a2_6a1f5a74","line":359,"updated":"2022-08-04 07:38:04.000000000","message":"Should we be leaking even the deprecated digests into unauthorized info calls? I asusme this if whould be nested under the one on line 356.\n\nHaving a test for this situation might also be good.","commit_id":"663389a60be8af152127a69ef2279ad23063b775"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3b31b666f8ea696a0c0d09f2cb62dc1fdaeb49f6","unresolved":true,"context_lines":[{"line_number":356,"context_line":"        if self.admin_key:"},{"line_number":357,"context_line":"            info_dict[\u0027info_allowed_digests\u0027] \u003d sorted(self.allowed_digests)"},{"line_number":358,"context_line":"        if deprecated_digests:"},{"line_number":359,"context_line":"            info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted(deprecated_digests)"},{"line_number":360,"context_line":"        register_swift_info(**info_dict)"},{"line_number":361,"context_line":"        self.watchdog \u003d Watchdog()"},{"line_number":362,"context_line":"        self.watchdog.spawn()"}],"source_content_type":"text/x-python","patch_set":2,"id":"0f6afcac_d39232bd","line":359,"in_reply_to":"a9f653a2_6a1f5a74","updated":"2022-08-05 18:50:39.000000000","message":"If there\u0027s no admin key, bot the allowed and deprecated digests will be empty (L345), but I agree that a little extra indent would make the intent more clear.","commit_id":"663389a60be8af152127a69ef2279ad23063b775"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5c7a5642509c305603f49347780f9846590611bc","unresolved":true,"context_lines":[{"line_number":352,"context_line":"            self.allowed_digests, deprecated_digests \u003d get_allowed_digests("},{"line_number":353,"context_line":"                conf.get(\u0027allowed_digests\u0027, \u0027\u0027).split(), self.logger)"},{"line_number":354,"context_line":"        else:"},{"line_number":355,"context_line":"            self.allowed_digests \u003d deprecated_digests \u003d []"},{"line_number":356,"context_line":"        self._override_options \u003d self._load_per_policy_config(conf)"},{"line_number":357,"context_line":"        self.sorts_by_timing \u003d any(pc.sorting_method \u003d\u003d \u0027timing\u0027"},{"line_number":358,"context_line":"                                   for pc in self._override_options.values())"}],"source_content_type":"text/x-python","patch_set":5,"id":"6ba63b7b_ca3b3030","line":355,"updated":"2023-04-17 23:06:14.000000000","message":"why make these conditional on if an admin key is configured?  defense in depth against a default empty admin key?","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5c7a5642509c305603f49347780f9846590611bc","unresolved":true,"context_lines":[{"line_number":367,"context_line":"            info_dict[\u0027info_allowed_digests\u0027] \u003d sorted(self.allowed_digests)"},{"line_number":368,"context_line":"            if deprecated_digests:"},{"line_number":369,"context_line":"                info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted("},{"line_number":370,"context_line":"                    deprecated_digests)"},{"line_number":371,"context_line":"        register_swift_info(**info_dict)"},{"line_number":372,"context_line":"        self.watchdog \u003d Watchdog()"},{"line_number":373,"context_line":"        self.watchdog.spawn()"}],"source_content_type":"text/x-python","patch_set":5,"id":"f1c6a242_c754a835","line":370,"updated":"2023-04-17 23:06:14.000000000","message":"I think we\u0027d want these keys in the /info response always regardless of if there\u0027s a valid key with which you could use them","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64d5dd20efde01f0d6de3e572b71751634c35b1c","unresolved":true,"context_lines":[{"line_number":367,"context_line":"            info_dict[\u0027info_allowed_digests\u0027] \u003d sorted(self.allowed_digests)"},{"line_number":368,"context_line":"            if deprecated_digests:"},{"line_number":369,"context_line":"                info_dict[\u0027info_deprecated_digests\u0027] \u003d sorted("},{"line_number":370,"context_line":"                    deprecated_digests)"},{"line_number":371,"context_line":"        register_swift_info(**info_dict)"},{"line_number":372,"context_line":"        self.watchdog \u003d Watchdog()"},{"line_number":373,"context_line":"        self.watchdog.spawn()"}],"source_content_type":"text/x-python","patch_set":5,"id":"23fa7539_4c3ee807","line":370,"in_reply_to":"f1c6a242_c754a835","updated":"2023-04-18 21:44:33.000000000","message":"But it\u0027s answering a question that doesn\u0027t make sense! There is **no** digest that could be used to get an admin response.","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5c7a5642509c305603f49347780f9846590611bc","unresolved":true,"context_lines":[{"line_number":1188,"context_line":"            account_ring\u003dFakeRing(),"},{"line_number":1189,"context_line":"            container_ring\u003dFakeRing())"},{"line_number":1190,"context_line":"        self.assertEqual({\u0027sha256\u0027}, app.allowed_digests)"},{"line_number":1191,"context_line":"        self.assertEqual(logger.get_lines_for_level(\u0027warning\u0027), [])"},{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":"    def test_get_info_controller(self):"},{"line_number":1194,"context_line":"        req \u003d Request.blank(\u0027/info\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c1aef94f_5370d7c8","line":1191,"updated":"2023-04-17 23:06:14.000000000","message":"this all seems sensible, but I\u0027m curious about the new broadcasting of allowed digests","commit_id":"9d78dbad9cf746f8a90ee1f7222668d52a19d826"}]}
