{"id":20677251,"url":"https://github.com/operatorfoundation/shapeshifterdispatcherswift","last_synced_at":"2026-02-09T06:09:53.782Z","repository":{"id":37275778,"uuid":"465537896","full_name":"OperatorFoundation/ShapeshifterDispatcherSwift","owner":"OperatorFoundation","description":"Swift Implementation of ShapeshifterDispatcher: Under Construction","archived":false,"fork":false,"pushed_at":"2024-10-30T22:50:50.000Z","size":141,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-19T21:49:50.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","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/OperatorFoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2022-03-03T02:19:57.000Z","updated_at":"2024-10-16T22:03:00.000Z","dependencies_parsed_at":"2023-09-28T17:49:29.039Z","dependency_job_id":"59d40938-9467-499b-b56a-9b52573d17ad","html_url":"https://github.com/OperatorFoundation/ShapeshifterDispatcherSwift","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/OperatorFoundation/ShapeshifterDispatcherSwift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FShapeshifterDispatcherSwift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FShapeshifterDispatcherSwift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FShapeshifterDispatcherSwift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FShapeshifterDispatcherSwift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OperatorFoundation","download_url":"https://codeload.github.com/OperatorFoundation/ShapeshifterDispatcherSwift/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FShapeshifterDispatcherSwift/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270199133,"owners_count":24543592,"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-08-13T02:00:09.904Z","response_time":66,"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-16T21:14:54.260Z","updated_at":"2026-02-09T06:09:53.712Z","avatar_url":"https://github.com/OperatorFoundation.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"### The Operator Foundation\n\n[Operator](https://operatorfoundation.org) makes useable tools to help people around the world with censorship, security, and privacy.\n\n## The Moonbounce Project\nThe Moonbounce Project is an initiative covering several clients, servers, and libraries. The goal of the project is to provide a simple VPN service that integrates\nPluggable Transport technology. This allows the Moonbounce VPN to operate on network with restrictive Internet censorship that blocks VPN protocols such as OpenVPN\nand Wireguard. This project, Shapeshifter Dispatcher for Swift, is one of several components of the Moonbounce project.\n\n# Shapeshifter Dispatcher for Swift\n\nA Swift implementation of Shapeshifter Dispatcher designed to run on Linux machines as a command line tool.\n\nCurrently this implementation only supports running **Shadow**, **Starbridge**, **Omni**, and **Dandelion** transports in *server* mode.\n\n## Running a Shadow Server\n\n```\nShapeshifterDispatcherSwift -ptversion 3.0 -transport shadow -bindhost \u003cserver IP\u003e -bindport \u003cserver port\u003e -optionsfile \u003cpathToTransportConfig\u003e -server -targethost \u003ctarget IP\u003e -targetport \u003ctarget port\u003e\n```\n\n## Running a Starbridge Server\n\n```\nShapeshifterDispatcherSwift -ptversion 3.0 -transport starbridge -bindhost \u003cserver IP\u003e -bindport \u003cserver port\u003e -optionsfile \u003cpathToTransportConfig\u003e -server -targethost \u003ctarget IP\u003e -targetport \u003ctarget port\u003e\n```\n\n# Shapeshifter Configs\n\nRunning the dispatcher requires an options file containing the configuration information for the chosen Pluggable Transport.\n\nThe ShapeshifterConfigs tool generates new config files for the transports supported by Shapeshifter Dispatcher for Swift.\n\nCurrently this implementation supports the creation of **Shadow** and **Starbridge** config files.\n\n## Usage:\n\n### Starbridge Config Generation\n\nRunning this command will generate a valid server and client config file pair, and save them to the directory of your choice.\n\nNote that because Starbridge uses encryption, it is not possible to mix and match server and client configs. The server config that is generated will run a server that clients can connect to, ONLY if they use the client config information that was generated at the same time.\n```\nswift run ShapeshifterConfigs starbridge --host \u003cserverIP\u003e --port \u003cserverPort\u003e --directory \u003cpathToSaveDirectory\u003e\n```\n\n### Shadow Config Generation\n\nRunning this command will generate a valid server and client config file pair, and save them to the directory of your choice.\n\nNote that because shadow uses encryption, it is not possible to mix and match server and client configs. The server config that is generated will run a server that clients can connect to, ONLY if they use the client config information that was generated at the same time.\n```\nswift run ShapeshifterConfigs shadow --host \u003cserverIP\u003e --port \u003cserverPort\u003e --directory \u003cpathToSaveDirectory\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperatorfoundation%2Fshapeshifterdispatcherswift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foperatorfoundation%2Fshapeshifterdispatcherswift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperatorfoundation%2Fshapeshifterdispatcherswift/lists"}