Coder Social home page Coder Social logo

rfap's Introduction

Reliable File Access Protocol

This project is in alpha stage, so expect radical changes to come.

This repository contains documentation, specifications, overviews, organizational information and general discussions about the protocol. See related projects for actual implementations.

Protocol specifications (in progress)

Related projects (in progress)

Contributing

Please see CONTRIBUTING.md for more information.

Why did we start this project?

FTP is too old.

NFS is unencrypted.

SMB is too complex.

WebDAV makes not much sense.

SSHFS is for nerds.

So what is the best way to share files?

rfap's People

Contributors

alexcoder04 avatar boettcherdasoriginal avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

oi2996814

rfap's Issues

Send commands from server to client

This is very likely never to be implemented: to achieve this, the client would have to be listening to the server all the time, so it couldn't send commands.

The only possible solution would be to open a second socket which would have to run in a separate thread that can communicate with the main thread, so the overall design would become much more complicated.

TUI app

A client with terminal user interface (e.g. curses-based). Maybe in Go, so it's even cross-platform

Server console

(Although it's a go-server problem, we can discuss it here)

What should we use for the console?
Stdin is not an option, because we don't have a window with the server running open all the time; moreover the server would print messages while you are typing your command, so it wouldn't really work.
A Unix domain socket would be much better, but it's not supported on Windows (does Windows have something like that?).
Another socket listening on localhost? Seems complicated to me.

FUSE module for Linux

FUSE allows to write filesystems for Linux in userspace. With PyFUSE, we could build a filesystem based on librfap

When exactly to send which metadata

Some metadata values are only sent if requested (elements number in directory), some only if info is called, some are sent always.
We should document this more clearly.

Optional compression

To save bandwidth, we can add optional compression for large text files. The compression would be turned on if both sides support it and the information about the compression standard would be sent inside the header

Splitting large files

If we send files bigger than 16MB, we would need to split them over multiple packets, so we need a specification and implementation of that feature

Air-Drop-like app

(idea for a new implementation)

This app would be able to act as a server as well as a client, but only on the local network (maybe even over Bluetooth?).

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.