sync application configuration and settings across multiple multiplatform devices

Overview


synko

sync application configuration and settings across multiple multiplatform devices

license

Key Features ⚗️ Installation 📑 How To Use 🤔 FAQ 🛠️ Setup 👨 🧑 Contribution

Features

Synko is still in development phase and is not tested throughly, so it is recommended to take backup of the config files before adding to synko. As any bug may lead to loss of data.

  • Sync application settings and configuration files across multiple devices (linux and macos)
  • Works with dropbox (Read FAQ to know more)
  • User gets the freedom to add path to the config and setting files.
  • Freedom to sync specific set of files across specific set of devices. Here is an example:

feature-1-2

⚗️ Install

Install synko with pip

NOTE: If on using command not found: synko or similar message shows up then try running the above command as root user (sudo)

  pip install synko

📑 How to use

Note: on first usage of Synko it'll look for Dropbox directory and if not found, it will prompt to enter the path to dropbox. Also synko needs to register you device so it will prompt to enter device name which can be anything you want as long as it's not conflict with pre-registered devices. Here is how it looks:

In gif below, synko is running in WSL (Windows Subsystem Linux) and my dropbox folder is the Windows so I had to change the dropbox path to the one in windows for it to work properly.

unregistered

In case one want's to change/update the storage path anytime later then use synko info -p path/to/storage

Add

Usage: synko add [paths...] --config-name="configname"

adding files to synko

config-name can be anything, synko will add provided paths under the config name

add command 1

add multiple files to synko

Note: if --config-name / -c option is not used then it prompts to enter the config name as seen in below gif

add command 2

adding files under same config name

one can also add files to existing config names like so:

synko add ~/.config/random_app/newfile -c existing_config_name

How to sync?

Suppose there are two devices A and B. In device A you added a file like so:

Device A: synko add ~/.config/random_app/a.conf --config-name=config1

the file will be saved under config name "config1". In order to sync this file with device "B" you need to make sure that the file with similar name (a.conf in this case) already exists in device "B". If does not exist then create an empty file. After doing so you just need to add the file to synko in device B under the same config name used in device A (config1 in this case) like so:

Device B: synko add ~/.config/random_app/a.conf --config-name=config1

below is a demo syncing across device

It may also be possible that a.conf already exists in device B with some content which may differ from the one in device A. Conflict arise and user is given the options to choose which one's content should be saved:

syncing across device

Current process of syncing is bit tideous as of now but more changes will be made to make the process relatively easy.

Index

Usage: synko index

list all the added configurations

synko index

index

Remove

Usage: synko remove [options]

remove specific configuration/settings file added to synko

synko remove --config-name configuration_name_here

it asks to select one or multiple files one wants to remove from synko, user right arrow key to select and left arrow key to unselect , up and down arrow key to navigate. remove

If you don't want to remove any then select nothing and press enter, the process will be aborted

remove all config files added to Synko on current device for syncing (this won't affect other devices)

synko remove -a

remove all

Info

Usage: synko info [options]

displaying current synko settings

synko info

info

updating storage path

synko info -p path/to/storage/dir

info

in gif above synko is running in WSL (Windows Subsystem Linux) and my dropbox folder is the Windows so I had to change the dropbox path to the one in windows for it to work properly.

Reset

Usage: synko reset

Reset synko completely, (fresh as new)

This removes all the files added to synko on current device and also resets synko by unregistering you device and the storage path. So next time you run any synko command, you'll be prompted to register your device and if the default storage path is not found then you'll be prompted to enter storage path.

reset

In the gif above you can see that after reset command, the time when any other synko command is executed it prompts to register device.

🤔 FAQ

Only Dropbox supported?

Well synko works with any cloud storage syncing solution as long as all the devices use the same solution. You just need to provide synko with the path to the folder which is getting synced by the cloud storage syncing solution. Dropbox is the best one to go with as it has support for mutiple platforms.

🛠️ Setup

Install dependencies

using pipenv

pipenv install

using pip

pip3 install -r requirements.txt

Run:

After making changes make sure to run below command

sudo python3 setup.py install

now to run, directly use synko command.

👨 🧑 Contribution

If you are interested in helping with project development, see contribution guide to find a set of tips.

Comments
  • Updated Logo !!

    Updated Logo !!

    I have updated the logo. I also made the logo file to SVG. If you like it, remember to change the <img> tag's src attribute to the SVG file on your repo instead of mine. There is also a png logo should you want it.

    hacktober-accepted 
    opened by PK-cod3ch3mist 1
  • Need a logo for synko

    Need a logo for synko

    Current logo is decent however if you can create a better logo feel free to do so. Logo can be minimal and should be shared here before creating PR for approval.

    good first issue logo hacktoberfest2021 hacktoberfest 
    opened by souvikinator 1
  • Add OS check before using any command

    Add OS check before using any command

    As of now Synko only supports linux and darwin(macos) (windows is work in progress). Synko does not perform any OS checks.

    Add OS check before any command's logic is executed. If OS is not Linux or Darwin then exit with appropriate message

    bug good first issue hacktoberfest2021 hacktoberfest 
    opened by souvikinator 0
  • add -a option in remove command

    add -a option in remove command

    synko remove [configname] which shows select paths menu and after user selection (among the listed paths in the menu) removes selected paths.

    Add -a/--all option. On using -a/--all option along with remove command the user will not be shown the select paths menu and all the paths will be removed.

    Usage: synko remove --all or synko remove -a

    feel free to ask any questions.

    enhancement good first issue hacktoberfest2021 hacktoberfest 
    opened by souvikinator 0
  • Allow users to update storage path in info command (-p/--storage-path)

    Allow users to update storage path in info command (-p/--storage-path)

    snyko info shows the device id , device os , and the default storage path where the configs/settings backup will be stored.

    Add a option -p/--storage-path which takes path as input and updates the number storage path.

    Usage example:

    synko info -p /path/to/storage

    Note:

    • input path can be symlink as well so make sure to get the realpath of the provided path.
    • make sure that the path is a directory
    • make sure to that the path is not inside the synko app data directory.
    enhancement 
    opened by souvikinator 0
  • Allow users to list only paths of provided config name in index command

    Allow users to list only paths of provided config name in index command

    synker index lists all the paths under all the configuration name.

    Allow users to take provide configname as argument like so synko index [configname] and only paths under configname will be displayed and if configname is not provided then display all

    you can start by modifying display_track_data(self) by adding an extra argument like so: display_track_data(self,configname)

    Note:

    • check whether configname exists or not in trackdata

    Feel free to ask any questions

    enhancement good first issue hacktoberfest2021 hacktoberfest 
    opened by souvikinator 0
  • Colorize/Beautify the help menu

    Colorize/Beautify the help menu

    synko --help gives a plain output with no style. Add some style to the help message.

    • The cli banner (SYNKO_BANNER) can be bold
    • Commands,Options can be bold in USAGE_DETAILS
    • All the links can be cyan in USAGE_DETAILS

    Note: As of now we do not support Windows, still make sure to use package which also works on windows

    Any other suggestions are welcomed

    Feel free to ask questions

    enhancement good first issue hacktoberfest2021 hacktoberfest 
    opened by souvikinator 0
  • Add colored output

    Add colored output

    utils.py has error(), warn(), success(), info() functions gives uncolored output.

    Modify them to give colored output.

    • error: red and bold
    • warn: yellow and bold
    • success: green and bold
    • info: cyan and bold

    Note: As of now we do not support Windows, still make sure to use a package which also works on windows

    Any other suggestions are welcomed

    Feel free to ask questions

    enhancement good first issue hacktoberfest2021 hacktoberfest 
    opened by souvikinator 0
An ftp syncing python package that I use to sync pokemon saves between my hacked 3ds running ftpd and my server

Sync file pairs over ftp and apply patches to them. Useful for using ftpd to transfer ROM save files to and from your DS if you also play on an emulator. Setup a cron job to check for your DS's ftp server periodically to setup automatic syncing. Untested on windows. It may just work out of the box, unsure though.

null 17 Jan 4, 2023
Multiple-requests-poster - A tool to send multiple requests to a particular website written in Python

Multiple-requests-poster - A tool to send multiple requests to a particular website written in Python

RLX 2 Feb 14, 2022
(A)sync client for sms.ru with pydantic responses

?? aioSMSru Send SMS Check SMS status Get SMS cost Get balance Get limit Get free limit Get my senders Check login/password Add to stoplist Remove fro

Eugene Mayer 4 Jul 3, 2022
Very simple FTP client, sync folder to FTP server, use python, opensource

ftp-sync-python Opensource, A way to safe your data, avoid lost data by Virus, Randsomware Some functions: Upload a folder automatically to FTP server

null 4 Sep 13, 2022
Easy-to-use sync library for handy proxy parse

Proxy Parser About Synchronous library, for convenient and fast parsing of proxies from different sources. Uses Scrapy as a parser. At the moment the

Michael Mironov 2 Nov 22, 2022
An HTML interface for finetuning the sync map output from aeneas

finetuneas 3.0 finetuneas is a simple HTML interface for fine tuning sync maps output by aeneas Version 3.0 Easier adjusting time: following cells wil

Firat Özdemir 50 Mar 12, 2022
A simple, configurable application and set of services to monitor multiple raspberry pi's on a network.

rpi-info-monitor A simple, configurable application and set of services to monitor multiple raspberry pi's on a network. It can be used in a terminal

Kevin Kirchhoff 11 May 22, 2022
WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

Rivane Rasetiansyah 3 Apr 1, 2022
A server and client for passing data between computercraft computers/turtles across dimensions or even servers.

ccserver A server and client for passing data between computercraft computers/turtles across dimensions or even servers. pastebin get zUnE5N0v client

null 1 Jan 22, 2022
Automated network configuration backups using Github actions and git-scraping

Network Config Scraper This repository demonstrates the use of Github Actions and git-scraping to build an automated backup solution for network confi

WWT 19 Dec 14, 2022
Script and library to wait for a DNS authority server to get its configuration.

DNSWait dnswait is a small script to wait for the "propagation" of a namserver configuration. Installing It's as easy as: python -m pip install dnswai

Julien Palard 14 Jan 17, 2022
IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi.

IoT Owl IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi. Versions Heavy with mask detection withou

Ret2Me 6 Jun 6, 2022
A repository to spoof ARP table of any devices and successfully establish Man in the Middle(MITM) attack using Python3 in Linux

arp_spoofer A repository to spoof ARP table of any devices and successfully establish Man in the Middle(MITM) attack using Python3 in Linux Usage: git

Surya Das N 1 Oct 30, 2021
mitm6 is a pentesting tool that exploits the default configuration of Windows to take over the default DNS server.

mitm6 is a pentesting tool that exploits the default configuration of Windows to take over the default DNS server.

Fox-IT 1.3k Jan 5, 2023
Share clipboards between two devices in a network

Shared Clipboard I felt the need for sharing clipboard texts between virtual machines but I didn't find any reliable solutions for this (I use HyperV)

Teja Swaroop 9 Jun 10, 2022
Typhon is a macOS specific payload aimed at targetting Jamf managed devices.

Typhon is a macOS specific payload aimed at targetting Jamf managed devices. This payload can be used to manipulate macOS devices into communicating with a Mythic instance, which acts as a Jamf server with the ability to execute commands.

Mythic Agents 29 Dec 23, 2022
Home Assistant integration for MyEnergi devices

myenergi for Home Assistant myenergi custom component for Home Assistant This is a very early release, will add more documentations soon! This compone

Johan Isacsson 70 Dec 18, 2022
Mini SCADA. Poll modbus devices by TCP/IP network.

Plans Add saving and loading devices and channels with files or db or someone else. Multitasking system for poll all devices Automatic optimization po

Efi_fi 1 Oct 25, 2021
An API for controlling Wi-Fi connections on Balena devices.

Description An API for controlling Wi-Fi connections on Balena devices. It does not contain an interface, instead it provides API endpoints to send re

null 8 Dec 25, 2022