Git Product home page Git Product logo

github-cloud-database's Introduction

Github Cloud Database

A Python Programs that uses Github Repositories as a Cloud Service to store Files

Requirements

Language Used = Python3
Modules/Packages used:

  • requests
  • json
  • os
  • pickle
  • base64
  • string
  • random
  • shutil
  • math
  • getpass
  • pathlib
  • datetime
  • optparse
  • colorama
  • multiprocessing
  • time
  • cryptography

Install the dependencies:

pip install -r requirements.txt

Setup

  • Make a dummy Github Account (Account that should not be used for any other purposes, because it may get very frustrating if you use your daily-use Github Account)
  • Go to Github Personal Access Token Generation and Generate a New Token with Repository Access set to All & Read and Write Access on Administration and Contents under Repositories Permissions

Repository Access
Administration Permissions
Content Permissions

Encryption Passwords

  • It uses AES-256 Symmetric Encryption Algorithm for Encrypting the files.
  • There are 4 Passwords for this encryption that it takes:
    • Public (For Public Files)
      • Before Compressing
      • After Compressing
    • Private (For Private Files)
      • Before Compressing
      • After Compressing
  • When it Compresses the File, .zip format is used. Therefore an option is provide to protect the zip file with password or not.
  • You can manually enter the passwords at the first time run of the program main.py, but it can be also Autogenerated. The Autogenerated Password Consists uppercase, lowercase and integers as characters and is 50 Characters long.
  • The Encryption and Password Protection is useless for current version, becuase it makes no sense to protect a file that is supposed to be Public and also have its passwords, keys and salts Publically available. And also Private Files, who's password are although stored in storage_config repository but are encrypted (as they're private files and can only be accessed by the Owner of the Account with Github API Token).
  • The Idea to introduce passwords is based on a future implementation of sharing files with specific users only, by using custom passwords instead of the passwords available in Publically Available Configuration Files.
  • We have the option to Encrypt the Files Before/Afterr Compressing or Both the time or no encryption.
  • Also same is for the zip files, option is present to store without password and with password.

Storage Configuration Files

  • The Storage Configuration Files are stored in a Public Repository Named storage_config
  • It contains 2 Pickle files:
    • private_config
    • public_config
  • The Private Config is Encrypted
  • They Contain the following Data:
    • Encryption and Zip Passwords
    • Salts for AES-256 Symmetric Encryptions
    • File Data
      • Associated Repositories
      • Encryption and Zip Passwords (again storing with keeping in the mind the future implementation of sharing files with specific users only, by using custom passwords instead of the passwords available in Publically Available Configuration Files)
      • Salts for AES-256 Symmetric Encryptions
      • File Size
      • Split Size (Used to remove error caused by Expansion of Data by Padding in AES-256 Encryption)

Note

  • This Only works for Linux based Operating Systems (as it uses Linux System Commands)
  • Only use a dummy Github Account for this, else everything will get messed up
  • The Downloaded Files will be saved to downloads folder.
  • Before running main.py make sure that .tmp and .repository folders are empty. You can empty them by running clean.sh

github-cloud-database's People

Contributors

gill-singh-a avatar

Stargazers

Chayan Kumawat avatar A Atulya Sundaram avatar

Watchers

 avatar

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.