Monday, 2016-02-08

*** TravT has quit IRC00:01
*** TravT has joined #openstack-searchlight00:01
*** TravT has quit IRC00:05
*** TravT has joined #openstack-searchlight00:06
*** TravT_ has joined #openstack-searchlight00:10
*** TravT has quit IRC00:11
*** TravT_ has quit IRC00:15
*** TravT has joined #openstack-searchlight00:15
*** TravT has quit IRC00:20
*** TravT_ has joined #openstack-searchlight00:20
*** TravT_ has quit IRC00:24
*** TravT has joined #openstack-searchlight00:25
*** TravT has quit IRC00:29
*** TravT has joined #openstack-searchlight00:29
*** TravT has quit IRC00:34
*** TravT has joined #openstack-searchlight00:34
*** TravT has quit IRC00:38
*** TravT has joined #openstack-searchlight00:39
*** TravT has quit IRC00:43
*** TravT has joined #openstack-searchlight00:44
*** TravT_ has joined #openstack-searchlight00:48
*** TravT has quit IRC00:48
*** TravT_ has quit IRC00:52
*** TravT has joined #openstack-searchlight00:53
*** TravT has quit IRC00:57
*** TravT has joined #openstack-searchlight00:57
*** TravT has quit IRC01:02
*** TravT has joined #openstack-searchlight01:02
*** TravT_ has joined #openstack-searchlight01:07
*** TravT has quit IRC01:07
*** TravT_ has quit IRC01:11
*** TravT has joined #openstack-searchlight01:12
*** TravT has quit IRC01:16
*** TravT has joined #openstack-searchlight01:16
*** TravT has quit IRC01:21
*** TravT has joined #openstack-searchlight01:21
*** TravT has quit IRC01:25
*** TravT_ has joined #openstack-searchlight01:26
*** TravT_ has quit IRC01:30
*** TravT has joined #openstack-searchlight01:30
*** TravT has quit IRC01:35
*** TravT has joined #openstack-searchlight01:35
*** TravT has quit IRC01:40
*** TravT_ has joined #openstack-searchlight01:40
*** TravT_ has quit IRC01:44
*** TravT has joined #openstack-searchlight01:44
*** TravT has quit IRC01:49
*** TravT_ has joined #openstack-searchlight01:49
*** TravT_ has quit IRC01:54
*** TravT has joined #openstack-searchlight01:54
*** TravT has quit IRC01:58
*** TravT has joined #openstack-searchlight01:59
*** TravT has quit IRC02:03
*** TravT has joined #openstack-searchlight02:03
*** TravT has quit IRC02:08
*** TravT_ has joined #openstack-searchlight02:08
*** TravT_ has quit IRC02:12
*** TravT has joined #openstack-searchlight02:13
*** TravT has quit IRC02:17
*** TravT has joined #openstack-searchlight02:17
*** TravT has quit IRC02:22
*** TravT has joined #openstack-searchlight02:22
*** TravT_ has joined #openstack-searchlight02:27
*** TravT has quit IRC02:27
*** TravT_ has quit IRC02:31
*** TravT has joined #openstack-searchlight02:32
*** TravT has quit IRC02:36
*** TravT has joined #openstack-searchlight02:36
*** TravT has quit IRC02:41
*** TravT has joined #openstack-searchlight02:41
*** TravT_ has joined #openstack-searchlight02:46
*** TravT has quit IRC02:46
*** TravT_ has quit IRC02:50
*** TravT has joined #openstack-searchlight02:50
*** TravT has quit IRC02:54
*** TravT has joined #openstack-searchlight02:55
*** TravT has quit IRC02:59
*** TravT has joined #openstack-searchlight03:00
*** TravT has quit IRC03:04
*** TravT has joined #openstack-searchlight03:04
*** TravT has quit IRC03:09
*** TravT_ has joined #openstack-searchlight03:09
*** TravT_ has quit IRC03:14
*** TravT has joined #openstack-searchlight03:14
*** TravT has quit IRC03:18
*** TravT has joined #openstack-searchlight04:15
*** TravT_ has joined #openstack-searchlight04:19
*** TravT has quit IRC04:20
*** TravT has joined #openstack-searchlight04:24
*** TravT_ has quit IRC04:24
*** TravT has quit IRC04:28
*** TravT has joined #openstack-searchlight04:29
*** david-lyle has quit IRC04:30
*** TravT has quit IRC04:33
*** TravT has joined #openstack-searchlight04:33
*** TravT has quit IRC04:38
*** TravT has joined #openstack-searchlight04:43
*** david-lyle has joined #openstack-searchlight04:45
*** TravT has quit IRC04:47
*** TravT has joined #openstack-searchlight04:48
*** TravT_ has joined #openstack-searchlight04:52
*** TravT has quit IRC04:52
*** TravT_ has quit IRC04:57
*** TravT has joined #openstack-searchlight04:57
*** TravT_ has joined #openstack-searchlight05:02
*** TravT has quit IRC05:02
*** TravT_ has quit IRC05:06
*** TravT has joined #openstack-searchlight05:06
*** TravT has quit IRC05:11
*** TravT has joined #openstack-searchlight05:11
*** TravT has quit IRC05:15
*** TravT has joined #openstack-searchlight05:16
*** TravT has quit IRC05:20
*** TravT_ has joined #openstack-searchlight05:20
*** TravT_ has quit IRC05:25
*** TravT has joined #openstack-searchlight05:25
*** TravT has quit IRC05:30
*** TravT has joined #openstack-searchlight05:30
*** TravT_ has joined #openstack-searchlight05:35
*** TravT has quit IRC05:35
*** TravT_ has quit IRC05:39
*** TravT has joined #openstack-searchlight05:39
*** TravT has quit IRC05:44
*** TravT has joined #openstack-searchlight05:44
*** TravT has quit IRC05:49
*** TravT_ has joined #openstack-searchlight05:49
*** TravT has joined #openstack-searchlight05:53
*** TravT_ has quit IRC05:54
*** TravT has quit IRC05:58
*** TravT has joined #openstack-searchlight05:58
*** TravT has quit IRC06:03
*** TravT_ has joined #openstack-searchlight06:03
*** TravT_ has quit IRC06:07
*** TravT has joined #openstack-searchlight06:08
*** TravT has quit IRC06:12
*** TravT has joined #openstack-searchlight06:12
*** TravT has quit IRC06:17
*** TravT has joined #openstack-searchlight06:17
*** TravT has quit IRC06:22
*** TravT has joined #openstack-searchlight06:22
*** TravT_ has joined #openstack-searchlight06:26
*** TravT has quit IRC06:27
*** TravT_ has quit IRC06:31
*** TravT has joined #openstack-searchlight06:31
*** TravT_ has joined #openstack-searchlight06:36
*** TravT has quit IRC06:36
*** TravT_ has quit IRC06:41
*** TravT has joined #openstack-searchlight06:41
*** TravT has quit IRC06:45
*** TravT has joined #openstack-searchlight06:45
*** TravT_ has joined #openstack-searchlight06:50
*** TravT has quit IRC06:51
*** TravT_ has quit IRC06:54
*** TravT has joined #openstack-searchlight06:55
*** TravT has quit IRC06:59
*** TravT has joined #openstack-searchlight06:59
*** TravT has quit IRC07:04
*** TravT_ has joined #openstack-searchlight07:04
*** TravT has joined #openstack-searchlight07:09
*** TravT_ has quit IRC07:09
*** TravT_ has joined #openstack-searchlight07:14
*** TravT has quit IRC07:14
*** TravT has joined #openstack-searchlight07:18
*** TravT_ has quit IRC07:19
*** TravT has quit IRC07:23
*** TravT has joined #openstack-searchlight07:23
openstackgerritLei Zhang proposed openstack/searchlight: Use external version to ensure index updates  https://review.openstack.org/25575107:24
*** TravT_ has joined #openstack-searchlight07:28
*** TravT has quit IRC07:28
*** TravT_ has quit IRC07:32
*** TravT has joined #openstack-searchlight07:33
*** TravT_ has joined #openstack-searchlight07:37
*** TravT has quit IRC07:37
*** TravT_ has quit IRC07:42
*** TravT has joined #openstack-searchlight07:42
*** TravT has quit IRC07:47
*** TravT_ has joined #openstack-searchlight07:47
*** TravT has joined #openstack-searchlight07:51
*** TravT_ has quit IRC07:51
*** TravT_ has joined #openstack-searchlight07:56
*** TravT has quit IRC07:56
*** TravT_ has quit IRC08:00
*** TravT has joined #openstack-searchlight08:01
*** TravT has quit IRC08:05
*** TravT has joined #openstack-searchlight08:05
*** TravT has quit IRC08:10
*** TravT_ has joined #openstack-searchlight08:10
*** TravT_ has quit IRC08:14
*** TravT has joined #openstack-searchlight08:15
*** TravT has quit IRC08:19
*** TravT has joined #openstack-searchlight08:19
*** TravT has quit IRC08:24
*** TravT has joined #openstack-searchlight08:24
*** TravT has quit IRC08:29
*** TravT_ has joined #openstack-searchlight08:29
*** TravT_ has quit IRC08:33
*** TravT has joined #openstack-searchlight08:34
*** TravT has quit IRC08:38
*** TravT_ has joined #openstack-searchlight08:38
*** TravT_ has quit IRC08:42
*** TravT has joined #openstack-searchlight08:43
*** TravT_ has joined #openstack-searchlight08:48
*** TravT has quit IRC08:48
*** TravT has joined #openstack-searchlight08:52
*** TravT_ has quit IRC08:53
*** TravT has quit IRC08:57
*** TravT has joined #openstack-searchlight08:57
*** TravT has quit IRC09:01
*** TravT has joined #openstack-searchlight09:02
*** openstackgerrit has quit IRC09:02
*** openstackgerrit has joined #openstack-searchlight09:02
*** TravT has quit IRC09:06
*** TravT has joined #openstack-searchlight09:06
*** TravT has quit IRC09:11
*** TravT_ has joined #openstack-searchlight09:11
*** TravT has joined #openstack-searchlight09:16
*** TravT_ has quit IRC09:16
*** TravT has quit IRC09:20
*** TravT has joined #openstack-searchlight09:20
*** TravT_ has joined #openstack-searchlight09:25
*** TravT has quit IRC09:25
*** TravT_ has quit IRC09:30
*** TravT has joined #openstack-searchlight09:30
*** TravT has quit IRC09:35
*** TravT_ has joined #openstack-searchlight09:35
*** TravT has joined #openstack-searchlight09:39
*** TravT_ has quit IRC09:39
*** TravT has quit IRC09:44
*** TravT has joined #openstack-searchlight09:44
*** TravT has quit IRC09:48
*** TravT has joined #openstack-searchlight09:49
*** TravT has quit IRC09:53
*** TravT_ has joined #openstack-searchlight09:53
*** TravT_ has quit IRC09:58
*** TravT has joined #openstack-searchlight09:58
*** TravT has quit IRC10:03
*** TravT_ has joined #openstack-searchlight10:03
*** TravT_ has quit IRC10:07
*** TravT has joined #openstack-searchlight10:07
*** TravT has quit IRC10:12
*** TravT has joined #openstack-searchlight10:12
*** TravT has quit IRC10:16
*** TravT has joined #openstack-searchlight10:17
*** TravT has quit IRC10:21
*** TravT has joined #openstack-searchlight10:22
*** TravT has quit IRC10:26
*** TravT has joined #openstack-searchlight10:26
*** TravT has quit IRC10:31
*** TravT has joined #openstack-searchlight10:31
*** TravT_ has joined #openstack-searchlight10:36
*** TravT has quit IRC10:36
*** TravT_ has quit IRC10:40
*** TravT has joined #openstack-searchlight10:40
*** TravT has quit IRC10:45
*** TravT_ has joined #openstack-searchlight10:45
*** TravT has joined #openstack-searchlight10:50
*** TravT_ has quit IRC10:50
*** TravT has quit IRC10:54
*** TravT has joined #openstack-searchlight10:54
*** TravT has quit IRC10:59
*** TravT_ has joined #openstack-searchlight10:59
*** TravT_ has quit IRC11:04
*** TravT has joined #openstack-searchlight11:04
*** TravT has quit IRC11:08
*** GB21 has joined #openstack-searchlight11:58
*** TravT has joined #openstack-searchlight12:05
*** TravT_ has joined #openstack-searchlight12:10
*** TravT has quit IRC12:10
*** TravT_ has quit IRC12:14
*** TravT has joined #openstack-searchlight12:14
*** TravT_ has joined #openstack-searchlight12:19
*** TravT has quit IRC12:19
*** TravT_ has quit IRC12:23
*** TravT has joined #openstack-searchlight12:24
*** TravT has quit IRC12:28
*** TravT_ has joined #openstack-searchlight12:28
*** TravT_ has quit IRC12:33
*** TravT has joined #openstack-searchlight12:33
*** GB21 has quit IRC12:33
*** TravT has quit IRC12:38
*** TravT has joined #openstack-searchlight12:38
*** krotscheck_dcm is now known as krotscheck12:39
*** TravT has quit IRC12:42
*** TravT has joined #openstack-searchlight12:42
*** TravT_ has joined #openstack-searchlight12:47
*** TravT has quit IRC12:47
*** TravT_ has quit IRC12:52
*** TravT has joined #openstack-searchlight12:52
*** TravT has quit IRC12:57
*** TravT_ has joined #openstack-searchlight12:57
*** TravT has joined #openstack-searchlight13:01
*** TravT_ has quit IRC13:01
*** krotscheck has quit IRC13:06
*** TravT_ has joined #openstack-searchlight13:06
*** TravT has quit IRC13:06
*** TravT_ has quit IRC13:11
*** TravT has joined #openstack-searchlight13:11
*** TravT has quit IRC13:15
*** TravT has joined #openstack-searchlight13:15
*** krotscheck has joined #openstack-searchlight13:18
*** TravT has quit IRC13:20
*** TravT_ has joined #openstack-searchlight13:20
*** TravT_ has quit IRC13:25
*** TravT has joined #openstack-searchlight13:25
*** TravT_ has joined #openstack-searchlight13:29
*** TravT has quit IRC13:30
*** TravT has joined #openstack-searchlight13:34
*** TravT_ has quit IRC13:34
*** TravT has quit IRC13:38
*** TravT has joined #openstack-searchlight13:39
*** TravT_ has joined #openstack-searchlight13:44
*** TravT has quit IRC13:44
*** TravT has joined #openstack-searchlight13:48
*** TravT_ has quit IRC13:48
*** TravT has quit IRC13:53
*** TravT has joined #openstack-searchlight13:53
*** TravT has quit IRC13:57
*** TravT has joined #openstack-searchlight13:58
*** TravT_ has joined #openstack-searchlight14:02
*** TravT has quit IRC14:03
*** TravT_ has quit IRC14:07
*** TravT has joined #openstack-searchlight14:07
*** TravT_ has joined #openstack-searchlight14:12
*** TravT has quit IRC14:12
rosmaitaTravT_: you were right about the denver defense14:15
*** TravT_ has quit IRC14:16
*** TravT has joined #openstack-searchlight14:17
*** TravT has quit IRC14:21
*** TravT has joined #openstack-searchlight14:21
*** TravT has quit IRC14:25
*** TravT has joined #openstack-searchlight14:26
*** GB21 has joined #openstack-searchlight14:28
*** TravT has quit IRC14:30
*** TravT_ has joined #openstack-searchlight14:31
*** TravT has joined #openstack-searchlight14:35
*** TravT_ has quit IRC14:36
*** TravT has quit IRC14:39
*** TravT has joined #openstack-searchlight14:40
*** TravT has quit IRC14:44
*** TravT has joined #openstack-searchlight14:45
*** TravT_ has joined #openstack-searchlight14:49
*** TravT has quit IRC14:49
*** TravT_ has quit IRC14:54
*** TravT has joined #openstack-searchlight14:54
*** TravT has quit IRC14:59
*** TravT_ has joined #openstack-searchlight14:59
*** sigmavirus24_awa is now known as sigmavirus2415:01
*** TravT has joined #openstack-searchlight15:03
*** TravT_ has quit IRC15:04
*** TravT_ has joined #openstack-searchlight15:08
*** TravT has quit IRC15:09
*** TravT_ has quit IRC15:13
*** TravT has joined #openstack-searchlight15:13
*** TravT_ has joined #openstack-searchlight15:18
*** TravT has quit IRC15:18
*** TravT_ has quit IRC15:22
*** TravT has joined #openstack-searchlight15:22
*** TravT has quit IRC15:26
*** TravT has joined #openstack-searchlight15:27
*** TravT_ has joined #openstack-searchlight15:32
*** TravT has quit IRC15:32
*** TravT_ has quit IRC15:36
*** TravT has joined #openstack-searchlight15:36
*** GB21 has quit IRC15:38
*** TravT has quit IRC15:41
*** TravT has joined #openstack-searchlight15:41
*** TravT has quit IRC15:46
*** TravT has joined #openstack-searchlight15:46
*** TravT has quit IRC15:50
*** TravT has joined #openstack-searchlight15:50
*** TravT has quit IRC15:55
*** TravT has joined #openstack-searchlight15:55
*** TravT_ has joined #openstack-searchlight16:00
*** TravT has quit IRC16:00
*** TravT_ has quit IRC16:04
*** TravT has joined #openstack-searchlight16:05
*** TravT_ has joined #openstack-searchlight16:09
*** TravT has quit IRC16:09
*** TravT has joined #openstack-searchlight16:14
*** TravT_ has quit IRC16:14
*** TravT_ has joined #openstack-searchlight16:19
*** TravT has quit IRC16:19
*** TravT has joined #openstack-searchlight16:23
*** TravT_ has quit IRC16:24
*** TravT has quit IRC16:28
*** TravT_ has joined #openstack-searchlight16:28
*** TravT_ has quit IRC16:32
*** TravT has joined #openstack-searchlight16:33
*** TravT_ has joined #openstack-searchlight16:37
*** TravT has quit IRC16:38
*** TravT_ has quit IRC16:42
*** TravT has joined #openstack-searchlight16:42
*** TravT has quit IRC16:46
*** TravT has joined #openstack-searchlight16:47
*** TravT has quit IRC16:51
*** TravT has joined #openstack-searchlight16:52
*** TravT_ has joined #openstack-searchlight16:56
*** TravT has quit IRC16:56
*** lakshmiS has joined #openstack-searchlight16:58
*** TravT_ has quit IRC16:59
*** TravT has joined #openstack-searchlight17:00
*** lakshmiS has quit IRC17:04
*** lakshmiS has joined #openstack-searchlight17:04
*** sjmc7 has joined #openstack-searchlight17:21
openstackgerritMerged openstack/searchlight: Updated from global requirements  https://review.openstack.org/27712817:42
lakshmiSsjmc7: Ignore my comment on the role patch.17:57
sjmc7ok!17:57
*** sigmavirus24 is now known as sigmavirus24_awa17:59
lakshmiSnotmyname: i couldn't find a list of privileged headers on swift doc. is there a list somewhere of field names?18:00
sjmc7lakshmiS: we can change the filtering behavior to use regex if we need to18:03
lakshmiSsjmc7: it already has a wild card behaviour right?18:05
sjmc7yeah18:05
lakshmiSok thats good for now i think18:05
sjmc7because that’s what E-S supports, though there’s less need to do that now18:05
lakshmiShopefully swift has a definite list of priv. headers which makes it easier too18:06
notmynamelakshmiS: what do you mean by privileged headers?18:08
lakshmiShttp://docs.openstack.org/developer/swift/overview_auth.html?highlight=privileged18:09
notmynameah18:10
notmynamelakshmiS: looking18:11
lakshmiSthanks18:11
sjmc7TravT: rick just pointed out that the designate domain notification handler has its own ‘process’ function which i missed in the rbac patch; he’s gonna file a bug and i’ll patch it today18:12
openstackgerritMerged openstack/searchlight: Separate documents by role  https://review.openstack.org/25751618:13
notmynamelakshmiS: definted by this config value https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample#L211-L21418:14
notmynamelakshmiS: for reference, the "swift owner" is a privileged user18:15
lakshmiSnotmyname: thanks for the link. better than documentation :)18:16
lakshmiSi guess this sample was auto generated from oslo18:17
notmynameno18:17
lakshmiSoh18:17
notmynameswift's config files are maintained in the source tree by the devs18:17
notmynameintentionally, and with good comments18:17
lakshmiSso each swift install(proxy server) can have its own list of priv headers?18:18
notmynameyes, by virtue of it being configurable. the default is what's commented out in the sample config. I personally don't know of any deployer that changes it18:19
lakshmiSok thanks18:21
*** bpokorny has joined #openstack-searchlight18:22
lakshmiSsjmc7: for swift plugin i will start with that list and will provide a way to configure them from SL plugin config to match with swift(in case deployers change it there)18:23
*** exploreshaifali has joined #openstack-searchlight18:32
openstackgerritMichael Krotscheck proposed openstack/searchlight: Added Keystone and RequestID headers to CORS middleware  https://review.openstack.org/26539618:40
*** sigmavirus24_awa is now known as sigmavirus2419:02
*** sjmc7 has quit IRC19:02
openstackgerritTravis Tripp proposed openstack/searchlight: Only evaluate RBAC filter for current request  https://review.openstack.org/27496519:19
*** sjmc7 has joined #openstack-searchlight19:19
*** bpokorny_ has joined #openstack-searchlight19:31
*** bpokorny_ has quit IRC19:34
*** bpokorny has quit IRC19:34
*** bpokorny has joined #openstack-searchlight19:34
notmynamelakshmiS: still here?19:56
notmynamelakshmiS: why do you care what the swift owner headers are?19:56
notmynameie what would you do differently based on different values of that config value20:02
notmynameI'm considering if that should be a discoverable value20:02
*** bpokorny has quit IRC20:03
*** bpokorny has joined #openstack-searchlight20:04
lakshmiSnotmyname: we want to apply rbac for data indexed in elasticsearch based on that20:10
lakshmiSif the incoming user token has admin privilages they can read it otherwise not20:11
lakshmiSreally dont look/interpret at the value of the header20:11
notmynameapply rbac? the values are user-settable, so how does that figure into rbac?20:18
notmynamewould it be good for you if swift were to expose the value of swift_owner_headers?20:20
lakshmiSfrom searchlight user point of view, they are either allowed to read the privileged headers or not shown the headers at all20:20
lakshmiSso when searchlight request to elasticsearch comes in, we intercept and add some elasticsearch fileters(rbac) on the request query to allow/disallow privileged headers from being returned to user search query result20:21
lakshmiSwhat is swift_owner_headers20:22
lakshmiSwill that list all the key names of headers for that installation?20:22
notmynameso eg user A (who is swift owner of an account) does a request and you index it. then user B (who can read, but is not swift_owner) does a search and the results are filtered?20:22
notmynamelakshmiS: that's the list of what you called privileged headers20:23
lakshmiSyes you are right, results are filtered for non swift_owner20:23
notmynamethat seems fraught with peril. how are swift and searchlight kept in sync with applying authorization rules?20:24
lakshmiSeach plugin in elasticsearch including swift plugin has its own rbac matching with the provider(swift). if swift changes its acl rules then swift plugin has to be modified to match it20:26
lakshmiSthere isn't a automatic way to keep them in sync20:27
lakshmiSso yes having swift expose swift_owner_headers would be a good way to retrieve them than looking/reading through swift proxy config file20:29
*** lakshmiS_ has joined #openstack-searchlight20:55
notmynamethat sounds like searchlight is indexing everything and then filtering those results by tenant. the alternative would be indexing things by tenant and only allowing searching within a tenant's results (and that would probably require more storage for indexes)20:57
notmynamebut with the later, searchlight wouldn't have to apply auth decisions to match another project's implementation20:58
*** lakshmiS has quit IRC20:59
*** bpokorny_ has joined #openstack-searchlight21:28
*** bpokorny has quit IRC21:31
*** exploreshaifali has quit IRC21:50
lakshmiS_we have a somewhat similar mechanism with the patch sjmc7 put in recently where there are different documents in elasticsearch for admin and non-admin users and search is allowed only within those docs22:00
openstackgerritMerged openstack/searchlight: Only evaluate RBAC filter for current request  https://review.openstack.org/27496522:12
*** bpokorny_ has quit IRC22:20
*** bpokorny has joined #openstack-searchlight22:21
*** lakshmiS_ has quit IRC22:30
*** sigmavirus24 is now known as sigmavirus24_awa23:04
*** lakshmiS has joined #openstack-searchlight23:13
*** bpokorny has quit IRC23:21
*** bpokorny has joined #openstack-searchlight23:22
openstackgerritSteve McLellan proposed openstack/searchlight: Index child plugins as part of parent  https://review.openstack.org/26786423:30
*** sjmc7 has quit IRC23:30
*** bpokorny_ has joined #openstack-searchlight23:55
*** bpokorny has quit IRC23:58

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!