quic-s / quics Goto Github PK
View Code? Open in Web Editor NEWQUIC-S server-side program for sync file using QUIC protocol
License: MIT License
QUIC-S server-side program for sync file using QUIC protocol
License: MIT License
Is your feature request related to a problem? Please describe.
For example, such the quics-client, the execution of the protocol server should be in after the command 'start'.
Describe the solution you'd like
qis listen
(example) command.Is your feature request related to a problem? Please describe.
For unity and clean structure, more better to place the initialization part at app.go instead of main.go.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Only the client generates a hash for the current file and then the server receives it and uses it.
However, since this may become a problem later depending on the client, verification logic must be added to the server.
Additionally, this will allow you to check whether the file was interrupted during transfer.
Describe the solution you'd like
When the server receives a file, it calculates the hash and adds logic to verify that it is the same as the one sent by the client.
Additional context
Since the client and server must use the same hash algorithm, it would be a good idea to consider implementing a hash-related package in quics and importing and using it in quis-client.
Is your feature request related to a problem? Please describe.
Not a problem, just to implement the necessary part of protocol communication. Each repository is used to process not only the call from a service following a handler of the REST API server using http3 but also the request/response with protocol and client.
Describe the solution you'd like
The following checklist below is what I should implement for sending/receiving messages with quics-protocol. Anyway, I omitted detailed methods, and just wrote down a big skeleton checklist.
Is your feature request related to a problem? Please describe.
I had to reconfigure to unify the environment configuration of the team.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Currently, DI is implemented one by one through code.
Describe the solution you'd like
It would be good to improve this by using the google/wire library.
Additional context
https://github.com/google/wire
Is your feature request related to a problem? Please describe.
I missed the application of the file path (BeforePath, AfterPath).
So, some part of the file path is not necessary and not correct.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Our software's logic was changed for better-transmitting files between server and client.
So, the overall structures of the previous version should be changed.
Describe the solution you'd like
type struct
for all entities, and these entities would be used on the client.Is your feature request related to a problem? Please describe.
The qis CLI is being added in a recent commit, but there is no documentation explaining its usage.
Describe the solution you'd like
Add cli command usage instructions to README or a separate documentation page.
Is your feature request related to a problem? Please describe.
In message exchange using the current protocol, the struct defined in types is serialized to gob and transmitted.
However, this is dependent on the go language and has the inconvenience of having to define each method one by one.
Describe the solution you'd like
Uses google's protobuf. This allows for cleaner message type definitions and cross-language compatibility.
Additional context
It would be good to consider whether there are other good libraries besides protobuf.
Is your feature request related to a problem? Please describe.
Not related to any problems, only for implementation of new features.
Describe the solution you'd like
Using the file history stored in the server database, a quic-s client can request:
Is your feature request related to a problem? Please describe.
Not related to any problems, only for implementation of new features.
Describe the solution you'd like
The feature of sharing and downloading a file that a client wants to share with another(i.e., 3rd party).
Is your feature request related to a problem? Please describe.
Currently, the core package is heavily weighted toward sync.
This needs to be restructured appropriately to refine the code.
Describe the solution you'd like
Consider separating the modules appropriately, rather than simply lumping everything into one sync package.
Is your feature request related to a problem? Please describe.
According to the changed protocol, I should change the handler/service part of MUSTSYNC.
Describe the solution you'd like
for
)Additional context
types.RootDirectory
struct.Is your feature request related to a problem? Please describe.
The basic file synchronization process does not work yet. This requires implementing several behaviors required for sync.
Describe the solution you'd like
The functions are divided into please sync, must sync, conflict handling, and full scan.
Additional context
Current Progress
Is your feature request related to a problem? Please describe.
Currently, repository packages are grouped by core domain, with many redundant and inconsistent implementations.
This needs to be improved.
Describe the solution you'd like
I'm considering refactoring my repository based on data type.
This would avoid unnecessary duplicate implementations that could be reused by only injecting repository modules of the types used by the core domain.
It will also allow us to write more consistent code.
Additional context
This is still a work in progress, and we need to think about how to refactor it.
Is your feature request related to a problem? Please describe.
The current version is fairly stable. However, refactoring is necessary as the internal implementation is not clean. However, since the code changes during refactoring, bugs may occur and the program may become unstable.
Therefore, it would be a good idea to write test code based on the current behavior so that the behavior can be verified and then proceed with refactoring based on this.
This issue should be addressed before other refactoring-related issues.
Describe the solution you'd like
Add unit tests and integration tests. And we use github actions to automatically conduct continuous testing.
Additional context
Add any other context or screenshots about the feature request here.
We still need to think more about how to write the integration test logic.
Is your feature request related to a problem? Please describe.
User can change the server password from default to user-defined.
Describe the solution you'd like
qis set pasword <new-password>
commandIs your feature request related to a problem? Please describe.
According to the changed protocol, I should change the handler/service part of PLEASESYNC.
Describe the solution you'd like
Additional context
I should implement MUSTSYNC call and logic using goroutine because the MUSYSYNC is called in PLEASESYNC transaction. However, the MUSTSYNC call does not affect to PLEASESYNC transaction's commit.
Is your feature request related to a problem? Please describe.
Setup the server's IP address dynamically (not hard coding)
Describe the solution you'd like
qis start --ip <server-ip> --port <server-port>
commandIs your feature request related to a problem? Please describe.
For stable use of quics, it would be nice if it could be deployed as a Docker container by adding a Dockerfile.
Describe the solution you'd like
Add Dockerfile and deploy on docker hub.
Additionally, it would be good to improve environment variable settings for convenience when using Docker.
Is your feature request related to a problem? Please describe.
Not related to any problems, only for implementation of new features.
Describe the solution you'd like
Using the file history stored in badger database, the quic-s server can do actions like the below:
Overall the actions above are executed by commands implemented using Cobra library.
Is your feature request related to a problem? Please describe.
For synchronization with multiple clients, the lock is necessary for PLEASESYNC service.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Now, the log "quics: " is duplicated.
Because the log.Println()
is called anywhere, e.g., Handler or Service.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
When a new MustSync task is started, the previous task becomes an old file, so there is no need to proceed with the task any further. Rather, you should cancel the operation because there is a risk of file conflict.
Describe the solution you'd like
Implements the function to cancel previous operations using golang's context syntax.
Additional context
For this task, it will need to create a variable that stores the context of the previous task.
Is your feature request related to a problem? Please describe.
Currently, passwords are stored in plain text.
We can strengthen security by encrypting and storing it.
Describe the solution you'd like
Encryption is implemented using the go language standard crypto library.
An update is required along with the addition of the password setting function.
Is your feature request related to a problem? Please describe.
When a client wants to check the conflicted file contents (not metadata), this feature helps the client.
Describe the solution you'd like
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Reconfigure overall entities (struct type) for optimizing and implementing this system.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.