{"id":13521900,"url":"https://github.com/iCepa/Tor.framework","last_synced_at":"2025-03-31T22:30:20.519Z","repository":{"id":53177646,"uuid":"42680520","full_name":"iCepa/Tor.framework","owner":"iCepa","description":"Tor framework for the iCepa project","archived":false,"fork":false,"pushed_at":"2025-02-26T13:02:46.000Z","size":2823,"stargazers_count":251,"open_issues_count":6,"forks_count":56,"subscribers_count":22,"default_branch":"pure_pod","last_synced_at":"2025-03-25T09:02:31.397Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iCepa.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}},"created_at":"2015-09-17T20:34:42.000Z","updated_at":"2025-03-23T19:10:55.000Z","dependencies_parsed_at":"2023-02-09T03:05:13.375Z","dependency_job_id":"7316b73a-afd2-4848-9d11-7d975ff99381","html_url":"https://github.com/iCepa/Tor.framework","commit_stats":{"total_commits":319,"total_committers":14,"mean_commits":"22.785714285714285","dds":0.2727272727272727,"last_synced_commit":"ad5b49cc4f21e7bc06222de8e0c0e7d31372c22e"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FTor.framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FTor.framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FTor.framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FTor.framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iCepa","download_url":"https://codeload.github.com/iCepa/Tor.framework/tar.gz/refs/heads/pure_pod","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246475215,"owners_count":20783623,"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":[],"created_at":"2024-08-01T06:00:39.342Z","updated_at":"2025-03-31T22:30:20.513Z","avatar_url":"https://github.com/iCepa.png","language":"Objective-C","funding_links":[],"categories":["Uncategorized","Applications"],"sub_categories":["Uncategorized","Other applications"],"readme":"# Tor.framework\n\n[![Version](https://img.shields.io/cocoapods/v/Tor.svg?style=flat)](https://cocoapods.org/pods/Tor)\n[![License](https://img.shields.io/cocoapods/l/Tor.svg?style=flat)](https://cocoapods.org/pods/Tor)\n[![Platform](https://img.shields.io/cocoapods/p/Tor.svg?style=flat)](https://cocoapods.org/pods/Tor)\n\nTor.framework is the easiest way to embed Tor in your iOS application. The API is *not* stable yet, and subject to change.\n\nCurrently, the framework compiles in the following versions of `tor`, `libevent`, `openssl`, and `liblzma`:\n\n| Component | Version  |\n|:--------- | --------:|\n| tor       | 0.4.8.14 |\n| libevent  | 2.1.12   |\n| OpenSSL   | 3.4.1    |\n| liblzma   | 5.6.4    |\n| Onionmasq | 0.6.2    |\n\n\n## Example\n\nTo run the example project, clone the repo, and run `pod install` from the Example directory first.\n\n## Requirements\n\n- iOS 12.0 or later\n- MacOS 10.13 or later\n- Xcode 13.0 or later\n- `autoconf`,  `automake`, `libtool` and  `gettext` in your `PATH`\n\n\n## Installation\n\nInstall build tools via [Homebrew](https://brew.sh):\n\n```sh\nbrew install automake autoconf libtool gettext\n```\n\nTor is available through [CocoaPods](https://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\nIf you use dynamic frameworks, use the root spec:\n\n```ruby\nuse_frameworks!\npod 'Tor', '~\u003e 408'\n```\n\n(or `Tor/GeoIP` - see below.)\n\n\nIf you need to add it as a static library, you will need to add it from a modified podspec:\n\n```ruby\npod 'Tor', :podspec =\u003e 'https://raw.githubusercontent.com/iCepa/Tor.framework/pure_pod/TorStatic.podspec'\n```\n\nCurrently static library support is unstable. You might encounter build issues. \nEvery contribution to fix this is welcome!\n\n(or `Tor/GeoIP` - see below.)\n\nIf you check out this repository directly, you will also need to fetch the submodules:\n\n`git submodule update --init --recursive`\n\nIf you use it as a normal CocoaPods dependency, that will be done by CocoaPods.\n\n\n## Preparing a new release\n\nFor maintainers/contributors of Tor.framework, a new release should be prepared by \ndoing the following:\n\nEnsure that you have committed changes to the submodule trees for tor, libevent, openssl, and xz.\n\nAlso update info and version numbers in `README.md` and `Tor.podspec`!\n\nThen lint like this:\n\n```sh\npod lib lint --verbose --allow-warnings\n```\n\n(Use `verbose`, otherwise you'll get *very* bored.)\n\nIf the linting went well, create a git tag for the version, push to GitHub and then publish to CocoaPods:\n\n```sh\npod trunk push Tor.podspec --verbose --allow-warnings --skip-import-validation --skip-tests\n```\n\n(Unfortunately, you can not not lint on publish, so you might skip the first lint. However, `pod trunk push`\nwill take even longer, because it will clone everything fresh, too.)\n\n\nThen create a [release](https://github.com/iCepa/Tor.framework/releases) in GitHub which corresponds\nto the tag, and attach latest info as per older releases.\n\n\n### Upgrading Tor\n\nTo upgrade Tor:\n\n```bash\ncd Tor/tor\ngit fetch\ngit checkout tor-0.4.8.14 # Find latest versions with git tag -l\nrm -r * \u0026\u0026 git checkout . # Get rid of all autogenerated configuration files, which may not work with the newest version anymore.\ngit submodule update --init --recursive # Later Tor has submodules.\n```\n\n-\u003e Test build by running the Example apps.\n\nCheck build output in the Report Navigator. (Last tab in the left pane.)\n\n\n## Usage\n\n### All-in-one `TorManager`\n\nFor a headache-free start into the world of Tor on iOS and macOS, check out\nthe new [`TorManager` project](https://github.com/tladesignz/TorManager)!\n\n### Do-it-yourself\n\nStarting an instance of Tor involves using three classes: `TORThread`, `TORConfiguration` and `TORController`.\n\nHere is an example of integrating Tor with `NSURLSession`:\n\n```objc\nTORConfiguration *configuration = [TORConfiguration new];\nconfiguration.ignoreMissingTorrc = YES;\nconfiguration.cookieAuthentication = YES;\nconfiguration.dataDirectory = [NSURL fileURLWithPath:NSTemporaryDirectory()];\nconfiguration.controlSocket = [configuration.dataDirectory URLByAppendingPathComponent:@\"control_port\"];\n\nTORThread *thread = [[TORThread alloc] initWithConfiguration:configuration];\n[thread start];\n\nNSData *cookie = configuration.cookie;\nTORController *controller = [[TORController alloc] initWithSocketURL:configuration.controlSocket];\n\nNSError *error;\n[controller connect:\u0026error];\n\nif (error) {\n    NSLog(@\"Error: %@\", error);\n    return;\n}\n\n[controller authenticateWithData:cookie completion:^(BOOL success, NSError *error) {\n    if (!success)\n        return;\n\n    [controller addObserverForCircuitEstablished:^(BOOL established) {\n        if (!established)\n            return;\n\n        [controller getSessionConfiguration:^(NSURLSessionConfiguration *configuration) {\n            NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];\n            ...\n        }];\n    }];\n}];\n```\n\n\n### GeoIP\n\nIn your `Podfile` use the subspec `GeoIP` or `StaticGeoIP` instead of the root spec:\n\n```ruby\nuse_frameworks!\npod 'Tor/GeoIP'\n```\n\nor\n\n```ruby\npod 'Tor/GeoIP', :podspec =\u003e 'https://raw.githubusercontent.com/iCepa/Tor.framework/pure_pod/TorStatic.podspec'\n```\n\nThe subspec will create a \"GeoIP\" bundle with the appropriate GeoIP files.\n\nTo use it with Tor, add this to your configuration:\n\n```objc\nTORConfiguration *configuration = [TORConfiguration new];\nconfiguration.geoipFile = NSBundle.geoIpBundle.geoipFile;\nconfiguration.geoip6File = NSBundle.geoIpBundle.geoip6File;\n```\n\n### Experimental Arti and Onionmasq podspec\n\nSince I while, this project also contains a podspec, which uses Arti (A Rust Tor Implementation)\nor Onionmasq (Arti with a wrapper taking in IP packets, useful for VPN-style apps.)\n\n```ruby\npod 'Tor/Arti', :podspec =\u003e 'https://raw.githubusercontent.com/iCepa/Tor.framework/pure_pod/Arti.podspec'\n```\n\nor\n\n```ruby\npod 'Tor/Onionmasq', :podspec =\u003e 'https://raw.githubusercontent.com/iCepa/Tor.framework/pure_pod/Arti.podspec'\n```\n\nThere's currently a known issue: Onionmasq won't compile if you build for iOS or an iOS simulator right away,\nsince some Rust dependencies use custom build scripts which need to get compiled for MacOS, but will try\nto use the wrong platform (iOS) in this case. \nThis can be fixed, if you compile for your machine first:\n\n```sh\ncd Pods/Tor/Tor/onionmasq\nmake macos-debug-aarch64-apple-darwin # If you run on Apple Silicon\nmake macos-debug-x86_64-apple-darwin # If you're still on Intel\n```\n\nThen, the Rust dependency build scripts will be compiled correctly and the \nXcode build will run correctly.\n\nYou can also precompile your debug and release targets on the command line, if you like:\n\n```sh\nmake macos-release-universal-macos # Release build for MacOS as universal binary\nmake ios-release-aarch64-apple-ios # Release build for iOS\nmake ios-debug-aarch64-apple-ios # Debug build for iOS device\nmake ios-debug-aarch64-apple-ios-sim # Debug build for iOS simulator running on Apple Silicon\nmake ios-debug-x86_64-apple-ios # Debug build for iOS simulator running on Intel\n```\n\n\n## Further reading\n\nhttps://tordev.guardianproject.info\n\n\n## Authors\n\n- Conrad Kramer, conrad@conradkramer.com\n- Chris Ballinger, chris@chatsecure.org\n- Mike Tigas, mike@tig.as\n- Benjamin Erhart, berhart@netzarchitekten.com\n\n\n## License\n\nTor.framework is available under the MIT license. See the \n[`LICENSE`](https://github.com/iCepa/Tor.framework/blob/master/LICENSE) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiCepa%2FTor.framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FiCepa%2FTor.framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiCepa%2FTor.framework/lists"}