Coder Social home page Coder Social logo

afi-sync's Introduction

AFISync

AFISync is a simple tool for downloading and distributing Arma 3 mod sets (aka repositories).

Features

  • P2P:Uses torrent protocol for file sharing
  • Robust: No single point of failure like FTP server. Even if AFISync fails to start mods can still be downloaded with regular torrent client.
  • Delta patching: Uses XDelta3 binary delta tool and 7z compression for delta patch generation
  • Simple: Activate repository, wait for download to finish and click "Join Server"
  • Fast start-up: Starts within few seconds, identical start-up times with any light weight torrent client like qBittorrent.
  • No need for servers: See setting up
  • Free Software: AFISync is released under MIT license.

Usage

  • Download pre-configured AFISync from your community web site
  • Start AFISync
  • Activate repository
  • Wait for the download to finish
  • Click "Join Server"

Hosting repositories

  • Download AFISync from releases section
  • Create torrent files from mod directories. Torrent file should be named in the following way: _.torrent, for example: @cba_1.torrent and have at least one tracker configured. Whenever mod is updated its torrent version number should be incremented.
  • configure settings\repositories.json according to the example. key should either contain url to the torrent (http://example.com/@cba_1.torrent) or relative file path "torrents/@cba_1.torrent". In the former case torrents should be hosted on HTTP-server. In the latter case torrents should be distributed with the AFISync package.
  • Create zip out of the new configuration of the AFISync and distrubute it.
  • Run AFISync mirror on the server: afisync_cmd.exe --mirror . This should seed the torrents.
  • Optional updateUrl configuration defines HTTP-adress to the online repositories.json . It can be updated when required.

Qt Creator set-up in Windows

AFISync requires following: MSVC-14, libTorrent 1.1.1 or later and Boost 1.63.0 or later. For simplicity you may use makeDynamicDeps.bat script inside build-scripts directory which compiles all the required DLL's. libtorrent-rasterbar-1.1.1.7z and boost_1_63_0.7z need to placed inside ..\src directory in order for it to work. Example directory structure:

afisync\afi-sync (files pulled from git)
afisync\src (sources for libraries)
afisync\src\libtorrent-rasterbar-1.1.1.7z
afisync\src\boost_1_63_0.7z
afisync\lib (compiled dll files)
afisync\personal (Developer's AFISync installation)
afisync\zip.exe
afisync\bzip2.dll

After setting up files, build DLL's: build-scripts\makeDynamicDeps.bat

This should copy required DLL files into lib directory and AFISync should now compile inside Qt Creator

Linux mirror set-up

For Linux mirror set-up AFISync needs to be compiled first.

  • Install dependencies: Boost, Qt and libTorrent (rasterbar) dev-packages: libboost-dev, qtbase5-dev, qtbase5-dev-tools, qtdeclarative5-dev, qt5-default, libtorrent-rasterbar-dev
  • Fetch sources: git clone https://github.com/haikion/afi-sync.git
  • Compile AFISync: qmake && make
  • Run mirror: ./AFISync --mirror

Delta patching

Delta patches can be generated with afisync_cmd.exe. Example: afisync_cmd.exe --old-path D:\mods\@cba --new-path D:\update\@cba --output-path D:\mods\afisync_patches Patches torrent should be named:afisync_patches_<version>.torrent, example afisync_patches_1.torrent deltaUpdates-setting inside repositories.json defines the HTTP url to the patches torrent.

afi-sync's People

Contributors

haikion avatar

Stargazers

Moritz Schmidt avatar  avatar Aarni Halinen avatar Jesse Clark avatar Timo Salola avatar Viljo Viitanen avatar

Watchers

Moritz Schmidt avatar  avatar  avatar  avatar Alexander Koch avatar

Forkers

nikolauska

afi-sync's Issues

Installing userconfig fails

Program does not copy @task_force_radio userconfig to Arma3 install dir. This fails because the userconfig dir does not exists in default installation.

image

Instead of checking that the destination folder exists it should create it if it does not exists.

58850 static void Installer::install(const QDir&, const QDir&) Nothing to install src = "E:/Pelit/arma2/@task_force_radio/userconfig"
58850 static void Installer::install(const QDir&, const QDir&) Nothing to install src = "E:/Pelit/arma2/@task_force_radio/store/userconfig"

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.