{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":764639408,"defaultBranch":"master","name":"lurk","ownerLogin":"boris-sinyapkin","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-02-28T12:55:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/39591205?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1723456384.0","currentOid":""},"activityList":{"items":[{"before":"e3e98ee7cd6eb981ce4410fea8d34cecc11ff07f","after":"39a82a97fdce3b8ef48358c92ae438aa78a0a1bb","ref":"refs/heads/master","pushedAt":"2024-08-26T09:14:33.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Test] Introduce test listener interface\n\nUse AsyncListener cancellable interface for any endpoint (API, Proxy, TCP echo servers, etc.).","shortMessageHtmlLink":"[Test] Introduce test listener interface"}},{"before":"7bae544734938539ef9eb699a9a5ac7159e4a1db","after":"e3e98ee7cd6eb981ce4410fea8d34cecc11ff07f","ref":"refs/heads/master","pushedAt":"2024-08-15T17:26:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Extract remote host address from authority, then from header","shortMessageHtmlLink":"Extract remote host address from authority, then from header"}},{"before":"d71b6f7b2fdd39910cd5911cc8c4a12b9c631fa1","after":"7bae544734938539ef9eb699a9a5ac7159e4a1db","ref":"refs/heads/master","pushedAt":"2024-08-15T17:15:05.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Add parsing of remote host address to HTTP proxy","shortMessageHtmlLink":"Add parsing of remote host address to HTTP proxy"}},{"before":"80943ca9d4e48eea82470013e87fa1a3c9229915","after":"d71b6f7b2fdd39910cd5911cc8c4a12b9c631fa1","ref":"refs/heads/master","pushedAt":"2024-08-13T08:55:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Fix] Use relative URI path for outbound requests\n\nThis is to prevent 414 HTTP errors. Also, error handling is adjusted.","shortMessageHtmlLink":"[Fix] Use relative URI path for outbound requests"}},{"before":"32fda6ab1d56f907e839da62b32b4141f8326810","after":"80943ca9d4e48eea82470013e87fa1a3c9229915","ref":"refs/heads/master","pushedAt":"2024-08-12T17:30:03.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Fix] Expand byte markers for HTTP(S) connection label","shortMessageHtmlLink":"[Fix] Expand byte markers for HTTP(S) connection label"}},{"before":"cba2468dfba10991479697bdf4794d6ac28a9032","after":"32fda6ab1d56f907e839da62b32b4141f8326810","ref":"refs/heads/master","pushedAt":"2024-08-12T10:58:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Fix] Apply Connection::with_upgrades() to HTTP service\n\nThis will allow HTTP handler to perform connection upgrades on CONNECT method.","shortMessageHtmlLink":"[Fix] Apply Connection::with_upgrades() to HTTP service"}},{"before":"0a24d3e74ef04b9bbe4867fce266290e0e9b08b0","after":"cba2468dfba10991479697bdf4794d6ac28a9032","ref":"refs/heads/master","pushedAt":"2024-08-12T09:58:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Feature] Introduce handling of HTTP(S) proxy\n\nThis adds new category of traffic for proxy, currently unstable and untested. Would be improved further.","shortMessageHtmlLink":"[Feature] Introduce handling of HTTP(S) proxy"}},{"before":"4d3fcaa902b8b011ec4b1f352e890ae62f06cfff","after":"827d3874623d0ef5ddb0cc5e4177842bc9e93741","ref":"refs/heads/bsinyapkin/introduce-http-proxying","pushedAt":"2024-08-12T09:56:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Feature] Introduce handling of HTTP(S) proxy\n\nThis adds new category of traffic for proxy, currently unstable and untested. Would be improved further.","shortMessageHtmlLink":"[Feature] Introduce handling of HTTP(S) proxy"}},{"before":null,"after":"4d3fcaa902b8b011ec4b1f352e890ae62f06cfff","ref":"refs/heads/bsinyapkin/introduce-http-proxying","pushedAt":"2024-08-12T09:53:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Feature] Introduce handling of HTTP(S) proxy\n\nThis adds new category of traffic for proxy, currently unstable and untested. Would be improved further.","shortMessageHtmlLink":"[Feature] Introduce handling of HTTP(S) proxy"}},{"before":"e9af7541927430ec9bc28d5d7241ebb4b490cca1","after":"0a24d3e74ef04b9bbe4867fce266290e0e9b08b0","ref":"refs/heads/master","pushedAt":"2024-08-08T20:28:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[HTTP endpoint] Introduce endpoint for providing node status\n\nThis is a major change that includes the following items:\n\n* Endpoint responds to /healthcheck URI path with a) \"started\" UTC timestamp; b) \"uptime\" seconds.\n Data packed as JSON in HTTP response body.\n* Server now has separate LurkServerStats instance for tracking of statistics\n* HTTP endpoint handles requests asynchronously\n* HTTP endpoint has atomic reference to server instance","shortMessageHtmlLink":"[HTTP endpoint] Introduce endpoint for providing node status"}},{"before":"a434f6803a06ba6f986ba9a8966387f9ddbbec57","after":"a992304dc5dafcf3dde24f7dedb22928d73749d8","ref":"refs/heads/bsinyapkin/improve-http-endpoint","pushedAt":"2024-08-08T20:23:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[HTTP endpoint] Introduce endpoint for providing node status\n\nThis is a major change that includes the following items:\n\n* Endpoint responds to /healthcheck URI path with a) \"started\" UTC timestamp; b) \"uptime\" seconds.\n Data packed as JSON in HTTP response body.\n* Server now has separate LurkServerStats instance for tracking of statistics\n* HTTP endpoint handles requests asynchronously\n* HTTP endpoint has atomic reference to server instance","shortMessageHtmlLink":"[HTTP endpoint] Introduce endpoint for providing node status"}},{"before":null,"after":"a434f6803a06ba6f986ba9a8966387f9ddbbec57","ref":"refs/heads/bsinyapkin/improve-http-endpoint","pushedAt":"2024-08-07T18:33:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[HTTP endpoint] Send \"started_utc_ts\" in /healthcheck response","shortMessageHtmlLink":"[HTTP endpoint] Send \"started_utc_ts\" in /healthcheck response"}},{"before":"e98ed10f931681d4552ff579c6c5f27a0157492b","after":"e9af7541927430ec9bc28d5d7241ebb4b490cca1","ref":"refs/heads/master","pushedAt":"2024-07-25T13:23:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Fix README file","shortMessageHtmlLink":"Fix README file"}},{"before":"7d0c9b44e466fad2289fcf93aab712a361982767","after":"e98ed10f931681d4552ff579c6c5f27a0157492b","ref":"refs/heads/master","pushedAt":"2024-07-25T13:21:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Introduce HTTP endpoint for management (#29)\n\nThis adds an initial implementation of management HTTP endpoint serving requests in a separate thread.\r\nCurrently, it just handle only 1 path (/healthcheck) and returns HTTP_OK as a response.\r\nIt has separate config structure and disabled by default.","shortMessageHtmlLink":"Introduce HTTP endpoint for management (#29)"}},{"before":"806e9c05b660bdeb3eeef8fb1dfdd1836788ab0e","after":"b479b7d8e175a71264920697fbb29268059641b5","ref":"refs/heads/bsinyapkin/create-lurkbot","pushedAt":"2024-07-25T13:14:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Fix default logging level","shortMessageHtmlLink":"Fix default logging level"}},{"before":"9f1ea22bc6d59b131cafad1be13bd8dcd8366c7a","after":"806e9c05b660bdeb3eeef8fb1dfdd1836788ab0e","ref":"refs/heads/bsinyapkin/create-lurkbot","pushedAt":"2024-07-25T13:04:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Move LurkBot implementation to a separate repo","shortMessageHtmlLink":"Move LurkBot implementation to a separate repo"}},{"before":"92b26e934033e62a2e0ed0bb3dda34c147bc67aa","after":"9f1ea22bc6d59b131cafad1be13bd8dcd8366c7a","ref":"refs/heads/bsinyapkin/create-lurkbot","pushedAt":"2024-07-25T06:59:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Move LurkBot implementation to a separate repo","shortMessageHtmlLink":"Move LurkBot implementation to a separate repo"}},{"before":"8c4e63e67e4da017fce6a33130fa3764a8cf084a","after":"92b26e934033e62a2e0ed0bb3dda34c147bc67aa","ref":"refs/heads/bsinyapkin/create-lurkbot","pushedAt":"2024-07-11T14:48:54.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[LurkBot] Remove telegram token","shortMessageHtmlLink":"[LurkBot] Remove telegram token"}},{"before":"c7da1e49df7c959f950b647d1d77b1b2dd6961d5","after":"7d0c9b44e466fad2289fcf93aab712a361982767","ref":"refs/heads/master","pushedAt":"2024-06-29T17:24:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Eliminate backpressure functionality\n\nThis wipes out backpressure implementation. This turned out to be an unstable add-on.\n\nImplementation was preserved in 'bsinyapkin/enabled-tcp-backpressure' branch.","shortMessageHtmlLink":"Eliminate backpressure functionality"}},{"before":null,"after":"8c4e63e67e4da017fce6a33130fa3764a8cf084a","ref":"refs/heads/bsinyapkin/create-lurkbot","pushedAt":"2024-06-29T17:17:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[LurkBot] Use try / catch case in main to close the resource and handle bot exceptions","shortMessageHtmlLink":"[LurkBot] Use try / catch case in main to close the resource and hand…"}},{"before":"4e522fed7d5f41dbda706272814ddf21304f9cf0","after":"c7da1e49df7c959f950b647d1d77b1b2dd6961d5","ref":"refs/heads/master","pushedAt":"2024-06-25T19:58:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Refactor] Unify config options","shortMessageHtmlLink":"[Refactor] Unify config options"}},{"before":"e32cb13db4395656bd526b9fc381d180177b90c5","after":"4e522fed7d5f41dbda706272814ddf21304f9cf0","ref":"refs/heads/master","pushedAt":"2024-06-19T16:36:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Feat] Create separate TCP traffic label for \"unknown\" protocols\n\nSuch traffic will be declined and connection is gracefully closed.","shortMessageHtmlLink":"[Feat] Create separate TCP traffic label for \"unknown\" protocols"}},{"before":"b520d07af76cd20e6314aa7516207d0b28b70d6c","after":"e32cb13db4395656bd526b9fc381d180177b90c5","ref":"refs/heads/master","pushedAt":"2024-05-29T08:15:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Eliminate backpressure\n\nIt turned out to be not straightforward to implement backpressure of TCP connections.\nReverting TCP backpressure logic to ease debuggability of existing logic.","shortMessageHtmlLink":"Eliminate backpressure"}},{"before":null,"after":"5f4a02cdad234c8dd5d16248f33066106a83d304","ref":"refs/heads/bsinyapkin/re-work-connection-handling","pushedAt":"2024-05-28T13:29:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Eliminate backpressure\n\nIt turned out to be not straightforward to implement backpressure of TCP connections.\nReverting TCP backpressure logic to ease debuggability of existing logic.","shortMessageHtmlLink":"Eliminate backpressure"}},{"before":"dadd0f50a2604d1eeb59d008ec648f1a83e95554","after":"b520d07af76cd20e6314aa7516207d0b28b70d6c","ref":"refs/heads/master","pushedAt":"2024-05-18T12:14:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Revert \"Disable backpressure\"\n\nThis reverts commit dadd0f50a2604d1eeb59d008ec648f1a83e95554.","shortMessageHtmlLink":"Revert \"Disable backpressure\""}},{"before":"63e435bb7b68c75c527d89d2d586f83154a535d1","after":"dadd0f50a2604d1eeb59d008ec648f1a83e95554","ref":"refs/heads/master","pushedAt":"2024-05-16T12:54:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Disable backpressure","shortMessageHtmlLink":"Disable backpressure"}},{"before":null,"after":"95ae5ab3d975f4a0cd2a0734734779ba4fc63131","ref":"refs/heads/bsinyapkin/disable-backpressure","pushedAt":"2024-05-14T19:26:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"Disable backpressure","shortMessageHtmlLink":"Disable backpressure"}},{"before":"1b16873ae6b0f36818492df9effbf1678f109981","after":null,"ref":"refs/heads/bsinyapkin/refactoring-relay-request-processing","pushedAt":"2024-05-11T19:54:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"}},{"before":"6f788f9313cf8b9631723a766ec5e56b2b9bd9c0","after":"63e435bb7b68c75c527d89d2d586f83154a535d1","ref":"refs/heads/master","pushedAt":"2024-05-11T19:54:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Refactor] Refactor SOCKS5 relay request processing","shortMessageHtmlLink":"[Refactor] Refactor SOCKS5 relay request processing"}},{"before":null,"after":"1b16873ae6b0f36818492df9effbf1678f109981","ref":"refs/heads/bsinyapkin/refactoring-relay-request-processing","pushedAt":"2024-05-11T17:26:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"boris-sinyapkin","name":"Boris S.","path":"/boris-sinyapkin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/39591205?s=80&v=4"},"commit":{"message":"[Refactor] Refactor SOCKS5 relay request processing","shortMessageHtmlLink":"[Refactor] Refactor SOCKS5 relay request processing"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEpBCJlAA","startCursor":null,"endCursor":null}},"title":"Activity · boris-sinyapkin/lurk"}