{"id":19091112,"url":"https://github.com/ashafer01/t9","last_synced_at":"2025-07-20T15:02:42.692Z","repository":{"id":90298192,"uuid":"203081988","full_name":"ashafer01/T9","owner":"ashafer01","description":"The T9 \"Anything\" bot for IRC wsg. asyncio and Docker!","archived":false,"fork":false,"pushed_at":"2022-01-04T23:10:41.000Z","size":69,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-22T07:27:07.387Z","etag":null,"topics":["asyncio","irc","irc-bot","irc-bot-framework","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ashafer01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-19T02:13:02.000Z","updated_at":"2023-11-18T02:27:27.000Z","dependencies_parsed_at":"2023-03-13T17:59:01.712Z","dependency_job_id":null,"html_url":"https://github.com/ashafer01/T9","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ashafer01/T9","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashafer01%2FT9","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashafer01%2FT9/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashafer01%2FT9/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashafer01%2FT9/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashafer01","download_url":"https://codeload.github.com/ashafer01/T9/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashafer01%2FT9/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266143941,"owners_count":23883069,"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","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":["asyncio","irc","irc-bot","irc-bot-framework","python3"],"created_at":"2024-11-09T03:11:04.218Z","updated_at":"2025-07-20T15:02:42.664Z","avatar_url":"https://github.com/ashafer01.png","language":"Python","readme":"# T9 \"Anything\" IRC Bot\n\nT9 allows users to define their own functions.\n\nThey can have a completely arbitrary trigger based on an input line in a\nchannel.\n\nThey can, very boringly, echo back a single string.\n\nMuch more interestingly, they can exec an arbitrary command on a Docker\ncontainer, with a system of environment variables passed in allowing complex\ninteractions with the IRC protocol, the state of the bot, and external\nresources.\n\nThis is not for every IRC server. Effort has been made to try to keep things\nreasonably secure, but it is by no means perfect. As the code sits now it is\nalmost trivial to get a root shell on the container, and then of course\nthe security of the system reduces to docker security, which is bemoaned by\nmany.\n\nThe security is also closely linked to IRC security. If you have a few trusted\nusers on a larger IRC server it is reasonable to allow only those users to have\na potential for exploiting T9 (unless of course a function itself has\nexploits).\n\nCheck the example config for more information.\n\nDocumentation is available in the [GitHub wiki](https://github.com/ashafer01/T9/wiki).\n\nOriginally built on Python 3.7.3\n\n## Quickstart\n\nUse `./quickstart.sh` to build images and bring up services in the foreground for testing and demos. This includes\na local IRC server and Postgres database. Making direct use of the [quickstart orchestration](orchestration/quickstart)\nis also a good starting point if you *don't* have an existing IRC server or DB.\n\nPoint your IRC client at `localhost:42667` and join `#T9-playground` to try it out.\n\n## Standalone\n\nUsing or modifying the [standalone orchestration](orchestration/standalone) is recommended for most users who wish to\nuse T9 with an existing IRC server and database.\n\n## Custom and Manual Deployments\n\nT9 does not explicitly require the use of Docker as of 0.2.0. The exec server and T9 are both normal Python\napplications. For any semblance of security, running the exec server in some kind of isolated environment is strongly\nrecommended. This environment could be a Docker container, virtual machine, Raspberry Pi, or anything in between.\n\nStarting from a freshly cloned git repo, to install and run the exec server:\n\n```bash\npython3 setup.t9-exec-server.py install\npython3 -m t9_exec_server\n```\n\nAnd for T9 itself:\n\n```bash\npython3 setup.t9-irc-bot.py install\n\n# Assuming a valid config.yaml is in the current directory\npython3 -m t9\n\n# You can also pass in the path to a config file\npython3 -m t9 ~/some/dir/t9.yaml\n\n# Finally you can pass in a config filename by environment variable\nexport T9_CONFIG_FILE=\"/opt/my_deployments/t9/config.yaml\"\npython3 -m t9\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashafer01%2Ft9","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashafer01%2Ft9","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashafer01%2Ft9/lists"}