This repository has been archived by the owner on Aug 26, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Hexawolf
committed
Oct 6, 2018
1 parent
3be3554
commit 54e73d1
Showing
4 changed files
with
71 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
MIT License | ||
Copyright (c) 2018 Hexawolf | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
this software and associated documentation files (the "Software"), to deal in | ||
the Software without restriction, including without limitation the rights to | ||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | ||
of the Software, and to permit persons to whom the Software is furnished to do | ||
so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,47 @@ | ||
"# SSProto" | ||
# SSProto | ||
|
||
SSProto is a fairly simple but flexible and secure TCP protocol for deploying | ||
game client updates. Initially, it was developed as a part of Hexamine project | ||
(a Minecraft server) but turns out to be useful outside of Minecraft | ||
environment. You may read about it more on | ||
[Hexawolf's blog](https://hexawolf.me/blog/ssproto/) | ||
|
||
## What? | ||
|
||
This applications connects to a server (ss-server) that implements SSProto, | ||
"indexes" (hashes) files in current directory and sends list of files and their | ||
hashes to the server. After doing so, it listens to "update packets" from the | ||
server. They contain files, their paths and signatures, that client need to | ||
download and save. | ||
|
||
Basically, this application tries to keep working directory in synchronization | ||
with server. For example, if some essential game files were modified on the | ||
server side, this client will download them from the server and game will be | ||
compatible with it's game server again. | ||
|
||
## Why? | ||
|
||
SSProto is a really simple, hand-made protocol that was made because of all the | ||
problems that appeared with deploying [Hexamine](https://hexawolf.me/hexamine) | ||
updates. Mainly, because people found installing updates (that were deployed | ||
almost every day those days) too painful or even faced problems due to improper | ||
update as a result of customized client setup. While ss-client is tuned | ||
specifically for Hexamine client, it is obvious that SSProto (as well as this | ||
program) may be tuned for more applications where it is essential to keep only | ||
specific server files in sync with clients. | ||
|
||
## Is it secure? | ||
|
||
All communications are secured by hardcoded TLS key. However, it is expected | ||
that received files may contain executable data. For this reason, files are | ||
also signed by ed448-decaf key, which is fast enough if you care about the | ||
speed. | ||
|
||
## Copyrights? | ||
|
||
Copyright © 2018 Hexawolf | ||
|
||
This software and most of it's code (except utils.go file) is available under | ||
MIT license. The utils.go is not licensed at all: you are hereby granted to do | ||
anything you want with the code there. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,4 @@ | ||
# ss-client | ||
|
||
ss-client is a SSProto client that performs filesystem update operations similarly to rsync. | ||
|
||
## What? | ||
|
||
This applications connects to a server (ss-server) that implements SSProto, "indexes" (hashes) files in current | ||
directory and sends list of files and their hashes to the server. After doing so, it listens to "update packets" | ||
from the server. They contain files, their paths and signatures, that client need to download and save. | ||
|
||
Basically, this application tries to keep working directory in synchronization with server. For example, if some | ||
essential game files were modified on the server side, this client will download them from the server and game will be | ||
compatible with it's game server again. | ||
|
||
## Why? | ||
|
||
SSProto is a really simple, hand-made protocol that was made because of all the problems that appeared with deploying | ||
[Hexamine](https://hexawolf.me/hexamine) updates. Mainly, because people found installing updates (that were deployed | ||
almost every day those days) too painful or even faced problems due to improper update as a result of customized client | ||
setup. While ss-client is tuned specifically for Hexamine client, it is obvious that SSProto (as well as this | ||
program) may be tuned for more applications where it is essential to keep only specific server files in sync with | ||
clients. | ||
|
||
## Is it secure? | ||
|
||
All communications are secured by hardcoded TLS key. However, it is expected that received files may contain executable | ||
data. For this reason, they are also signed by ed448-decaf key, which is fast enough if you care about the speed. | ||
|
||
## Copyrights? | ||
|
||
Copyright © 2018 Hexawolf | ||
|
||
This software and most of it's code (except utils.go file) is available under MIT license. The utils.go is not licensed | ||
at all: you are hereby granted to do anything you want with the code there. | ||
|
||
[Server code](https://github.com/Hexawolf/ss-server) | ||
ss-client is a SSProto client implementation for Hexamine server that performs | ||
filesystem update operations similarly to rsync. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,9 @@ | ||
# ss-server | ||
|
||
ss-server is a default implementation of SSProto update protocol used by Hexamine server. | ||
|
||
## How does it works? | ||
|
||
After setting up TCP connection, client sends it's generated identifier to the server. Server records it but does not | ||
saves to the logs, he sends ed448-signed identifier back to confirm his identity. After that, server and client agree on | ||
SSProto version: if it differs, client must close connection and suggest user to update the updater application. | ||
|
||
After doing all the setup work, server expects list of file paths and their hashes. After receiving, it generates a | ||
difference between server and client file indexes. Resulting difference is being sent file-by-file to the client, all | ||
files are signed with ed448-decaf key hard-coded to the client. | ||
ss-server is a default implementation of SSProto update protocol used by | ||
Hexamine server. | ||
|
||
## Copyright | ||
|
||
Copyright (C) 2018 Hexawolf. | ||
This work uses MIT license. | ||
|
||
[Client code](https://github.com/Hexawolf/ss-client) |