plan-go

module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2021 License: GPL-3.0

README

PLAN

         P.rivacy
         L.ogistics
         A.ccessibility
P  L  A  N.etworks

PLAN is a free and open platform for groups to securely communicate, collaborate, and coordinate projects and activities.

About

This repo contains PLAN's backend infrastructure that ultimately hosts plan-client-unity instances on client-facing devices. Since PLAN uses open standards, protocols, and data structures, other implementations may someday also exist, so plan-go is offered as the reference implementation.

The PLAN Design Docs lay out PLAN's architecture in detail.

Team Lead Drew O'Meara
Design & Engineering Docs https://github.com/plan-systems/design-docs
PLAN Website http://plan-systems.org
License GPL-v3

Developer Setup

This library uses protobuf definitions found in the plan-protobufs repo. The *.pb.go source code files generated from those protobuf definitions has been vendored into this repository at the appropriate subpackage location. This means that if you are consuming this library for use in another application, you can simply:

go get github.com/plan-systems/plan-go

If you are contributing new features to plan-go, you may end up needing to update the generated *.pb.go source. To do that, you'll need to do the following:

  1. Set up Gprc.Tools:

    1. Download the latest Grpc.Tools nuget package

      curl -Lso "grpc.tools.1.22.0.nupkg" \
          "https://www.nuget.org/api/v2/package/Grpc.Tools/1.22.0"
      
    2. Unzip the nuget pkg zip file using unzip.

      Don't use macOS's default unarchiver since it does not restore .nupkg filenames properly. Instead:

      unzip grpc.tools.1.22.0.nupkg -d Grpc.Tools
      
    3. Copy the binary appropriate for your platform to somewhere on your $PATH and give it executable permissions:

      cp ./Grpc.Tools/tools/macosx_x64/protoc  /usr/local/bin
      cp ./Grpc.Tools/tools/linux_x64/protoc   /usr/local/bin
      cp ./Grpc.Tools/tools/windows_x64/protoc /usr/local/bin
      
      chmod +x /usr/local/bin/protoc
      
  2. Ensure your $PATH contains your $GOPATH's bin directory:

    # if you have GOPATH set:
    PATH="${PATH}:${GOPATH}/bin"
    
    # if you don't have GOPATH set:
    PATH="${PATH}:~/go/bin"
    
  3. Install gogo protobufs:

    go get -u github.com/gogo/protobuf/protoc-gen-gofast

  4. Install gRPC:

    go get -u google.golang.org/grpc

  5. Invoke the build scripts, giving it the path to the protobufs files and this repo. Then commit the changes:

    ./build-protobufs.sh --protos ../plan-protobufs/pkg --dest .
    git add .
    git commit -m "updated protobufs from v1.2.3"
    
  6. Pick up your lambo.

Directories

Path Synopsis
Package ctx provides project-agnostic utility code for Go projects
Package ctx provides project-agnostic utility code for Go projects
ski
Package ski (Secure Key Interface) contains PLAN's crypto abstractions and pluggable interfaces Package ski (Secure Key Interface) contains PLAN's crypto abstractions and pluggable interfaces
Package ski (Secure Key Interface) contains PLAN's crypto abstractions and pluggable interfaces Package ski (Secure Key Interface) contains PLAN's crypto abstractions and pluggable interfaces
CryptoKits/ed25519
Package ed25519 uses the Ed25519 to implement sig-related parts of ski.CryptoKit.
Package ed25519 uses the Ed25519 to implement sig-related parts of ski.CryptoKit.
CryptoKits/nacl
Package nacl uses (libSodium/naclKit) to implement ski.CryptoKit
Package nacl uses (libSodium/naclKit) to implement ski.CryptoKit
Providers/hive
Package hive implements ski.EnclaveSession for keys stored on the local file system (via encrypted file)
Package hive implements ski.EnclaveSession for keys stored on the local file system (via encrypted file)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL