GithubHelp home page GithubHelp logo

p2pfileexchange's Introduction

Build Status

About:

Distributed absolutely decentralised file storage for workgroups with git-like versioning.

How to run:

python3 Main.py -h

Tests:

cd P2PFileExchange

python3 -m unittest discover --start-directory=Tests --pattern=*.py

CPython interpreter 3.4 required

Commands:

Connection control:

Command Description
p2p connect_to %ip:port% Connect to peer.
p2p show_peers Show connected peers.

Управление личными данными:

Command Description
auth load_keys %keystorage file% Auth.
auth register %username% Register new user.
auth save_keys %keystorage file% Save keystorage file.
auth logout Log out.
auth show_last_connection_time %username% Get last user online time by username.

Workgroup control:

Command Description
auth add_user_to_group %group name% %username% Add user to group. Group would be created if not exists.
auth remove_user_from_group %group name% %username% Remove user from group.
auth show_users_in_group %group admin username% %group name% Show usernames for all users in group.
auth show_users_groups %group admin username% Show all user's groups.
auth work_in_group %group admin username% %group name% %local dir for group's files% Enabale file syncing.
auth stop_working_in_group %group admin username% %group name% Disable file syncing.
auth show_groups_i_am_working_in List enabled groups.

Working with files:

Command Description
files work_with %group admin username% %group name% Enable group's files editing mode.
files block_files %filename filename filename ...% Disable syncing for certain files.
files release_blocked_files Enable syncing for all files.
files leave_working_group Disable group's files editing mode.

p2pfileexchange's People

Contributors

anlenin avatar dimchar avatar matvey-kuk avatar rmirk avatar vikashhh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

p2pfileexchange's Issues

Директория с дельтами

1)Имя системной папки хранится в переменной.
2)Системная папка является поддиректорией рабочей папки с версионируемыми файлами.

База для тестирования

Должна автоматически разворачивать много копий приложения, чтобы между ними устанавливалось p2p соединение

Дельты в обе стороны

Учесть, что дельты могут приходить от других участников -> на них нужно откатываться.

Интерфейс, выводящий статистику

Разделен на 2 части- внизу аналог консоли- окошко для ввода чего либо и вывода ответов, вверху такое же текстовое окошко, которое обновляется раз в секунду и выводит весь текст, который наскребло в модулях. Нижнее для команд юзера и их обработки, верхнее для вывода всякой служебной инфы в реал тайме.

Пока не будем делать обработчик команд(нижнюю половину), сделаем только верхнюю.

В классе твоего юи(интерфейса) должна быть функция "Регистрировать поставщика данных". Эта функция получает в себя объект, у которого есть метод "поставить данные интерфейсу".

Как тестовый модуль можешь мучить п2п, сам допиши в него "поставщик данных".

Раз в секунду интерфейс опрашивает все объекты, которые получил в упомянутую выше функцию и выводит их данные кучкой на монитор.

Вопросы давай здесь, чтобы все было в одном месте.

Прототип интерфейса

Консольный?
Tkinter?
Qt?
Вывести на него хоть какие-то данные из Networking, сделать ключ "запускать без интерфейса".

Движок коммитов для файлов.

Высчитывание дельт между файлами, хранение этих дельт, возможность откатиться на любую версию файла и обратно, возможность подписывать дельты текстом. Аналог гитового коммита в идеальном случае.

База типа ключ- значение

Предназначена для хранения юзерских данных. Предположительно так: nickname-public key. Должна распределяться по пользователям, сама решать конфликты одновременной записи, версионироваться итд...

Наброски базы юзеров.

Создать модуль, подсоединить к NetworkingModule и сделать так, чтобы он кидал из одной своей копии в другую сообщения. Как пример- P2pModule. Придумать как будет работать база из #6

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.