isolated

package
v0.0.0-...-1643519 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package isolated defines the isolated common code shared by the client and server.

Index

Constants

View Source
const Algorithm = "sha-1"

Algorithm is the value for Algo.

View Source
const IsolatedFormatVersion = "1.4"

IsolatedFormatVersion is version of *.isolated file format. Put into JSON.

Variables

This section is empty.

Functions

func GetCompressor

func GetCompressor(out io.Writer) (io.WriteCloser, error)

GetCompressor returns a fresh instance of the compression algorithm.

It must be closed after use.

It is currently hardcoded to RFC 1950 (zlib).

func GetDecompressor

func GetDecompressor(in io.Reader) (io.ReadCloser, error)

GetDecompressor returns a fresh instance of the decompression algorithm.

It must be closed after use.

It is currently hardcoded to RFC 1950 (zlib).

func GetHash

func GetHash() hash.Hash

GetHash returns a fresh instance of the hashing algorithm to be used to calculate the HexDigest.

It is currently hardcoded to sha-1.

func HashFile

func HashFile(path string) (isolateservice.HandlersEndpointsV1Digest, error)

HashFile hashes a file and returns a HandlersEndpointsV1Digest out of it.

Types

type File

type File struct {
	Digest HexDigest `json:"h,omitempty"`
	Link   *string   `json:"l,omitempty"`
	Mode   *int      `json:"m,omitempty"`
	Size   *int64    `json:"s,omitempty"`
	Type   FileType  `json:"t,omitempty"`
}

File describes a single file referenced by content in a .isolated file.

For regular files, the Digest, Mode, and Size fields should be set, and the Type field should be set for non-basic files. For symbolic links, only the Link field should be set.

func BasicFile

func BasicFile(d HexDigest, mode int, size int64) File

BasicFile returns a File populated for a basic file.

func SymLink(link string) File

SymLink returns a File populated for a symbolic link.

func TarFile

func TarFile(d HexDigest, mode int, size int64) File

TarFile returns a file populated for a tar archive file.

type FileType

type FileType string

FileType describes the type of file being isolated.

const (
	// Basic represents normal files. It is the default type.
	Basic FileType = "basic"

	// ArArchive represents an ar archive containing a large number of small files.
	ArArchive FileType = "ar"

	// TarArchive represents a tar archive containing a large number of small files.
	TarArchive FileType = "tar"
)

type HexDigest

type HexDigest string

HexDigest is the hash of a file that is hex-encoded. Only lower case letters are accepted.

func Hash

func Hash(src io.Reader) (HexDigest, error)

Hash hashes a reader and returns a HexDigest from it.

func HashBytes

func HashBytes(content []byte) HexDigest

HashBytes hashes content and returns a HexDigest from it.

func Sum

func Sum(h hash.Hash) HexDigest

Sum is a shortcut to get a HexDigest from a hash.Hash.

func (HexDigest) Validate

func (d HexDigest) Validate() bool

Validate returns true if the hash is valid.

type HexDigests

type HexDigests []HexDigest

HexDigests is a slice of HexDigest that implements sort.Interface.

func (HexDigests) Len

func (h HexDigests) Len() int

func (HexDigests) Less

func (h HexDigests) Less(i, j int) bool

func (HexDigests) Swap

func (h HexDigests) Swap(i, j int)

type Isolated

type Isolated struct {
	Algo        string          `json:"algo"` // Must be "sha-1"
	Command     []string        `json:"command,omitempty"`
	Files       map[string]File `json:"files,omitempty"`
	Includes    HexDigests      `json:"includes,omitempty"`
	ReadOnly    *ReadOnlyValue  `json:"read_only,omitempty"`
	RelativeCwd string          `json:"relative_cwd,omitempty"`
	Version     string          `json:"version"`
}

Isolated is the data from a JSON serialized .isolated file.

func New

func New() *Isolated

New returns a new Isolated with the default Algo and Version.

type ReadOnlyValue

type ReadOnlyValue int

ReadOnlyValue defines permissions on isolated files.

const (
	// Writeable means that both files and directories are writeable. This should
	// not be used.
	Writeable ReadOnlyValue = 0
	// FilesReadOnly means that files are read only but directories are
	// writeable. This permits the process executed to create temporary files in
	// the current directory. This is the recommended value and this is the
	// default value.
	FilesReadOnly ReadOnlyValue = 1
	// DirsReadOnly means that both files and directories are read-only. This
	// enforces strict no-junk policy that the process cannot create files in the
	// temporary mapped directory.
	DirsReadOnly ReadOnlyValue = 2
)

Jump to

Keyboard shortcuts

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