Coder Social home page Coder Social logo

danpashin / twackup-rs Goto Github PK

View Code? Open in Web Editor NEW
36.0 2.0 6.0 1.95 MB

Safe and fast iOS utility for rebuilding DEB's and backing up packages

License: GNU General Public License v3.0

Rust 57.28% C++ 0.93% Ruby 0.16% Objective-C 7.37% Swift 34.25%
ios cli jailbreak cydia backup sileo zebra dpkg apt

twackup-rs's Introduction

Logo

Release Supported platforma
Current CI state
License Donate

Twackup

Twackup is a simple iOS tool for re-packaging installed packages to DEB's or backing up and restoring packages or repos. CLI version works from iOS 6 and later and GUI from iOS 14 and later. CLI can be also compiled and work fine on any Debian-based linux, though I do not support this platforms.

Twackup uses custom dpkg database parser written and Rust - and it parses dpkg database a bit faster than dpkg itself. It means it can be used on that platforms that have no support of dpkg - primarily, iOS. There already are some tweaks for jailbreak with the same target, but they all are poorly written in something like Bash and do not really work as they expected to. That's why Twackup exists at all.

Screenshots

Leaves Detail Settings
First Second Third

Building from source

  1. Make sure you have Rust installed. If not, I would recommend installing it via rustup.

  2. Clone the source with git:

    $ git clone https://github.com/danpashin/twackup-rs.git
    $ cd twackup-rs
    • If you are targeting to run twackup on host platform, you can directly run cargo build --release and you'll find binary in target directory.
    • If you decided to build for iOS and run all tests, then
      1. Install dependencies
        # Install building system
        $ cargo install cargo-make
        
        # Install different building utils if you don't have them
        $ brew install dpkg ldid coreutils
        
        # Install utils from rubygems
        $ bundle install
      2. Make sure you have nightly rust with sources as well as iOS and iOS Simulator platforms support
        $ rustup target add aarch64-apple-ios x86_64-apple-ios
        $ rustup toolchain install nightly
        $ rustup component add rust-src --toolchain nightly
      3. Install GUI libraries from cocoapods
        $ cd twackup-gui
        $ pod install
      4. And finally start build
        $ cargo build-ios
        This will take a relatively large amount of time.It is about 30 mins for GitHub actions and 10 mins for my Mac.

Contributing

I'll be really glad to see you in contributors for this project. I spent a lot of time of in writing it to its current state and this is really exhausting.

Sponsoring

You can donate me only on Qiwi platform currently.

MSRV

1.62.1 for main library

1.64.0 for CLI

License

Twackup is licensed under GNU General Public License v3.0

See COPYING for the full text.

twackup-rs's People

Contributors

danpashin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

twackup-rs's Issues

[Bug] Twackup(GUI) 2.0.2 causes long re-jailbreaking process

After update to 2.0.2, I noticed that my rejailbreaking time takes much more longer, needing like 3-5 minutes and tempt to fail at least once.

After removing Twackup(GUI) the issue immediately disappears. Back to my normal booting time (1 minute at most and never fail)

Ps: for my knowledge this issue is usually caused by code regression failure (maybe)

Device: iPhone 11 Pro Max
iOS: 14.8
Jailbreak: unc0ver 8.0.2
Substitute: 2.3.1
Twackup: 2.0.2

Syncing file simultaneously

While I delete the rebuilded .debs in Filza, Twackup still showing them in GUI.

Empty Filza path: image

GUI still showing deleted items:
image

iOS 13 compatibility

Please make this compatible with iOS13.

If the firmware dependency is just due to no test device I'm happy to test.

Random location of Rebuilded files

As title.

Sometimes the Rebuilded .debs are placed in /var/mobile/Documents and sometimes in /var/mobile/Containers/Data/Application/ Twackup /Documents

App crashes when tapping on share button

Some users reporting about weird crash when tapping on share button for deb

func shareDeb() {
guard let package = package as? DebPackage else { return }
let activityVC = UIActivityViewController(activityItems: [package.fileURL()], applicationActivities: nil)
activityVC.popoverPresentationController?.barButtonItem = shareDebButton
present(activityVC, animated: true, completion: nil)
}

Or for package list

func shareList() {
let packagesText = model.dataProvider.packages
.enumerated()
.map { index, package in
String(format: "%3d. %@ - %@", index + 1, package.id, package.version)
}
.joined(separator: "\n")
let activityVC = UIActivityViewController(activityItems: [packagesText], applicationActivities: nil)
activityVC.popoverPresentationController?.barButtonItem = shareListButton
present(activityVC, animated: true, completion: nil)
}

Should investigate more. No backtrace at this moment
crash

GUI support

As Twackup now supports FFI, gui is needed

Add FFI

Since v2.0.0 Twackup is split into library and CLI interface, it needs to have FFI. This will allow creating GUI and using Twackup in other non-rust projects

Migrate to self-build system

Twackup needs to have man pages and shell completion. This needs own build system without any usage of make or jq

Out of memory exception

App and CLI tool are crashed when performing huge deb rebuild like themes. They are causing memory exception which leads to app/tool crash.

To fix this, library should choose between rebuilding in memory on in files.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.