gonion

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2021 License: MIT Imports: 7 Imported by: 0

README

gonion

Lightweight Golang wrapper for querying Tor network data using the Onionoo service.

GoDoc Go Report Card

package main

import (
        "github.com/R4yGM/gonion"
        "net/http"
        "time"
        "fmt"
)

func main(){

        var netClient = &http.Client{
                Timeout: time.Second * 10,
        }

        g := gonion.Client{HttpClient: netClient}
        res := g.Details(gonion.Params{Lookup : "37CB803A9B74A7B7693040ED94E4AA9E66838021", Running: true, RecommendedVersion: true})
        fmt.Println(res)
}

Installation

The Golang wrapper has been tested with Golang 1.6+. It may worker with older versions although it has not been tested.

To use it, just include it to your import and run go get:

go get github.com/R4yGM/gonion
import (
	...
	"github.com/R4yGM/gonion"
)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	UserAgent  string
	HttpClient *http.Client
}

Client : initialize the client for gonion

func (*Client) Bandwidth

func (c *Client) Bandwidth(args Params) SBandwidth

Bandwidth : returns results from https://onionoo.torproject.org/bandwidth

func (*Client) Clients

func (c *Client) Clients(args Params) SClients

Clients : returns results from https://onionoo.torproject.org/bandwidth

func (*Client) Details

func (c *Client) Details(args Params) SDetails

Details : returns results from https://onionoo.torproject.org/details

func (*Client) SendRequest

func (c *Client) SendRequest(path string, args Params) (*http.Request, error)

SendRequest : creates the request ready to be sent with the client, parameters and path

func (*Client) Summary

func (c *Client) Summary(args Params) SSummary

Summary : returns results from https://onionoo.torproject.org/summary

func (*Client) Uptime

func (c *Client) Uptime(args Params) SUptime

Uptime : returns results from https://onionoo.torproject.org/bandwidth

func (*Client) Weights

func (c *Client) Weights(args Params) SWeights

Weights : returns results from https://onionoo.torproject.org/bandwidth

type Params

type Params struct {
	Type string

	Running bool

	Search string

	Lookup string

	Country string

	As string

	AsName string

	Flag string

	FirstSeenDays string

	LastSeenDays string

	Contact string

	Family string

	Version string

	Os string

	HostName string

	RecommendedVersion bool

	Fields []string

	Order []string

	Offset int

	Limit int
}

Params : see https://metrics.torproject.org/onionoo.html#parameters for further info

func (Params) QueryParams

func (args Params) QueryParams() (url.Values, error)

QueryParams : parse parameters and creates a url

type SBandwidth

type SBandwidth struct {
	Version         string `json:"version"`
	BuildRevision   string `json:"build_revision"`
	RelaysPublished string `json:"relays_published"`
	Relays          []struct {
		Fingerprint  string `json:"fingerprint"`
		WriteHistory struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"write_history,omitempty"`
		ReadHistory struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"read_history,omitempty"`
	} `json:"relays"`
	RelaysTruncated  int           `json:"relays_truncated"`
	BridgesPublished string        `json:"bridges_published"`
	Bridges          []interface{} `json:"bridges"`
	BridgesTruncated int           `json:"bridges_truncated"`
}

SBandwidth : for more info https://metrics.torproject.org/onionoo.html#bandwidth

type SClients

type SClients struct {
	Version          string        `json:"version"`
	BuildRevision    string        `json:"build_revision"`
	RelaysPublished  string        `json:"relays_published"`
	Relays           []interface{} `json:"relays"`
	BridgesPublished string        `json:"bridges_published"`
	Bridges          []struct {
		Fingerprint    string `json:"fingerprint"`
		AverageClients struct {
			OneMonth struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"average_clients"`
	} `json:"bridges"`
	BridgesTruncated int `json:"bridges_truncated"`
}

SClients : for more info https://metrics.torproject.org/onionoo.html#clients

type SDetails

type SDetails struct {
	Version         string `json:"version"`
	BuildRevision   string `json:"build_revision"`
	RelaysPublished string `json:"relays_published"`
	Relays          []struct {
		Nickname                 string   `json:"nickname"`
		Fingerprint              string   `json:"fingerprint"`
		OrAddresses              []string `json:"or_addresses"`
		LastSeen                 string   `json:"last_seen"`
		LastChangedAddressOrPort string   `json:"last_changed_address_or_port"`
		FirstSeen                string   `json:"first_seen"`
		Running                  bool     `json:"running"`
		Flags                    []string `json:"flags"`
		Country                  string   `json:"country,omitempty"`
		CountryName              string   `json:"country_name,omitempty"`
		As                       string   `json:"as,omitempty"`
		ConsensusWeight          int      `json:"consensus_weight"`
		LastRestarted            string   `json:"last_restarted"`
		BandwidthRate            int      `json:"bandwidth_rate"`
		BandwidthBurst           int      `json:"bandwidth_burst"`
		ObservedBandwidth        int      `json:"observed_bandwidth"`
		AdvertisedBandwidth      int      `json:"advertised_bandwidth"`
		ExitPolicy               []string `json:"exit_policy"`
		ExitPolicySummary        struct {
			Reject []string `json:"reject"`
		} `json:"exit_policy_summary,omitempty"`
		Contact                 string   `json:"contact,omitempty"`
		Platform                string   `json:"platform"`
		Version                 string   `json:"version"`
		VersionStatus           string   `json:"version_status"`
		EffectiveFamily         []string `json:"effective_family"`
		ConsensusWeightFraction float64  `json:"consensus_weight_fraction,omitempty"`
		GuardProbability        float64  `json:"guard_probability,omitempty"`
		MiddleProbability       float64  `json:"middle_probability,omitempty"`
		ExitProbability         float64  `json:"exit_probability,omitempty"`
		RecommendedVersion      bool     `json:"recommended_version"`
		Measured                bool     `json:"measured"`
		ExitAddresses           []string `json:"exit_addresses,omitempty"`
		DirAddress              string   `json:"dir_address,omitempty"`
		VerifiedHostNames       []string `json:"verified_host_names,omitempty"`
	} `json:"relays"`
	BridgesPublished string `json:"bridges_published"`
	Bridges          []struct {
		Nickname                 string   `json:"nickname"`
		HashedFingerprint        string   `json:"hashed_fingerprint"`
		OrAddresses              []string `json:"or_addresses"`
		LastSeen                 string   `json:"last_seen"`
		FirstSeen                string   `json:"first_seen"`
		Running                  bool     `json:"running"`
		Flags                    []string `json:"flags"`
		LastRestarted            string   `json:"last_restarted"`
		AdvertisedBandwidth      int      `json:"advertised_bandwidth"`
		Platform                 string   `json:"platform"`
		Version                  string   `json:"version"`
		VersionStatus            string   `json:"version_status"`
		RecommendedVersion       bool     `json:"recommended_version"`
		BridgedbDistributor      string   `json:"bridgedb_distributor,omitempty"`
		Transports               []string `json:"transports,omitempty"`
		OverloadGeneralTimestamp int64    `json:"overload_general_timestamp,omitempty"`
	} `json:"bridges"`
}

SDetails : for more info https://metrics.torproject.org/onionoo.html#details

type SSummary

type SSummary struct {
	Version         string `json:"version"`
	BuildRevision   string `json:"build_revision"`
	RelaysPublished string `json:"relays_published"`
	Relays          []struct {
		N string   `json:"n"`
		F string   `json:"f"`
		A []string `json:"a"`
		R bool     `json:"r"`
	} `json:"relays"`
	BridgesPublished string `json:"bridges_published"`
	Bridges          []struct {
		N string `json:"n"`
		H string `json:"h"`
		R bool   `json:"r"`
	} `json:"bridges"`
}

SSummary : for more info https://metrics.torproject.org/onionoo.html#summary

type SUptime

type SUptime struct {
	Version         string `json:"version"`
	BuildRevision   string `json:"build_revision"`
	RelaysPublished string `json:"relays_published"`
	Relays          []struct {
		Fingerprint string `json:"fingerprint"`
		Uptime      struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"5_years"`
		} `json:"uptime,omitempty"`
		Flags struct {
			Exit struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Exit"`
			Fast struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Fast"`
			Guard struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Guard"`
			HSDir struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"HSDir"`
			Running struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Running"`
			Stable struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Stable"`
			StaleDesc struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"StaleDesc"`
			V2Dir struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"V2Dir"`
			Valid struct {
				OneMonth struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_month"`
				SixMonths struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"6_months"`
				OneYear struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"1_year"`
				FiveYears struct {
					First    string  `json:"first"`
					Last     string  `json:"last"`
					Interval int     `json:"interval"`
					Factor   float64 `json:"factor"`
					Count    int     `json:"count"`
					Values   []int   `json:"values"`
				} `json:"5_years"`
			} `json:"Valid"`
		} `json:"flags,omitempty"`
	} `json:"relays"`
	RelaysTruncated  int           `json:"relays_truncated"`
	BridgesPublished string        `json:"bridges_published"`
	Bridges          []interface{} `json:"bridges"`
	BridgesTruncated int           `json:"bridges_truncated"`
}

SUptime : for more info https://metrics.torproject.org/onionoo.html#uptime

type SWeights

type SWeights struct {
	Version         string `json:"version"`
	BuildRevision   string `json:"build_revision"`
	RelaysPublished string `json:"relays_published"`
	Relays          []struct {
		Fingerprint             string `json:"fingerprint"`
		ConsensusWeightFraction struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"consensus_weight_fraction,omitempty"`
		GuardProbability struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"guard_probability,omitempty"`
		MiddleProbability struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"middle_probability,omitempty"`
		ExitProbability struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"exit_probability,omitempty"`
		ConsensusWeight struct {
			OneMonth struct {
				First    string  `json:"first"`
				Last     string  `json:"last"`
				Interval int     `json:"interval"`
				Factor   float64 `json:"factor"`
				Count    int     `json:"count"`
				Values   []int   `json:"values"`
			} `json:"1_month"`
			SixMonths struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"6_months"`
			OneYear struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"1_year"`
			FiveYears struct {
				First    string        `json:"first"`
				Last     string        `json:"last"`
				Interval int           `json:"interval"`
				Factor   float64       `json:"factor"`
				Count    int           `json:"count"`
				Values   []interface{} `json:"values"`
			} `json:"5_years"`
		} `json:"consensus_weight,omitempty"`
	} `json:"relays"`
	RelaysTruncated  int           `json:"relays_truncated"`
	BridgesPublished string        `json:"bridges_published"`
	Bridges          []interface{} `json:"bridges"`
}

SWeights : for more info https://metrics.torproject.org/onionoo.html#weights

Jump to

Keyboard shortcuts

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