{"id":18289163,"url":"https://github.com/cmsj/orbital-defence-platform","last_synced_at":"2025-10-31T20:03:00.385Z","repository":{"id":145773698,"uuid":"83602845","full_name":"cmsj/orbital-defence-platform","owner":"cmsj","description":"RPC for servers via Pushbullet","archived":false,"fork":false,"pushed_at":"2017-05-31T14:34:03.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T07:16:21.266Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmsj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-03-01T21:20:03.000Z","updated_at":"2017-03-01T21:20:18.000Z","dependencies_parsed_at":"2023-05-17T23:00:14.531Z","dependency_job_id":null,"html_url":"https://github.com/cmsj/orbital-defence-platform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cmsj/orbital-defence-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmsj%2Forbital-defence-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmsj%2Forbital-defence-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmsj%2Forbital-defence-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmsj%2Forbital-defence-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmsj","download_url":"https://codeload.github.com/cmsj/orbital-defence-platform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmsj%2Forbital-defence-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282049662,"owners_count":26605488,"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-31T02:00:07.401Z","response_time":57,"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-11-05T14:04:58.950Z","updated_at":"2025-10-31T20:03:00.370Z","avatar_url":"https://github.com/cmsj.png","language":"Python","readme":"# Orbital Defence Platform\nby Chris Jones \u003ccmsj@tenshu.net\u003e\n\n## Licence\nReleased under the MIT licence.\n\n## Introduction\nThis is a simple tool for remote execution. You send a message with Pushbullet, from a trusted device, and a corresponding command is executed.\n\n## Installation\n * The `requirements.txt` file describes the Python dependencies required, you can cause them to be installed with `pip install -r requirements.txt`\n * Copy `odp.py` somewhere useful\n * Copy `sample-config.json` to `/etc/odp.json` and edit it\n  * Insert your Pushbullet API key\n  * Add one or more Pushbullet identifiers for your trusted devices. You can find these identifiers by running `odp.py` with `-s` after adding your API key\n  * Add one or more commands to the configuration\n * Arrange for `odp.py` to be running on your machine, it will create a new device in your Pushbullet account called `ODP`\n * Send one of your pre-defined commands from a trusted source device, to your `ODP` device\n * If you want to, you can choose a different name for the odp device, by adding an `odp_device_name` entry in the JSON configuration.\n\n## Security\nObviously there are huge potential risks in exposing a machine to a third party service, when command execution is involved.\n\nFor this reason, ODP will never include any part of the remote message, in the command that is executed. Commands must be strictly pre-defined in the configuration file.\n\nYou are strongly encouraged to run ODP as an unprivileged user, with its configuration file not writeable by that user. To execute privileged commands, create static, passwordless `sudoers` entries which tightly control the privileged commands that can be executed (the correct ways to do this are beyond the scope of this README, you are encouraged to seek out the many tutorials for writing locked-down `sudoers` entries)\n\n## Troubleshooting\nYou can run `odp.py` with `-d` to get fairly comprehensive logging.\n\nThe process will poll Pushbullet for new messages, every 30 seconds, which may cause you to get ratelimited if you're not a Pushbullet Pro subscriber. You can change the polling interval with the `-t` command line option.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmsj%2Forbital-defence-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmsj%2Forbital-defence-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmsj%2Forbital-defence-platform/lists"}