<!-- Code generated by gomarkdoc. DO NOT EDIT -->

# p2p

```go
import "github.com/Akilan1999/p2p-rendering-computation/p2p"
```

## Index

- [func AddAuthorisationKey\(PublicKey string\) error](<#AddAuthorisationKey>)
- [func AddKeyToAuthorizedKeys\(path, newKey string\) error](<#AddKeyToAuthorizedKeys>)
- [func CurrentPublicIP\(\) \(string, error\)](<#CurrentPublicIP>)
- [func ForwardPort\(port int\) error](<#ForwardPort>)
- [func GenerateHashSHA256\(text string\) \[\]byte](<#GenerateHashSHA256>)
- [func GetAuthorizedKeysPath\(\) \(string, error\)](<#GetAuthorizedKeysPath>)
- [func GetCurrentIPV6\(\) \(string, error\)](<#GetCurrentIPV6>)
- [func Ip4or6\(s string\) string](<#Ip4or6>)
- [func LocalSpeedTestIpTable\(\) error](<#LocalSpeedTestIpTable>)
- [func PrettyPrint\(data interface\{\}\)](<#PrettyPrint>)
- [func PrintIpTable\(\) error](<#PrintIpTable>)
- [func ReadAuthorizedKeys\(path string\) \(map\[string\]bool, error\)](<#ReadAuthorizedKeys>)
- [func RemoveKeyFromAuthorizedKeys\(path, keyToRemove string\) error](<#RemoveKeyFromAuthorizedKeys>)
- [func UnForwardPort\(port int\) error](<#UnForwardPort>)
- [func ValidateHashSHA256\(text string, Hash \[\]byte\) bool](<#ValidateHashSHA256>)
- [func ViewNetworkInterface\(\) error](<#ViewNetworkInterface>)
- [type IP](<#IP>)
- [type IpAddress](<#IpAddress>)
  - [func \(s \*IpAddress\) DownloadSpeed\(\) error](<#IpAddress.DownloadSpeed>)
  - [func \(s \*IpAddress\) PingTest\(\) error](<#IpAddress.PingTest>)
  - [func \(s \*IpAddress\) UploadSpeed\(\) error](<#IpAddress.UploadSpeed>)
- [type IpAddresses](<#IpAddresses>)
  - [func ReadIpTable\(\) \(\*IpAddresses, error\)](<#ReadIpTable>)
  - [func \(table \*IpAddresses\) RemoveDuplicates\(\) error](<#IpAddresses.RemoveDuplicates>)
  - [func \(ip \*IpAddresses\) SpeedTest\(\) error](<#IpAddresses.SpeedTest>)
  - [func \(ip \*IpAddresses\) SpeedTestUpdatedIPTable\(\) error](<#IpAddresses.SpeedTestUpdatedIPTable>)
  - [func \(i \*IpAddresses\) WriteIpTable\(\) error](<#IpAddresses.WriteIpTable>)


<a name="AddAuthorisationKey"></a>
## func [AddAuthorisationKey](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/ssh_autorisation.go#L105>)

```go
func AddAuthorisationKey(PublicKey string) error
```

AddAuthorisationKey Adds public key provided to the authorization file so that nodes can SSH into the

<a name="AddKeyToAuthorizedKeys"></a>
## func [AddKeyToAuthorizedKeys](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/ssh_autorisation.go#L48>)

```go
func AddKeyToAuthorizedKeys(path, newKey string) error
```

AddKeyToAuthorizedKeys adds a new key to the authorized\_keys file if it doesn’t already exist

<a name="CurrentPublicIP"></a>
## func [CurrentPublicIP](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L180>)

```go
func CurrentPublicIP() (string, error)
```

CurrentPublicIP Get Current Public IP address

<a name="ForwardPort"></a>
## func [ForwardPort](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/upnp.go#L9>)

```go
func ForwardPort(port int) error
```

Port forwarding to the router

<a name="GenerateHashSHA256"></a>
## func [GenerateHashSHA256](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L277>)

```go
func GenerateHashSHA256(text string) []byte
```



<a name="GetAuthorizedKeysPath"></a>
## func [GetAuthorizedKeysPath](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/ssh_autorisation.go#L16>)

```go
func GetAuthorizedKeysPath() (string, error)
```

GetAuthorizedKeysPath returns the path to the authorized\_keys file

<a name="GetCurrentIPV6"></a>
## func [GetCurrentIPV6](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L200>)

```go
func GetCurrentIPV6() (string, error)
```

GetCurrentIPV6 gets the current IPV6 address based on the interface specified in the config file

<a name="Ip4or6"></a>
## func [Ip4or6](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L253>)

```go
func Ip4or6(s string) string
```

Ip4or6 Helper function to check if the IP address is IPV4 or IPV6 \(https://socketloop.com/tutorials/golang-check-if-ip-address-is-version-4-or-6\)

<a name="LocalSpeedTestIpTable"></a>
## func [LocalSpeedTestIpTable](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/speedtest.go#L122>)

```go
func LocalSpeedTestIpTable() error
```

LocalSpeedTestIpTable Runs speed test in iptables locally only

<a name="PrettyPrint"></a>
## func [PrettyPrint](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L266>)

```go
func PrettyPrint(data interface{})
```



<a name="PrintIpTable"></a>
## func [PrintIpTable](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L127>)

```go
func PrintIpTable() error
```

PrintIpTable Print Ip table data for Cli

<a name="ReadAuthorizedKeys"></a>
## func [ReadAuthorizedKeys](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/ssh_autorisation.go#L25>)

```go
func ReadAuthorizedKeys(path string) (map[string]bool, error)
```

ReadAuthorizedKeys reads and returns the current contents of the authorized\_keys file as a map

<a name="RemoveKeyFromAuthorizedKeys"></a>
## func [RemoveKeyFromAuthorizedKeys](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/ssh_autorisation.go#L72>)

```go
func RemoveKeyFromAuthorizedKeys(path, keyToRemove string) error
```



<a name="UnForwardPort"></a>
## func [UnForwardPort](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/upnp.go#L42>)

```go
func UnForwardPort(port int) error
```

UnForwardPort from router

<a name="ValidateHashSHA256"></a>
## func [ValidateHashSHA256](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L289>)

```go
func ValidateHashSHA256(text string, Hash []byte) bool
```

ValidateHashSHA256 CustomInformationKey the text and check if the text and the hash are the same, if they are then return true SHA256 is the current hashing algorthm used.

<a name="ViewNetworkInterface"></a>
## func [ViewNetworkInterface](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L227>)

```go
func ViewNetworkInterface() error
```

ViewNetworkInterface This function is created to view the network interfaces available

<a name="IP"></a>
## type [IP](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L41-L43>)



```go
type IP struct {
    Query string
}
```

<a name="IpAddress"></a>
## type [IpAddress](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L22-L39>)



```go
type IpAddress struct {
    Name                 string        `json:"Name"`
    MachineUsername      string        `json:"MachineUsername"`
    Ipv4                 string        `json:"IPV4"`
    Ipv6                 string        `json:"IPV6"`
    Latency              time.Duration `json:"Latency"`
    Download             float64       `json:"Download"`
    Upload               float64       `json:"Upload"`
    ServerPort           string        `json:"ServerPort"`
    BareMetalSSHPort     string        `json:"BareMetalSSHPort"`
    NAT                  string        `json:"NAT"`
    EscapeImplementation string        `json:"EscapeImplementation"`
    ProxyServer          string        `json:"ProxyServer"`
    UnSafeMode           bool          `json:"UnSafeMode"`
    PublicKey            string        `json:"PublicKey"`
    CustomInformation    string        `json:"CustomInformation"`
}
```

<a name="IpAddress.DownloadSpeed"></a>
### func \(\*IpAddress\) [DownloadSpeed](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/testingMetrics.go#L82>)

```go
func (s *IpAddress) DownloadSpeed() error
```

Download Speed

<a name="IpAddress.PingTest"></a>
### func \(\*IpAddress\) [PingTest](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/testingMetrics.go#L152>)

```go
func (s *IpAddress) PingTest() error
```

PingTest executes test to measure latency

<a name="IpAddress.UploadSpeed"></a>
### func \(\*IpAddress\) [UploadSpeed](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/testingMetrics.go#L97>)

```go
func (s *IpAddress) UploadSpeed() error
```



<a name="IpAddresses"></a>
## type [IpAddresses](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L18-L20>)



```go
type IpAddresses struct {
    IpAddress []IpAddress `json:"ip_address"`
}
```

<a name="ReadIpTable"></a>
### func [ReadIpTable](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L46>)

```go
func ReadIpTable() (*IpAddresses, error)
```

ReadIpTable Read data from Ip tables from json file

<a name="IpAddresses.RemoveDuplicates"></a>
### func \(\*IpAddresses\) [RemoveDuplicates](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L146>)

```go
func (table *IpAddresses) RemoveDuplicates() error
```

RemoveDuplicates This is a temporary fix current functions failing to remove Duplicate IP addresses from local IP table

<a name="IpAddresses.SpeedTest"></a>
### func \(\*IpAddresses\) [SpeedTest](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/speedtest.go#L8>)

```go
func (ip *IpAddresses) SpeedTest() error
```

SpeedTest Runs a speed test and does updates IP tables accordingly

<a name="IpAddresses.SpeedTestUpdatedIPTable"></a>
### func \(\*IpAddresses\) [SpeedTestUpdatedIPTable](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/speedtest.go#L56>)

```go
func (ip *IpAddresses) SpeedTestUpdatedIPTable() error
```

SpeedTestUpdatedIPTable Called when ip tables from httpclient/server is also passed on

<a name="IpAddresses.WriteIpTable"></a>
### func \(\*IpAddresses\) [WriteIpTable](<https://github.com/Akilan1999/p2p-rendering-computation/blob/master/p2p/iptable.go#L101>)

```go
func (i *IpAddresses) WriteIpTable() error
```

WriteIpTable Write to IP table json file

Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)
