Coder Social home page Coder Social logo

ssproto's Introduction

SSProto

Build Status

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

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 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.

License

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.

ssproto's People

Contributors

foxcpp avatar rirush avatar

Stargazers

 avatar

Watchers

James Cloos avatar Vlad Yamkovyi avatar  avatar

Forkers

foxcpp fossabot

ssproto's Issues

Tests

Current code architecture isn't that bad actually, but still, it is really hard to test. Actual goal here is, obviously, to write some unit tests. But this will definitely lead to some refactoring.

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.