Skip to content

A simple video streaming services with authentication using redis

License

Notifications You must be signed in to change notification settings

alessiosavi/StreamingServer

Repository files navigation

StreamingServer

A simple video streaming services with authentication using redis

License Version Code size Repo size Issue open Issue closed Codacy Badge Go Report Card GoDoc

Introduction

This project is developed for have a plug-and-play video streaming server delegated to expose all the films downloaded from you main computer. With this tool, you can save all of you preterits films, song, videos into your PC. Then, you can view these media from anywhere using an internet connection.

The server have a basic authentication system. One endpoint is delegated to register a user, another one is delegated to manage the log-in phase.

Another endpoint is delegated to verify the account, so before that an account is able to stream your resources, you have to verify that the account is related to someone that you know

Requirements

  • GoGPUtils Enhance productivity and avoid to reinvent the wheel every time that you start a Go project
  • redis Type-safe Redis client for Golang
  • fasthttp Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
  • logrus Structured, pluggable logging for Go.
  • filename Hooks for logrus logging

Table Of Contents

Prerequisites

The software is coded in golang, into the go.mod file are saved the necessary dependencies. In order to download all the dependencies, you can type the following string from your terminal

go get -v -u all

Usage

In Details

tree
.
├── auth
│   └── authutils.go
├── conf                            // Folder that contains the configuration files 
│   ├── ssl                         // Folder that contains the certificate for the SSL connection
│   │   ├── localhost.crt
│   │   └── localhost.key
│   └── test.json                   // File that contain the configuration related to the tool
├── crypt                           
│   └── basiccrypt.go               // basiccrypt contain the necessary method to encrypt/decrypt data
├── database
│   └── redis
│       └── basicredis.go           // basicredis contain the necessary method to deal with save/load/update data from/to redis
├── datastructures
│   └── datastructures.go           // datastructures contain the necessary datastructure used among all the project
├── docker-compose.yml
├── Dockerfile
├── go.mod
├── go.sum
├── log
├── main.go
├── README.md
└── utils
    ├── common
    │   └── commonutils.go          // commonutils contain a bunch of method used as utils
    └── http
        └── httputils.go            // httputils contain the core method related to the HTTP functionalities

Example response

TODO

Contributing

  • Feel free to open issue in order to require new functionality;
  • Feel free to open issue if you discover a bug;
  • New idea/request/concept are very appreciated!;

Test

Test are work in progress, is a good first issue for contribute to the project

Versioning

We use SemVer for versioning.

Authors

Contributors

  • Alessio Savi

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments

Security, in this phase of the development, is not my first concern. Please, fill an issue if you find something that can be enhanced from a security POV