eduvpn-common

module
v0.0.0-...-7351042 Latest Latest
Warning

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

Go to latest
Published: May 31, 2024 License: MIT

README

eduVPN shared library

This repository contains a Go library with functions that all eduVPN clients can use. The goal is to let eduVPN clients link against this library and gradually merge more common logic between eduVPN clients into this repository.

Cgo is used to build the Go library into a shared dynamic library. Wrappers were written using some FFI framework for each language used in eduVPN clients to easily interface with the library.

The only wrapper inside of this repository is Python, used for the Linux clients. Other clients define their own wrappers, see:

Documentation

The documentation for this library can be found at GitHub pages.

Contributing

Contributions are welcome. Helping with translations can be done on weblate: Translation status

License

MIT

Authors

This work is done by @stevenwdv and @jwijenbergh at the SURF and GÉANT organization.

Directories

Path Synopsis
Package client implements the public interface for creating eduVPN/Let's Connect! clients
Package client implements the public interface for creating eduVPN/Let's Connect! clients
cmd
cli
Package main implements an example CLI client
Package main implements an example CLI client
package main implements the main exported API to be used by other languages
package main implements the main exported API to be used by other languages
Package i18nerr implements errors with internationalization using gotext
Package i18nerr implements errors with internationalization using gotext
internal
api
Package api implements version 3 of the eduVPN api: https://docs.eduvpn.org/server/v3/api.html
Package api implements version 3 of the eduVPN api: https://docs.eduvpn.org/server/v3/api.html
api/endpoints
Package endpoints defines a wrapper around the various endpoints returned by an eduVPN server in well-known
Package endpoints defines a wrapper around the various endpoints returned by an eduVPN server in well-known
api/profiles
Package profiles defines a wrapper around the various profiles returned by the /info endpoint
Package profiles defines a wrapper around the various profiles returned by the /info endpoint
config
Package config implements functions for saving a struct to a file It then provides functions to later read it such that we can restore the same struct
Package config implements functions for saving a struct to a file It then provides functions to later read it such that we can restore the same struct
config/v1
Package v1 implements a minimum set of the v1 config to convert it to a v2 config In version 1 of the config we used the internal state as the config This was bad as now if we want to change some internal representation the config also changes This package can be removed when most people have migrated from v1 to v2
Package v1 implements a minimum set of the v1 config to convert it to a v2 config In version 1 of the config we used the internal state as the config This was bad as now if we want to change some internal representation the config also changes This package can be removed when most people have migrated from v1 to v2
config/v2
Package v2 implements version 2 of the state file
Package v2 implements version 2 of the state file
discovery
Package discovery implements the server discovery by contacting disco.eduvpn.org and returning the data as a Go structure
Package discovery implements the server discovery by contacting disco.eduvpn.org and returning the data as a Go structure
failover
Package failover implements the failover procedure by sending pings and checking if the VPN is up
Package failover implements the failover procedure by sending pings and checking if the VPN is up
fsm
Package fsm defines a finite state machine
Package fsm defines a finite state machine
http
Package http defines higher level helpers for the net/http package
Package http defines higher level helpers for the net/http package
log
Package log implements a basic level based logger
Package log implements a basic level based logger
server
Package server implements functions that have to deal with server interaction
Package server implements functions that have to deal with server interaction
test
Package test implements utilities for testing
Package test implements utilities for testing
util
Package util implements several utility functions that are used across the codebase
Package util implements several utility functions that are used across the codebase
verify
Package verify implement signature verification using minisign
Package verify implement signature verification using minisign
version
Package version defines a version string that is used for: - building - the user agent - tagging
Package version defines a version string that is used for: - building - the user agent - tagging
wireguard
Package wireguard implements a few helpers for the WireGuard protocol
Package wireguard implements a few helpers for the WireGuard protocol
wireguard/ini
Package ini implements an opinionated ini parser that only implements what we exactly need for WireGuard configs - key/values MUST live under a section - empty section names are NOT allowed - comments are indicated with a #
Package ini implements an opinionated ini parser that only implements what we exactly need for WireGuard configs - key/values MUST live under a section - empty section names are NOT allowed - comments are indicated with a #
types
cookie
Package cookie implements a specialized version of a context - It is cancellable - It has a channel associated with it to reply to state callbacks - It can be marshalled by having a cgo Handle attached to it
Package cookie implements a specialized version of a context - It is cancellable - It has a channel associated with it to reply to state callbacks - It can be marshalled by having a cgo Handle attached to it
discovery
Package discovery defines the public types that have to deal with discovery
Package discovery defines the public types that have to deal with discovery
error
Package err defines public error types that are returned to clients
Package err defines public error types that are returned to clients
protocol
Package protocol contains hte public type that have to do with VPN protocols
Package protocol contains hte public type that have to do with VPN protocols
server
Package server defines public types that have to deal with the VPN server
Package server defines public types that have to deal with the VPN server

Jump to

Keyboard shortcuts

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