{"id":13558403,"url":"https://github.com/tdfischer/pto","last_synced_at":"2025-10-29T02:12:12.213Z","repository":{"id":66452085,"uuid":"47775909","full_name":"tdfischer/pto","owner":"tdfischer","description":"IRC to Matrix bridge","archived":false,"fork":false,"pushed_at":"2016-10-09T05:12:03.000Z","size":369,"stargazers_count":48,"open_issues_count":32,"forks_count":7,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-07T15:05:43.605Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tdfischer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-12-10T17:06:29.000Z","updated_at":"2024-06-07T13:02:01.000Z","dependencies_parsed_at":"2023-02-22T08:15:10.429Z","dependency_job_id":null,"html_url":"https://github.com/tdfischer/pto","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/tdfischer/pto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdfischer%2Fpto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdfischer%2Fpto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdfischer%2Fpto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdfischer%2Fpto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tdfischer","download_url":"https://codeload.github.com/tdfischer/pto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tdfischer%2Fpto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281544195,"owners_count":26519554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:04:56.089Z","updated_at":"2025-10-29T02:12:12.197Z","avatar_url":"https://github.com/tdfischer.png","language":"Rust","funding_links":[],"categories":["Rust","others"],"sub_categories":[],"readme":"# Perpetually Talking Online\n\n[![Build Status](https://travis-ci.org/tdfischer/pto.svg?branch=master)](https://travis-ci.org/tdfischer/pto)\n[![Stories in Ready](https://badge.waffle.io/tdfischer/pto.png?label=ready\u0026title=Ready)](https://waffle.io/tdfischer/pto)\n\nAn IRC to Matrix bridge.\n\nThis is different from the existing appservice on matrix.org. This work in\nprogress allows IRC users to join a matrix community. Its just a readme/vague\nrequirements document right now but code is being hacked on! Its for the\nhackerspace community https://oob.systems/. Come join us in\n#pto:oob.systems.\n\nThe idea being that one could point irssi at an IRC \"daemon\" behind a .onion\naddress, and have access to the channels that are local to a homeserver. Joining\n\\#the-oob would result in the user's matrix user joining \\#the-oob:oob.systems, if\nthe IRCd is pointed to serve up the oob.systems namespace. Users can use SASL\nauth to login with their existing oob.systems matrix account.\n\nIt would be impossible to join channels outside the homeserver for simplicity of\nimplementation, and really, this is about building a tight-knit community. One\nshould still be able to talk with everyone who is in the channel, including\nusers from outside the homeserver and handle various channel management tasks\nsuch as kicks, bans, topics, etc.\n\nThis provides a *super* low level interface to onboarding new users to an\nexisting (or new!) Matrix community.\n\n## Building this sucker\n\nYou'll need the following ingredients: \n\n- Rust \u003e= 1.5.0: https://www.rust-lang.org/\n- Cargo (any recent)\n\nOnce those two are installed, you can build PTO as follows:\n\n  ``$ cargo build``\n\nPTO can then be ran by specifying the domain to login at:\n\n  ``$ cargo run matrix.org``\n\nSpecify a different URL to use a different matrix server.\n\nOr the appropriate binary named ./target/\\*/pto\n\nTo use a different address+port, use:\n\n  ``$ cargo run matrix.org 0.0.0.0:4242``\n\nYou can also specify a full URL to use, such as when running on the same host:\n\n  ``$ cargo run http://localhost:8000/_matrix/ 0.0.0.0:4242``\n\n## Configuration\n\nCurrently configuration is limited to modifying hardcoded strings in various\nplaces. Thank you for getting this far though! I would absolutely love a patch\n\u003c3\n\nThe following are hardcoded defaults:\n\n- Listens on 127.0.0.1:8001 by default unless told otherwise\n- Requires SSL for non-loopback addresses\n- If SSL is used, it requires files named ./pto.crt and ./pto.key for a SSL\n  certificate and key, respectively\n\nPTO accepts two command line arguments:\n\n  ``$ pto \u003chostname-or-url\u003e [\u003clisten-address:port\u003e]``\n\n``hostname-or-url`` can be a url such as ``https://matrix.org/\\_matrix/``, or it can\njust be a domain name such as ``matrix.org``. In the case of only using a domain\nname, PTO will look up the \\_matrix.\\_tcp SRV record and use that if one exists.\n\n## Usage\n\nBy default, PTO will listen on localhost:8001 for an IRC client to connect with\nan appropriate username and password. The username and password supplied through\nthe IRC connection will be used to login to matrix.\n\nWith most clients, this is called your \"ident\" and \"server password\". SASL\nauthentication is currently unimplemented though patches are welcome and\nappreciated.\n\nPTO will only support logins to the server specified on the command line,\nmeaning your username is your matrix username. For example, if your login is\n@alice:matrix.org, use 'alice' to login to PTO.\n\nGuest support is currently unimplemented though both protocols support the idea\nvery well.\n\n# TODO\n\nCheck out the Github issues for the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftdfischer%2Fpto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftdfischer%2Fpto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftdfischer%2Fpto/lists"}