{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":207799516,"defaultBranch":"master","name":"pyscrlink","ownerLogin":"kawasaki","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-09-11T11:49:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/55551?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1695028597.0","currentOid":""},"activityList":{"items":[{"before":"51401cb380c24cbed961c3333dc3b432f026d5f8","after":"39ca1904b7a2412824cca1b688e02c3bdc006ee8","ref":"refs/heads/dbus2","pushedAt":"2023-09-18T09:35:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"ble: implement BLEDBusSession class\n\nCurrent implementation of BLESession class depends on the library bluepy\nto communicate with BLE devices. This implementation has two major\nissues. The first issue is no maintenance of bluepy library. It's last\ncommit was made in May 2021. It is no longer active and it is not likely\nthat its issues get resolved. The second issue is lack of asyncio\ninterface. pyscrlink uses websockets which uses asyncio. Dirty glue code\nand locks are required to connect websockets and bluepy.\n\nThis commit avoids the issue by moving away from bluepy. Instead, use\nBlueZ D-Bus API. Bluepy communicates with BlueZ kernel module via bluepy\nunique user space program. Instead, pyscrlink communicate with well\nmaintained Blue-Z user space program, or bluetoothd, through D-Bus\nprotocol. To handle D-Bus protocol, use python-sdbus library [2]. It has\nsub-library python-sdbus-bluez to cover BlueZ D-Bus API [3].\n\nUsing these libraries, implement a new class named BLEDBusSession. It\nreplaces BLESession which uses bluepy. These two classes share same\nbase class named Session. To allow async I/O, add a new function\nasync_handle_request to the Session class. Until this new implementation\nget proved stable enough, keep the old BLESession. Introduce a new\ncommand line option '-b' of scratch_link. When this option is specified,\nthe new class is used.\n\nTo improve code readability, implement BLEDBusSession in a new file\n'ble.py'. To share scan_seconds between scratch_link.py and ble.py,\nchange scan_seconds from global variable to an argument of Session class\nconstructor. Also to share logger between scratch_link.py and ble.py,\nmodify the logging.getLogger() argument from __name__ to scratch_link\nmodule name.\n\n[1] http://www.bluez.org/bluez-5-api-introduction-and-porting-guide/\n[2] https://github.com/python-sdbus/python-sdbus\n[3] https://github.com/python-sdbus/python-sdbus-bluez\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"ble: implement BLEDBusSession class"}},{"before":"14b942d808f5e99eedf5045785ad515afa6ce7aa","after":"51401cb380c24cbed961c3333dc3b432f026d5f8","ref":"refs/heads/dbus2","pushedAt":"2023-09-18T09:29:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"ble: implement BLEDBusSession class\n\nCurrent implementation of BLESession class depends on the library bluepy\nto communicate with BLE devices. This implementation has two major\nissues. The first issue is no maintenance of bluepy library. It's last\ncommit was made in May 2021. It is no longer active and it is not likely\nthat its issues get resolved. The second issue is lack of asyncio\ninterface. pyscrlink uses websockets which uses asyncio. Dirty glue code\nand locks are required to connect websockets and bluepy.\n\nThis commit avoids the issue by moving away from bluepy. Instead, use\nBlueZ D-Bus API. Bluepy communicates with BlueZ kernel module via bluepy\nunique user space program. Instead, pyscrlink communicate with well\nmaintained Blue-Z user space program, or bluetoothd, through D-Bus\nprotocol. To handle D-Bus protocol, use python-sdbus library [2]. It has\nsub-library python-sdbus-bluez to cover BlueZ D-Bus API [3].\n\nUsing these libraries, implement a new class named BLEDBusSession. It\nreplaces BLESession which uses bluepy. These two classes share same\nbase class named Session. To allow async I/O, add a new function\nasync_handle_request to the Session class. Until this new implementation\nget proved stable enough, keep the old BLESession. Introduce a new\ncommand line option '-b' of scratch_link. When this option is specified,\nthe new class is used.\n\nTo improve code readability, implement BLEDBusSession in a new file\n'ble.py'. To share scan_seconds between scratch_link.py and ble.py,\nchange scan_seconds from global variable to an argument of Session class\nconstructor. Also to share logger between scratch_link.py and ble.py,\nmodify the logging.getLogger() argument from __name__ to scratch_link\nmodule name.\n\n[1] http://www.bluez.org/bluez-5-api-introduction-and-porting-guide/\n[2] https://github.com/python-sdbus/python-sdbus\n[3] https://github.com/python-sdbus/python-sdbus-bluez\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"ble: implement BLEDBusSession class"}},{"before":null,"after":"14b942d808f5e99eedf5045785ad515afa6ce7aa","ref":"refs/heads/dbus2","pushedAt":"2023-09-18T09:16:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"ble: implement BLEDBusSession class\n\nCurrent implementation of BLESession class depends on the library bluepy\nto communicate with BLE devices. This implementation has two major\nissues. The first issue is no maintenance of bluepy library. It's last\ncommit was made in May 2021. It is no longer active and it is not likely\nthat its issues get resolved. The second issue is lack of asyncio\ninterface. pyscrlink uses websockets which uses asyncio. Dirty glue code\nand locks are required to connect websockets and bluepy.\n\nThis commit avoids the issue by moving away from bluepy. Instead, use\nBlueZ D-Bus API. Bluepy communicates with BlueZ kernel module via bluepy\nunique user space program. Instead, pyscrlink communicate with well\nmaintained Blue-Z user space program, or bluetoothd, through D-Bus\nprotocol. To handle D-Bus protocol, use python-sdbus library [2]. It has\nsub-library python-sdbus-bluez to cover BlueZ D-Bus API [3].\n\nUsing these libraries, implement a new class named BLEDBusSession. It\nreplaces BLESession which uses bluepy. These two classes share same\nbase class named Session. To allow async I/O, add a new function\nasync_handle_request to the Session class. Until this new implementation\nget proved stable enough, keep the old BLESession. Introduce a new\ncommand line option '-b' of scratch_link. When this option is specified,\nthe new class is used.\n\nTo improve code readability, implement BLEDBusSession in a new file\n'ble.py'. To share scan_seconds between scratch_link.py and ble.py,\nchange scan_seconds from global variable to an argument of Session class\nconstructor. Also to share logger between scratch_link.py and ble.py,\nmodify the logging.getLogger() argument from __name__ to scratch_link\nmodule name.\n\n[1] http://www.bluez.org/bluez-5-api-introduction-and-porting-guide/\n[2] https://github.com/python-sdbus/python-sdbus\n[3] https://github.com/python-sdbus/python-sdbus-bluez\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"ble: implement BLEDBusSession class"}},{"before":"adb746995ed7be3d652cb16ebbede07e20e5a529","after":"2482bba1d8bf41f780777b283cb8e771e4bdd5ff","ref":"refs/heads/dbus","pushedAt":"2023-09-18T07:52:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"ble: Separate BLEDBusSession class to a separated new file ble.py\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"ble: Separate BLEDBusSession class to a separated new file ble.py"}},{"before":"aeef5ad40c7552e4b09285afeddaf84206d9cb22","after":"adb746995ed7be3d652cb16ebbede07e20e5a529","ref":"refs/heads/dbus","pushedAt":"2023-09-10T11:32:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDbusSession: implement multiple devices support and disconnection\n\nAlso implemented service search retry to stabilize the first read\noperation. Next work is to create a class to gather device attirbutes\nthat BLEDBusSession refers.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDbusSession: implement multiple devices support and disconnection"}},{"before":"c54704a6cc781185f6ddf86c7b73e98884e30546","after":"aeef5ad40c7552e4b09285afeddaf84206d9cb22","ref":"refs/heads/dbus","pushedAt":"2023-09-10T11:29:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDbusSession: implement multiple devices support and disconnection\n\nAlso implemented service search retry to stabilize the first read\noperation. Next work is to create a class to gather device attirbutes\nthat BLEDBusSession refers.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDbusSession: implement multiple devices support and disconnection"}},{"before":"157e3458b0e94b7ef278d454f3a5a4affcdcc54f","after":"c54704a6cc781185f6ddf86c7b73e98884e30546","ref":"refs/heads/dbus","pushedAt":"2023-09-10T11:27:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDbusSession: implement multiple devices support and disconnection\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDbusSession: implement multiple devices support and disconnection"}},{"before":"94a9555c4c9fa611736761ee582a3d2380c48629","after":"157e3458b0e94b7ef278d454f3a5a4affcdcc54f","ref":"refs/heads/dbus","pushedAt":"2023-09-05T12:22:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDBusSession: implement write method\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDBusSession: implement write method"}},{"before":"39b157e8398057b3ee105b9da139e0e1ad3bbe70","after":"94a9555c4c9fa611736761ee582a3d2380c48629","ref":"refs/heads/dbus","pushedAt":"2023-08-27T10:48:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDBusSession: get GATT services and characteristics\n\nUsing DBus interface, get GATT services and characteristics of the\nconnected BLE device. Also implement read request to a characteristic.","shortMessageHtmlLink":"BLEDBusSession: get GATT services and characteristics"}},{"before":"d4d617fa1599bd624a98d7fe509bfe7272726fcd","after":"39b157e8398057b3ee105b9da139e0e1ad3bbe70","ref":"refs/heads/dbus","pushedAt":"2023-08-27T02:29:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDBusSession: introduce BTUUID class\n\nbluepy provides its unique UUID class which handles UUIDs of Bluetooth\ndevices well. Not to depend on bluepy, introduce BTUUID which extends\npython standard uuid.UUID class.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDBusSession: introduce BTUUID class"}},{"before":"dc2ee5a22fbec848f86944305ec888c690d0811c","after":"d4d617fa1599bd624a98d7fe509bfe7272726fcd","ref":"refs/heads/dbus","pushedAt":"2023-08-15T12:16:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"BLEDBusSession: WIP\n\nI implmented 'discovery' and 'connect' commands. Next action is to\nimplment 'read', 'write' and 'notify'. I'm not yet sure how DBus handles\n'notify'.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"BLEDBusSession: WIP"}},{"before":"f61d305b0d983d16cc4e095249f6f837bf18d5cd","after":"dc2ee5a22fbec848f86944305ec888c690d0811c","ref":"refs/heads/dbus","pushedAt":"2023-08-15T02:33:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"Tag version 0.2.8\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"Tag version 0.2.8"}},{"before":"dc2ee5a22fbec848f86944305ec888c690d0811c","after":"ed4df282b13bb9db957d25e7dd09feb8f0bc05b6","ref":"refs/heads/master","pushedAt":"2023-08-15T02:28:26.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"Merge pull request #39 from rcy/master-1\n\nUpdate README.md to correct micro:bit hex file download link.","shortMessageHtmlLink":"Merge pull request #39 from rcy/master-1"}},{"before":"868cec7b03bff21fc90b83c9d26e7c2ce6a90ced","after":"dc2ee5a22fbec848f86944305ec888c690d0811c","ref":"refs/heads/master","pushedAt":"2023-07-02T13:03:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"Tag version 0.2.8\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"Tag version 0.2.8"}},{"before":"0f9ccd3b63e52e37436d8f00029bf48ba87e8f2a","after":"868cec7b03bff21fc90b83c9d26e7c2ce6a90ced","ref":"refs/heads/master","pushedAt":"2023-06-25T12:35:56.996Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"scratch_link.py: Support COMPLETE_LOCAL_NAME for 'namePrefix' filter\n\nCurrent implementation of match() does filter matching for 'namePrefix'\nkeyword only for SHORT_LOCAL_NAME of the device. When the device does\nnot provide SHORT_LOCAL_NAME but provides COMPLETE_LOCAL_NAME, match()\nfor 'namePrefix' fails. For example, MicroBit More v2 [1] does not\nprovide the SHORT_LOCAL_NAME.\n\nTo support 'namePrefix' filter match with COMPLETE_LOCAL_NAME, add\nsupport for it. While at it, replace the SHORT_LOCAL_NAME identifier\nconstant with the definition in btle.ScanEntry.\n\n[1] https://lab.yengawa.com/project/microbit-more-v2/\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"scratch_link.py: Support COMPLETE_LOCAL_NAME for 'namePrefix' filter"}},{"before":"d1f7f58ca243b29bc9d855771a29a26008d2fe4b","after":"0f9ccd3b63e52e37436d8f00029bf48ba87e8f2a","ref":"refs/heads/master","pushedAt":"2023-03-21T08:18:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"Tag version 0.2.7\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"Tag version 0.2.7"}},{"before":"d845d69bb8369f8d4bbaeccf0dffb42c3f78438a","after":"d1f7f58ca243b29bc9d855771a29a26008d2fe4b","ref":"refs/heads/master","pushedAt":"2023-03-21T07:56:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"README.md: Add description about -r option for scan failure\n\nAdd an item to \"In Case You Fail to Connect\" section to describe that\nthe \"-r\" option may help to address device scan failure.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"README.md: Add description about -r option for scan failure"}},{"before":"b6019e827e5a47cabff571f1e0760e266ab0b181","after":"d1f7f58ca243b29bc9d855771a29a26008d2fe4b","ref":"refs/heads/retry","pushedAt":"2023-03-21T07:55:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"README.md: Add description about -r option for scan failure\n\nAdd an item to \"In Case You Fail to Connect\" section to describe that\nthe \"-r\" option may help to address device scan failure.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"README.md: Add description about -r option for scan failure"}},{"before":"7050016ee624455bb6293c96c4ffac1bcf0aacf3","after":"b6019e827e5a47cabff571f1e0760e266ab0b181","ref":"refs/heads/retry","pushedAt":"2023-03-21T07:53:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"README.md: Add description about -r option for scan failure\n\nAdd an item to \"In Case You Fail to Connect\" section to describe that\nthe \"-r\" option may help to address device scan failure.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"README.md: Add description about -r option for scan failure"}},{"before":null,"after":"7050016ee624455bb6293c96c4ffac1bcf0aacf3","ref":"refs/heads/retry","pushedAt":"2023-03-21T06:57:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"scratch_link.py: Add -r option to retry BLE scan\n\nRecently, scratch link connection failure is reported. Similar failure\nis observed with my environment. I found BTLEDisconnectError happens at\nscanner.scan(). Though the true cause of the failure is not yet known, I\nfound simple retry of scanner.scan() avoids the failure. As a temporary\nwork around, implement -r or --scan_retry option which specify how many\ntimes to retry the scan. I confirmed that \"-r 2\" option avoided the\nfailure.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"scratch_link.py: Add -r option to retry BLE scan"}},{"before":"7050016ee624455bb6293c96c4ffac1bcf0aacf3","after":"d845d69bb8369f8d4bbaeccf0dffb42c3f78438a","ref":"refs/heads/master","pushedAt":"2023-03-21T06:56:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"gencert.py: Support Snap Firefox and Chromium\n\nRecently Ubuntu provides Firefox and Chromium in the form of Snap\npackage, and they place NSS DB at different path from non-Snap package.\nHowever, current gencert.py implementation supports only the NSS DB\npaths for non-Snap packages. This results in HTTPS communication failure\nbetween the browsers and scratch_link.\n\nSupport the NSS DB paths for the Snap packages. Add a new function\nprep_cert_for_app() which takes application name and its NSS DB search\npath. Call this function for list of browsers, covering both non-Snap\nand Snap packages.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"gencert.py: Support Snap Firefox and Chromium"}},{"before":"751190935a457d7a6a207abb71542188cb76361f","after":"7050016ee624455bb6293c96c4ffac1bcf0aacf3","ref":"refs/heads/master","pushedAt":"2023-03-21T06:56:04.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"scratch_link.py: Add -r option to retry BLE scan\n\nRecently, scratch link connection failure is reported. Similar failure\nis observed with my environment. I found BTLEDisconnectError happens at\nscanner.scan(). Though the true cause of the failure is not yet known, I\nfound simple retry of scanner.scan() avoids the failure. As a temporary\nwork around, implement -r or --scan_retry option which specify how many\ntimes to retry the scan. I confirmed that \"-r 2\" option avoided the\nfailure.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"scratch_link.py: Add -r option to retry BLE scan"}},{"before":null,"after":"d845d69bb8369f8d4bbaeccf0dffb42c3f78438a","ref":"refs/heads/snap","pushedAt":"2023-03-19T12:08:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kawasaki","name":"Shin'ichiro Kawasaki","path":"/kawasaki","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55551?s=80&v=4"},"commit":{"message":"gencert.py: Support Snap Firefox and Chromium\n\nRecently Ubuntu provides Firefox and Chromium in the form of Snap\npackage, and they place NSS DB at different path from non-Snap package.\nHowever, current gencert.py implementation supports only the NSS DB\npaths for non-Snap packages. This results in HTTPS communication failure\nbetween the browsers and scratch_link.\n\nSupport the NSS DB paths for the Snap packages. Add a new function\nprep_cert_for_app() which takes application name and its NSS DB search\npath. Call this function for list of browsers, covering both non-Snap\nand Snap packages.\n\nSigned-off-by: Shin'ichiro Kawasaki ","shortMessageHtmlLink":"gencert.py: Support Snap Firefox and Chromium"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADgtfL8wA","startCursor":null,"endCursor":null}},"title":"Activity ยท kawasaki/pyscrlink"}