diff --git a/Makefile b/Makefile
index 4cf8c32b..abc8a2e1 100644
--- a/Makefile
+++ b/Makefile
@@ -4,11 +4,9 @@ N=1
default: clean test
clean:
- make -C ./cmd/hls clean
- make -C ./cmd/hlm clean
- make -C ./cmd/hms clean
- make -C ./cmd/hmc clean
- make -C ./cmd/ubc clean
+ make -C ./cmd/hidden_lake/service clean
+ make -C ./cmd/hidden_lake/messenger clean
+ make -C ./cmd/hidden_lake/traffic clean
make -C ./examples/_cmd/anon_messenger clean
make -C ./examples/_cmd/echo_service clean
diff --git a/README.md b/README.md
index 87d434fb..5336988d 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,9 @@ The `go-peer` library contains a large number of functions necessary to ensure t
## TODO
1. Write or close commented tests as 'TODO'
-2. Update HMS's, HMC's package structure
-3. Try merge HLS with HMS and HLC with HMC
-4. Create UBC application
+2. Create UBC application
+3. Databases to ISettings
+4. Write tests for HLT
## Dependencies
@@ -36,11 +36,11 @@ The `go-peer` library contains a large number of functions necessary to ensure t
1. [Hidden Lake Service](#1-hidden-lake-service)
2. [Hidden Lake Messenger](#2-hidden-lake-messenger)
-3. [Another applications](#3-another-applications)
+3. [Hidden Lake Traffic](#3-hidden-lake-traffic)
## 1. Hidden Lake Service
-> [github.com/number571/go-peer/tree/master/cmd/hls](https://github.com/number571/go-peer/tree/master/cmd/hls "HLS")
+> [github.com/number571/go-peer/tree/master/cmd/hidden_lake/service](https://github.com/number571/go-peer/tree/master/cmd/hidden_lake/service "HLS")
@@ -159,7 +159,7 @@ Decode response
## 2. Hidden Lake Messenger
-> [github.com/number571/go-peer/tree/master/cmd/hlm](https://github.com/number571/go-peer/tree/master/cmd/hlm "HLM");
+> [github.com/number571/go-peer/tree/master/cmd/hidden_lake/messenger](https://github.com/number571/go-peer/tree/master/cmd/hidden_lake/messenger "HLM");
@@ -204,15 +204,11 @@ Next, you need to login by going to the Sign in page. Enter your `login=user` an
To see the success of sending and receiving messages, you need to do all the same operations, but with `localhost:7070` as `node2_hlm`. This node will be Alice.
-> More example images about HLM pages in the [github.com/number571/go-peer/cmd/hlm/examples/images](https://github.com/number571/go-peer/tree/master/cmd/hlm/examples/images "Path to HLM images")
+> More example images about HLM pages in the [github.com/number571/go-peer/cmd/hidden_lake/messenger/examples/images](https://github.com/number571/go-peer/tree/master/cmd/hlm/examples/images "Path to HLM images")
-## 3. Another applications
+## 3. Hidden Lake Traffic
-* Hidden Message Service: [github.com/number571/go-peer/tree/master/cmd/hms](https://github.com/number571/go-peer/tree/master/cmd/hms "HMS");
-* Hidden Message Client: [github.com/number571/go-peer/tree/master/cmd/hmc](https://github.com/number571/go-peer/tree/master/cmd/hmc "HMC");
-* Asymmetric Keys Generator: [github.com/number571/go-peer/tree/master/cmd/akg](https://github.com/number571/go-peer/tree/master/cmd/akg "AKG");
-* Cryptographic Data Storage: [github.com/number571/go-peer/tree/master/cmd/cds](https://github.com/number571/go-peer/tree/master/cmd/cds "CDS");
-* In developing... Union Block Chain: [github.com/number571/go-peer/tree/master/cmd/ubc](https://github.com/number571/go-peer/tree/master/cmd/ubc "UBC");
+TODO
### Deprecated applications
diff --git a/cmd/hlm/.gitignore b/cmd/hidden_lake/messenger/.gitignore
similarity index 100%
rename from cmd/hlm/.gitignore
rename to cmd/hidden_lake/messenger/.gitignore
diff --git a/cmd/hlm/Makefile b/cmd/hidden_lake/messenger/Makefile
similarity index 85%
rename from cmd/hlm/Makefile
rename to cmd/hidden_lake/messenger/Makefile
index e3e4b72c..38cb1f3d 100644
--- a/cmd/hlm/Makefile
+++ b/cmd/hidden_lake/messenger/Makefile
@@ -3,8 +3,8 @@ GC=go build
.PHONY: default build run test clean
default: build run
build:
- make build -C ../hls
- cp ../hls/hls prog_hls
+ make build -C ../service
+ cp ../service/hls prog_hls
$(GC) -o hlm ./cmd/hlm
run:
./prog_hls &
diff --git a/cmd/hlm/README.md b/cmd/hidden_lake/messenger/README.md
similarity index 96%
rename from cmd/hlm/README.md
rename to cmd/hidden_lake/messenger/README.md
index 72034728..106d552b 100644
--- a/cmd/hlm/README.md
+++ b/cmd/hidden_lake/messenger/README.md
@@ -45,7 +45,7 @@ Next, you need to login by going to the Sign in page. Enter your `login=user` an
To see the success of sending and receiving messages, you need to do all the same operations, but with `localhost:7070` as `node2_hlm`. This node will be Alice.
-> More example images about HLM pages in the [github.com/number571/go-peer/cmd/hlm/examples/images](https://github.com/number571/go-peer/tree/master/cmd/hlm/examples/images "Path to HLM images")
+> More example images about HLM pages in the [github.com/number571/go-peer/cmd/hidden_lake/messenger/examples/images](https://github.com/number571/go-peer/tree/master/cmd/hlm/examples/images "Path to HLM images")
## Cryptographic algorithms and functions
diff --git a/cmd/hlm/cmd/hlm/hlm_test.go b/cmd/hidden_lake/messenger/cmd/hlm/hlm_test.go
similarity index 100%
rename from cmd/hlm/cmd/hlm/hlm_test.go
rename to cmd/hidden_lake/messenger/cmd/hlm/hlm_test.go
diff --git a/cmd/hlm/cmd/hlm/init_app.go b/cmd/hidden_lake/messenger/cmd/hlm/init_app.go
similarity index 72%
rename from cmd/hlm/cmd/hlm/init_app.go
rename to cmd/hidden_lake/messenger/cmd/hlm/init_app.go
index c6cf8d78..4a3b24e3 100644
--- a/cmd/hlm/cmd/hlm/init_app.go
+++ b/cmd/hidden_lake/messenger/cmd/hlm/init_app.go
@@ -3,13 +3,13 @@ package main
import (
"fmt"
- "github.com/number571/go-peer/cmd/hlm/internal/app"
- "github.com/number571/go-peer/cmd/hlm/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/config"
"github.com/number571/go-peer/pkg/filesystem"
"github.com/number571/go-peer/pkg/types"
- hlm_settings "github.com/number571/go-peer/cmd/hlm/internal/settings"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/settings"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
)
func initApp() (types.IApp, error) {
diff --git a/cmd/hlm/cmd/hlm/main.go b/cmd/hidden_lake/messenger/cmd/hlm/main.go
similarity index 100%
rename from cmd/hlm/cmd/hlm/main.go
rename to cmd/hidden_lake/messenger/cmd/hlm/main.go
diff --git a/cmd/hlm/examples/images/v1/about.png b/cmd/hidden_lake/messenger/examples/images/v1/about.png
similarity index 100%
rename from cmd/hlm/examples/images/v1/about.png
rename to cmd/hidden_lake/messenger/examples/images/v1/about.png
diff --git a/cmd/hlm/examples/images/v1/chat.png b/cmd/hidden_lake/messenger/examples/images/v1/chat.png
similarity index 100%
rename from cmd/hlm/examples/images/v1/chat.png
rename to cmd/hidden_lake/messenger/examples/images/v1/chat.png
diff --git a/cmd/hlm/examples/images/v1/friends.png b/cmd/hidden_lake/messenger/examples/images/v1/friends.png
similarity index 100%
rename from cmd/hlm/examples/images/v1/friends.png
rename to cmd/hidden_lake/messenger/examples/images/v1/friends.png
diff --git a/cmd/hlm/examples/images/v1/settings.png b/cmd/hidden_lake/messenger/examples/images/v1/settings.png
similarity index 100%
rename from cmd/hlm/examples/images/v1/settings.png
rename to cmd/hidden_lake/messenger/examples/images/v1/settings.png
diff --git a/cmd/hlm/examples/images/v2/about.png b/cmd/hidden_lake/messenger/examples/images/v2/about.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/about.png
rename to cmd/hidden_lake/messenger/examples/images/v2/about.png
diff --git a/cmd/hlm/examples/images/v2/chat.png b/cmd/hidden_lake/messenger/examples/images/v2/chat.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/chat.png
rename to cmd/hidden_lake/messenger/examples/images/v2/chat.png
diff --git a/cmd/hlm/examples/images/v2/friends.png b/cmd/hidden_lake/messenger/examples/images/v2/friends.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/friends.png
rename to cmd/hidden_lake/messenger/examples/images/v2/friends.png
diff --git a/cmd/hlm/examples/images/v2/settings.png b/cmd/hidden_lake/messenger/examples/images/v2/settings.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/settings.png
rename to cmd/hidden_lake/messenger/examples/images/v2/settings.png
diff --git a/cmd/hlm/examples/images/v2/signin.png b/cmd/hidden_lake/messenger/examples/images/v2/signin.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/signin.png
rename to cmd/hidden_lake/messenger/examples/images/v2/signin.png
diff --git a/cmd/hlm/examples/images/v2/signup.png b/cmd/hidden_lake/messenger/examples/images/v2/signup.png
similarity index 100%
rename from cmd/hlm/examples/images/v2/signup.png
rename to cmd/hidden_lake/messenger/examples/images/v2/signup.png
diff --git a/cmd/hlm/internal/app/app.go b/cmd/hidden_lake/messenger/internal/app/app.go
similarity index 86%
rename from cmd/hlm/internal/app/app.go
rename to cmd/hidden_lake/messenger/internal/app/app.go
index 4761acbe..7122650c 100644
--- a/cmd/hlm/internal/app/app.go
+++ b/cmd/hidden_lake/messenger/internal/app/app.go
@@ -6,13 +6,13 @@ import (
"os"
"time"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/internal/config"
- "github.com/number571/go-peer/cmd/hlm/internal/database"
- "github.com/number571/go-peer/cmd/hlm/internal/handler"
- hlm_settings "github.com/number571/go-peer/cmd/hlm/internal/settings"
- "github.com/number571/go-peer/cmd/hlm/web"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/database"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/handler"
+ hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/storage"
"github.com/number571/go-peer/pkg/types"
diff --git a/cmd/hlm/internal/app/app_test.go b/cmd/hidden_lake/messenger/internal/app/app_test.go
similarity index 100%
rename from cmd/hlm/internal/app/app_test.go
rename to cmd/hidden_lake/messenger/internal/app/app_test.go
diff --git a/cmd/hlm/internal/app/state/clear.go b/cmd/hidden_lake/messenger/internal/app/state/clear.go
similarity index 92%
rename from cmd/hlm/internal/app/state/clear.go
rename to cmd/hidden_lake/messenger/internal/app/state/clear.go
index 706494e4..bca2ff5b 100644
--- a/cmd/hlm/internal/app/state/clear.go
+++ b/cmd/hidden_lake/messenger/internal/app/state/clear.go
@@ -1,7 +1,7 @@
package state
import (
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
)
diff --git a/cmd/hlm/internal/app/state/state.go b/cmd/hidden_lake/messenger/internal/app/state/state.go
similarity index 94%
rename from cmd/hlm/internal/app/state/state.go
rename to cmd/hidden_lake/messenger/internal/app/state/state.go
index 326fb557..a7f8a0ca 100644
--- a/cmd/hlm/internal/app/state/state.go
+++ b/cmd/hidden_lake/messenger/internal/app/state/state.go
@@ -4,14 +4,14 @@ import (
"fmt"
"sync"
- "github.com/number571/go-peer/cmd/hlm/internal/database"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/database"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/crypto/entropy"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/storage"
- hlm_settings "github.com/number571/go-peer/cmd/hlm/internal/settings"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/settings"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
)
type sState struct {
diff --git a/cmd/hlm/internal/app/state/state_test.go b/cmd/hidden_lake/messenger/internal/app/state/state_test.go
similarity index 100%
rename from cmd/hlm/internal/app/state/state_test.go
rename to cmd/hidden_lake/messenger/internal/app/state/state_test.go
diff --git a/cmd/hlm/internal/app/state/types.go b/cmd/hidden_lake/messenger/internal/app/state/types.go
similarity index 83%
rename from cmd/hlm/internal/app/state/types.go
rename to cmd/hidden_lake/messenger/internal/app/state/types.go
index 8200f570..4a2355f1 100644
--- a/cmd/hlm/internal/app/state/types.go
+++ b/cmd/hidden_lake/messenger/internal/app/state/types.go
@@ -1,8 +1,8 @@
package state
import (
- "github.com/number571/go-peer/cmd/hlm/internal/database"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/database"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/storage"
)
diff --git a/cmd/hlm/internal/app/state/update.go b/cmd/hidden_lake/messenger/internal/app/state/update.go
similarity index 100%
rename from cmd/hlm/internal/app/state/update.go
rename to cmd/hidden_lake/messenger/internal/app/state/update.go
diff --git a/cmd/hlm/internal/app/state/updater.go b/cmd/hidden_lake/messenger/internal/app/state/updater.go
similarity index 100%
rename from cmd/hlm/internal/app/state/updater.go
rename to cmd/hidden_lake/messenger/internal/app/state/updater.go
diff --git a/cmd/hlm/internal/chat_queue/chat_queue.go b/cmd/hidden_lake/messenger/internal/chat_queue/chat_queue.go
similarity index 100%
rename from cmd/hlm/internal/chat_queue/chat_queue.go
rename to cmd/hidden_lake/messenger/internal/chat_queue/chat_queue.go
diff --git a/cmd/hlm/internal/chat_queue/chat_queue_test.go b/cmd/hidden_lake/messenger/internal/chat_queue/chat_queue_test.go
similarity index 100%
rename from cmd/hlm/internal/chat_queue/chat_queue_test.go
rename to cmd/hidden_lake/messenger/internal/chat_queue/chat_queue_test.go
diff --git a/cmd/hlm/internal/chat_queue/types.go b/cmd/hidden_lake/messenger/internal/chat_queue/types.go
similarity index 100%
rename from cmd/hlm/internal/chat_queue/types.go
rename to cmd/hidden_lake/messenger/internal/chat_queue/types.go
diff --git a/cmd/hlm/internal/config/config.go b/cmd/hidden_lake/messenger/internal/config/config.go
similarity index 100%
rename from cmd/hlm/internal/config/config.go
rename to cmd/hidden_lake/messenger/internal/config/config.go
diff --git a/cmd/hlm/internal/config/config_test.go b/cmd/hidden_lake/messenger/internal/config/config_test.go
similarity index 100%
rename from cmd/hlm/internal/config/config_test.go
rename to cmd/hidden_lake/messenger/internal/config/config_test.go
diff --git a/cmd/hlm/internal/config/types.go b/cmd/hidden_lake/messenger/internal/config/types.go
similarity index 100%
rename from cmd/hlm/internal/config/types.go
rename to cmd/hidden_lake/messenger/internal/config/types.go
diff --git a/cmd/hlm/internal/database/database.go b/cmd/hidden_lake/messenger/internal/database/database.go
similarity index 100%
rename from cmd/hlm/internal/database/database.go
rename to cmd/hidden_lake/messenger/internal/database/database.go
diff --git a/cmd/hlm/internal/database/database_test.go b/cmd/hidden_lake/messenger/internal/database/database_test.go
similarity index 100%
rename from cmd/hlm/internal/database/database_test.go
rename to cmd/hidden_lake/messenger/internal/database/database_test.go
diff --git a/cmd/hlm/internal/database/keys.go b/cmd/hidden_lake/messenger/internal/database/keys.go
similarity index 100%
rename from cmd/hlm/internal/database/keys.go
rename to cmd/hidden_lake/messenger/internal/database/keys.go
diff --git a/cmd/hlm/internal/database/message.go b/cmd/hidden_lake/messenger/internal/database/message.go
similarity index 100%
rename from cmd/hlm/internal/database/message.go
rename to cmd/hidden_lake/messenger/internal/database/message.go
diff --git a/cmd/hlm/internal/database/relation.go b/cmd/hidden_lake/messenger/internal/database/relation.go
similarity index 100%
rename from cmd/hlm/internal/database/relation.go
rename to cmd/hidden_lake/messenger/internal/database/relation.go
diff --git a/cmd/hlm/internal/database/types.go b/cmd/hidden_lake/messenger/internal/database/types.go
similarity index 100%
rename from cmd/hlm/internal/database/types.go
rename to cmd/hidden_lake/messenger/internal/database/types.go
diff --git a/cmd/hlm/internal/database/wrapper.go b/cmd/hidden_lake/messenger/internal/database/wrapper.go
similarity index 100%
rename from cmd/hlm/internal/database/wrapper.go
rename to cmd/hidden_lake/messenger/internal/database/wrapper.go
diff --git a/cmd/hlm/internal/handler/about.go b/cmd/hidden_lake/messenger/internal/handler/about.go
similarity index 75%
rename from cmd/hlm/internal/handler/about.go
rename to cmd/hidden_lake/messenger/internal/handler/about.go
index 76aa1327..602436fe 100644
--- a/cmd/hlm/internal/handler/about.go
+++ b/cmd/hidden_lake/messenger/internal/handler/about.go
@@ -4,8 +4,8 @@ import (
"html/template"
"net/http"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
)
func AboutPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/chat.go b/cmd/hidden_lake/messenger/internal/handler/chat.go
similarity index 87%
rename from cmd/hlm/internal/handler/chat.go
rename to cmd/hidden_lake/messenger/internal/handler/chat.go
index c81c7616..8d9a3ceb 100644
--- a/cmd/hlm/internal/handler/chat.go
+++ b/cmd/hidden_lake/messenger/internal/handler/chat.go
@@ -7,12 +7,12 @@ import (
"net/http"
"strings"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/internal/database"
- hlm_settings "github.com/number571/go-peer/cmd/hlm/internal/settings"
- "github.com/number571/go-peer/cmd/hlm/web"
- "github.com/number571/go-peer/cmd/hls/pkg/request"
- hls_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/database"
+ hlm_settings "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
const (
diff --git a/cmd/hlm/internal/handler/chat_ws.go b/cmd/hidden_lake/messenger/internal/handler/chat_ws.go
similarity index 85%
rename from cmd/hlm/internal/handler/chat_ws.go
rename to cmd/hidden_lake/messenger/internal/handler/chat_ws.go
index 6340bff1..353cfdad 100644
--- a/cmd/hlm/internal/handler/chat_ws.go
+++ b/cmd/hidden_lake/messenger/internal/handler/chat_ws.go
@@ -1,7 +1,7 @@
package handler
import (
- "github.com/number571/go-peer/cmd/hlm/internal/chat_queue"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/chat_queue"
"golang.org/x/net/websocket"
)
diff --git a/cmd/hlm/internal/handler/favicon.go b/cmd/hidden_lake/messenger/internal/handler/favicon.go
similarity index 79%
rename from cmd/hlm/internal/handler/favicon.go
rename to cmd/hidden_lake/messenger/internal/handler/favicon.go
index 66ec33f6..0360f2f0 100644
--- a/cmd/hlm/internal/handler/favicon.go
+++ b/cmd/hidden_lake/messenger/internal/handler/favicon.go
@@ -3,7 +3,7 @@ package handler
import (
"net/http"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
)
func FaviconPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/friends.go b/cmd/hidden_lake/messenger/internal/handler/friends.go
similarity index 92%
rename from cmd/hlm/internal/handler/friends.go
rename to cmd/hidden_lake/messenger/internal/handler/friends.go
index 01b854c9..a13fb95d 100644
--- a/cmd/hlm/internal/handler/friends.go
+++ b/cmd/hidden_lake/messenger/internal/handler/friends.go
@@ -7,8 +7,8 @@ import (
"sort"
"strings"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
)
diff --git a/cmd/hlm/internal/handler/handler_test.go b/cmd/hidden_lake/messenger/internal/handler/handler_test.go
similarity index 100%
rename from cmd/hlm/internal/handler/handler_test.go
rename to cmd/hidden_lake/messenger/internal/handler/handler_test.go
diff --git a/cmd/hlm/internal/handler/incoming.go b/cmd/hidden_lake/messenger/internal/handler/incoming.go
similarity index 82%
rename from cmd/hlm/internal/handler/incoming.go
rename to cmd/hidden_lake/messenger/internal/handler/incoming.go
index 72eeb88f..60545c82 100644
--- a/cmd/hlm/internal/handler/incoming.go
+++ b/cmd/hidden_lake/messenger/internal/handler/incoming.go
@@ -6,13 +6,13 @@ import (
"net/http"
"strings"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/internal/chat_queue"
- "github.com/number571/go-peer/cmd/hlm/internal/database"
- "github.com/number571/go-peer/cmd/hlm/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/chat_queue"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/database"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
- hls_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
func HandleIncomigHTTP(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/index.go b/cmd/hidden_lake/messenger/internal/handler/index.go
similarity index 77%
rename from cmd/hlm/internal/handler/index.go
rename to cmd/hidden_lake/messenger/internal/handler/index.go
index d273603e..a27228f2 100644
--- a/cmd/hlm/internal/handler/index.go
+++ b/cmd/hidden_lake/messenger/internal/handler/index.go
@@ -3,7 +3,7 @@ package handler
import (
"net/http"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
)
func IndexPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/page404.go b/cmd/hidden_lake/messenger/internal/handler/page404.go
similarity index 73%
rename from cmd/hlm/internal/handler/page404.go
rename to cmd/hidden_lake/messenger/internal/handler/page404.go
index e699e88d..b7bc6c42 100644
--- a/cmd/hlm/internal/handler/page404.go
+++ b/cmd/hidden_lake/messenger/internal/handler/page404.go
@@ -4,8 +4,8 @@ import (
"html/template"
"net/http"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
)
func NotFoundPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/qr.go b/cmd/hidden_lake/messenger/internal/handler/qr.go
similarity index 91%
rename from cmd/hlm/internal/handler/qr.go
rename to cmd/hidden_lake/messenger/internal/handler/qr.go
index 3d4c2cd4..317c641b 100644
--- a/cmd/hlm/internal/handler/qr.go
+++ b/cmd/hidden_lake/messenger/internal/handler/qr.go
@@ -7,7 +7,7 @@ import (
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
)
func QRPublicKeyPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/settings.go b/cmd/hidden_lake/messenger/internal/handler/settings.go
similarity index 92%
rename from cmd/hlm/internal/handler/settings.go
rename to cmd/hidden_lake/messenger/internal/handler/settings.go
index a29594ca..864f50fc 100644
--- a/cmd/hlm/internal/handler/settings.go
+++ b/cmd/hidden_lake/messenger/internal/handler/settings.go
@@ -7,8 +7,8 @@ import (
"strconv"
"strings"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
)
type sSettings struct {
diff --git a/cmd/hlm/internal/handler/signin.go b/cmd/hidden_lake/messenger/internal/handler/signin.go
similarity index 90%
rename from cmd/hlm/internal/handler/signin.go
rename to cmd/hidden_lake/messenger/internal/handler/signin.go
index 1250fa1a..4f2dd971 100644
--- a/cmd/hlm/internal/handler/signin.go
+++ b/cmd/hidden_lake/messenger/internal/handler/signin.go
@@ -9,8 +9,8 @@ import (
"github.com/number571/go-peer/pkg/crypto/hashing"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
- "github.com/number571/go-peer/cmd/hlm/web"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
)
func SignInPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/signout.go b/cmd/hidden_lake/messenger/internal/handler/signout.go
similarity index 86%
rename from cmd/hlm/internal/handler/signout.go
rename to cmd/hidden_lake/messenger/internal/handler/signout.go
index ccb5b86a..6d55f648 100644
--- a/cmd/hlm/internal/handler/signout.go
+++ b/cmd/hidden_lake/messenger/internal/handler/signout.go
@@ -4,7 +4,7 @@ import (
"fmt"
"net/http"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
)
func SignOutPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/handler/signup.go b/cmd/hidden_lake/messenger/internal/handler/signup.go
similarity index 90%
rename from cmd/hlm/internal/handler/signup.go
rename to cmd/hidden_lake/messenger/internal/handler/signup.go
index 26286354..c49bc5f6 100644
--- a/cmd/hlm/internal/handler/signup.go
+++ b/cmd/hidden_lake/messenger/internal/handler/signup.go
@@ -7,12 +7,12 @@ import (
"net/http"
"strings"
- "github.com/number571/go-peer/cmd/hlm/internal/app/state"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/internal/app/state"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/crypto/hashing"
- "github.com/number571/go-peer/cmd/hlm/web"
- hls_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/messenger/web"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
func SignUpPage(s state.IState) http.HandlerFunc {
diff --git a/cmd/hlm/internal/settings/settings.go b/cmd/hidden_lake/messenger/internal/settings/settings.go
similarity index 100%
rename from cmd/hlm/internal/settings/settings.go
rename to cmd/hidden_lake/messenger/internal/settings/settings.go
diff --git a/cmd/hlm/internal/settings/settings_test.go b/cmd/hidden_lake/messenger/internal/settings/settings_test.go
similarity index 100%
rename from cmd/hlm/internal/settings/settings_test.go
rename to cmd/hidden_lake/messenger/internal/settings/settings_test.go
diff --git a/cmd/hlm/web/static/css/bootstrap.css b/cmd/hidden_lake/messenger/web/static/css/bootstrap.css
similarity index 100%
rename from cmd/hlm/web/static/css/bootstrap.css
rename to cmd/hidden_lake/messenger/web/static/css/bootstrap.css
diff --git a/cmd/hlm/web/static/css/bootstrap.css.map b/cmd/hidden_lake/messenger/web/static/css/bootstrap.css.map
similarity index 100%
rename from cmd/hlm/web/static/css/bootstrap.css.map
rename to cmd/hidden_lake/messenger/web/static/css/bootstrap.css.map
diff --git a/cmd/hlm/web/static/img/favicon.ico b/cmd/hidden_lake/messenger/web/static/img/favicon.ico
similarity index 100%
rename from cmd/hlm/web/static/img/favicon.ico
rename to cmd/hidden_lake/messenger/web/static/img/favicon.ico
diff --git a/cmd/hlm/web/static/js/bootstrap.js b/cmd/hidden_lake/messenger/web/static/js/bootstrap.js
similarity index 100%
rename from cmd/hlm/web/static/js/bootstrap.js
rename to cmd/hidden_lake/messenger/web/static/js/bootstrap.js
diff --git a/cmd/hlm/web/static/js/bootstrap.js.map b/cmd/hidden_lake/messenger/web/static/js/bootstrap.js.map
similarity index 100%
rename from cmd/hlm/web/static/js/bootstrap.js.map
rename to cmd/hidden_lake/messenger/web/static/js/bootstrap.js.map
diff --git a/cmd/hlm/web/static/js/jquery.js b/cmd/hidden_lake/messenger/web/static/js/jquery.js
similarity index 100%
rename from cmd/hlm/web/static/js/jquery.js
rename to cmd/hidden_lake/messenger/web/static/js/jquery.js
diff --git a/cmd/hlm/web/template/about.html b/cmd/hidden_lake/messenger/web/template/about.html
similarity index 100%
rename from cmd/hlm/web/template/about.html
rename to cmd/hidden_lake/messenger/web/template/about.html
diff --git a/cmd/hlm/web/template/chat.html b/cmd/hidden_lake/messenger/web/template/chat.html
similarity index 100%
rename from cmd/hlm/web/template/chat.html
rename to cmd/hidden_lake/messenger/web/template/chat.html
diff --git a/cmd/hlm/web/template/friends.html b/cmd/hidden_lake/messenger/web/template/friends.html
similarity index 100%
rename from cmd/hlm/web/template/friends.html
rename to cmd/hidden_lake/messenger/web/template/friends.html
diff --git a/cmd/hlm/web/template/index.html b/cmd/hidden_lake/messenger/web/template/index.html
similarity index 100%
rename from cmd/hlm/web/template/index.html
rename to cmd/hidden_lake/messenger/web/template/index.html
diff --git a/cmd/hlm/web/template/page404.html b/cmd/hidden_lake/messenger/web/template/page404.html
similarity index 100%
rename from cmd/hlm/web/template/page404.html
rename to cmd/hidden_lake/messenger/web/template/page404.html
diff --git a/cmd/hlm/web/template/settings.html b/cmd/hidden_lake/messenger/web/template/settings.html
similarity index 100%
rename from cmd/hlm/web/template/settings.html
rename to cmd/hidden_lake/messenger/web/template/settings.html
diff --git a/cmd/hlm/web/template/signin.html b/cmd/hidden_lake/messenger/web/template/signin.html
similarity index 100%
rename from cmd/hlm/web/template/signin.html
rename to cmd/hidden_lake/messenger/web/template/signin.html
diff --git a/cmd/hlm/web/template/signup.html b/cmd/hidden_lake/messenger/web/template/signup.html
similarity index 100%
rename from cmd/hlm/web/template/signup.html
rename to cmd/hidden_lake/messenger/web/template/signup.html
diff --git a/cmd/hlm/web/web.go b/cmd/hidden_lake/messenger/web/web.go
similarity index 100%
rename from cmd/hlm/web/web.go
rename to cmd/hidden_lake/messenger/web/web.go
diff --git a/cmd/hlm/web/web_test.go b/cmd/hidden_lake/messenger/web/web_test.go
similarity index 100%
rename from cmd/hlm/web/web_test.go
rename to cmd/hidden_lake/messenger/web/web_test.go
diff --git a/cmd/hls/.gitignore b/cmd/hidden_lake/service/.gitignore
similarity index 80%
rename from cmd/hls/.gitignore
rename to cmd/hidden_lake/service/.gitignore
index 2d67fcc9..5078e091 100644
--- a/cmd/hls/.gitignore
+++ b/cmd/hidden_lake/service/.gitignore
@@ -1,5 +1,7 @@
hls
hls.stg
+hls.cfg
+hls.db
pub.key
priv.key
*.db_push1
diff --git a/cmd/hls/Makefile b/cmd/hidden_lake/service/Makefile
similarity index 100%
rename from cmd/hls/Makefile
rename to cmd/hidden_lake/service/Makefile
diff --git a/cmd/hls/README.md b/cmd/hidden_lake/service/README.md
similarity index 100%
rename from cmd/hls/README.md
rename to cmd/hidden_lake/service/README.md
diff --git a/cmd/hls/cmd/hls/hls_test.go b/cmd/hidden_lake/service/cmd/hls/hls_test.go
similarity index 100%
rename from cmd/hls/cmd/hls/hls_test.go
rename to cmd/hidden_lake/service/cmd/hls/hls_test.go
diff --git a/cmd/hls/cmd/hls/init_app.go b/cmd/hidden_lake/service/cmd/hls/init_app.go
similarity index 84%
rename from cmd/hls/cmd/hls/init_app.go
rename to cmd/hidden_lake/service/cmd/hls/init_app.go
index fe27fb6f..5f76d521 100644
--- a/cmd/hls/cmd/hls/init_app.go
+++ b/cmd/hidden_lake/service/cmd/hls/init_app.go
@@ -4,12 +4,12 @@ import (
"flag"
"fmt"
- "github.com/number571/go-peer/cmd/hls/internal/app"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/app"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/filesystem"
"github.com/number571/go-peer/pkg/types"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
func initApp() (types.IApp, error) {
diff --git a/cmd/hls/cmd/hls/init_config.go b/cmd/hidden_lake/service/cmd/hls/init_config.go
similarity index 63%
rename from cmd/hls/cmd/hls/init_config.go
rename to cmd/hidden_lake/service/cmd/hls/init_config.go
index 83eb0270..6ff2839e 100644
--- a/cmd/hls/cmd/hls/init_config.go
+++ b/cmd/hidden_lake/service/cmd/hls/init_config.go
@@ -1,8 +1,8 @@
package main
import (
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
"github.com/number571/go-peer/pkg/filesystem"
)
@@ -11,6 +11,7 @@ func initConfig() (config.IConfig, error) {
return config.LoadConfig(hls_settings.CPathCFG)
}
initCfg := &config.SConfig{
+ FLogging: []string{config.CLogInfo, config.CLogWarn, config.CLogErro},
FAddress: &config.SAddress{
FTCP: "localhost:9571",
FHTTP: "localhost:9572",
diff --git a/cmd/hls/cmd/hls/init_node.go b/cmd/hidden_lake/service/cmd/hls/init_node.go
similarity index 50%
rename from cmd/hls/cmd/hls/init_node.go
rename to cmd/hidden_lake/service/cmd/hls/init_node.go
index 004cb060..32286cfa 100644
--- a/cmd/hls/cmd/hls/init_node.go
+++ b/cmd/hidden_lake/service/cmd/hls/init_node.go
@@ -3,8 +3,11 @@ package main
import (
"os"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
+ hlt_client "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/client"
+ "github.com/number571/go-peer/pkg/client/message"
"github.com/number571/go-peer/pkg/client/queue"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/friends"
@@ -20,6 +23,40 @@ func initNode(cfg config.IConfig, privKey asymmetric.IPrivKey) anonymity.INode {
anonymity.NewSettings(&anonymity.SSettings{
FRetryEnqueue: hls_settings.CRetryEnqueue,
FTimeWait: hls_settings.CWaitTime,
+ FTraffic: anonymity.NewTraffic(
+ func() <-chan message.IMessage {
+ ch := make(chan message.IMessage, 300)
+ go func() {
+ defer close(ch)
+ for _, addr := range cfg.Traffic().Download() {
+ client := initTrafficClient(addr)
+ hashes, err := client.Hashes()
+ if err != nil {
+ // TODO: log
+ continue
+ }
+ for _, hash := range hashes {
+ msg, err := client.Load(hash)
+ if err != nil {
+ continue
+ }
+ ch <- msg
+ }
+ }
+ }()
+ return ch
+ },
+ func(msg message.IMessage) error {
+ for _, addr := range cfg.Traffic().Upload() {
+ client := initTrafficClient(addr)
+ if err := client.Push(msg); err != nil {
+ // TODO: log
+ continue
+ }
+ }
+ return nil
+ },
+ ),
}),
// Insecure to use logging in real anonymity projects!
// Logging should only be used in overview or testing;
@@ -36,7 +73,7 @@ func initNode(cfg config.IConfig, privKey asymmetric.IPrivKey) anonymity.INode {
FMaxConnects: hls_settings.CNetworkMaxConns,
FConnSettings: conn.NewSettings(&conn.SSettings{
FNetworkKey: cfg.Network(),
- FMessageSize: hls_settings.CMessageSize,
+ FMessageSize: pkg_settings.CMessageSize,
FTimeWait: hls_settings.CNetworkWaitTime,
}),
}),
@@ -59,13 +96,23 @@ func initNode(cfg config.IConfig, privKey asymmetric.IPrivKey) anonymity.INode {
)
}
-func loggerSettings(enabled bool) logger.ISettings {
- if !enabled {
- return logger.NewSettings(&logger.SSettings{})
- }
- return logger.NewSettings(&logger.SSettings{
- FInfo: os.Stdout,
- FWarn: os.Stderr,
- FErro: os.Stderr,
- })
+func initTrafficClient(addr string) hlt_client.IClient {
+ return hlt_client.NewClient(
+ hlt_client.NewBuilder(),
+ hlt_client.NewRequester(addr),
+ )
+}
+
+func loggerSettings(logging config.ILogging) logger.ISettings {
+ sett := &logger.SSettings{}
+ if logging.Info() {
+ sett.FInfo = os.Stdout
+ }
+ if logging.Warn() {
+ sett.FInfo = os.Stderr
+ }
+ if logging.Erro() {
+ sett.FInfo = os.Stderr
+ }
+ return logger.NewSettings(sett)
}
diff --git a/cmd/hls/cmd/hls/main.go b/cmd/hidden_lake/service/cmd/hls/main.go
similarity index 100%
rename from cmd/hls/cmd/hls/main.go
rename to cmd/hidden_lake/service/cmd/hls/main.go
diff --git a/cmd/hls/internal/app/app.go b/cmd/hidden_lake/service/internal/app/app.go
similarity index 86%
rename from cmd/hls/internal/app/app.go
rename to cmd/hidden_lake/service/internal/app/app.go
index ff49982b..f2cdff7e 100644
--- a/cmd/hls/internal/app/app.go
+++ b/cmd/hidden_lake/service/internal/app/app.go
@@ -6,14 +6,14 @@ import (
"net/http"
"time"
- "github.com/number571/go-peer/cmd/hls/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/network/anonymity"
"github.com/number571/go-peer/pkg/network/conn_keeper"
"github.com/number571/go-peer/pkg/types"
- "github.com/number571/go-peer/cmd/hls/internal/handler"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/handler"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
)
const (
@@ -48,8 +48,7 @@ func (app *sApp) Run() error {
res := make(chan error)
go func() {
- httpAddress := app.fWrapper.Config().Address().HTTP()
- if httpAddress == "" {
+ if app.fWrapper.Config().Address().HTTP() == "" {
return
}
diff --git a/cmd/hls/internal/app/app_test.go b/cmd/hidden_lake/service/internal/app/app_test.go
similarity index 84%
rename from cmd/hls/internal/app/app_test.go
rename to cmd/hidden_lake/service/internal/app/app_test.go
index 4e114840..301ea694 100644
--- a/cmd/hls/internal/app/app_test.go
+++ b/cmd/hidden_lake/service/internal/app/app_test.go
@@ -5,11 +5,11 @@ import (
"os"
"testing"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
testutils "github.com/number571/go-peer/test/_data"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
anon_testutils "github.com/number571/go-peer/test/_data/anonymity"
)
diff --git a/cmd/hls/internal/app/init_keeper.go b/cmd/hidden_lake/service/internal/app/init_keeper.go
similarity index 86%
rename from cmd/hls/internal/app/init_keeper.go
rename to cmd/hidden_lake/service/internal/app/init_keeper.go
index c316266b..8422389e 100644
--- a/cmd/hls/internal/app/init_keeper.go
+++ b/cmd/hidden_lake/service/internal/app/init_keeper.go
@@ -1,7 +1,7 @@
package app
import (
- "github.com/number571/go-peer/cmd/hls/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
"github.com/number571/go-peer/pkg/network/anonymity"
"github.com/number571/go-peer/pkg/network/conn_keeper"
)
diff --git a/cmd/hls/internal/app/init_service.go b/cmd/hidden_lake/service/internal/app/init_service.go
similarity index 78%
rename from cmd/hls/internal/app/init_service.go
rename to cmd/hidden_lake/service/internal/app/init_service.go
index 30e03ca4..16670d36 100644
--- a/cmd/hls/internal/app/init_service.go
+++ b/cmd/hidden_lake/service/internal/app/init_service.go
@@ -3,9 +3,9 @@ package app
import (
"net/http"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- "github.com/number571/go-peer/cmd/hls/internal/handler"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/handler"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/config/config.go b/cmd/hidden_lake/service/internal/config/config.go
similarity index 60%
rename from cmd/hls/internal/config/config.go
rename to cmd/hidden_lake/service/internal/config/config.go
index 9b23d725..461e3be4 100644
--- a/cmd/hls/internal/config/config.go
+++ b/cmd/hidden_lake/service/internal/config/config.go
@@ -4,32 +4,49 @@ import (
"fmt"
"sync"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/filesystem"
)
+const (
+ CLogInfo = "info"
+ CLogWarn = "warn"
+ CLogErro = "erro"
+)
+
var (
_ IConfig = &SConfig{}
- _ iAddress = &SAddress{}
+ _ IAddress = &SAddress{}
+ _ ITraffic = &STraffic{}
+ _ ILogging = &sLogging{}
)
type SConfig struct {
- FLogging bool `json:"logging,omitempty"`
FNetwork string `json:"network,omitempty"`
- FAddress *SAddress `json:"address,omitempty"`
- FServices map[string]string `json:"services,omitempty"`
+ FAddress *SAddress `json:"address,omitempty"`
+ FTraffic *STraffic `json:"traffic,omitempty"`
+ FLogging []string `json:"logging,omitempty"`
FConnections []string `json:"connections,omitempty"`
+ FServices map[string]string `json:"services,omitempty"`
FFriends map[string]string `json:"friends,omitempty"`
fFilepath string
fMutex sync.Mutex
+ fLogging *sLogging
fFriends map[string]asymmetric.IPubKey
}
+type sLogging []bool
+
+type STraffic struct {
+ FDownload []string `json:"download,omitempty"`
+ FUpload []string `json:"upload,omitempty"`
+}
+
type SAddress struct {
FTCP string `json:"tcp,omitempty"`
FHTTP string `json:"http,omitempty"`
@@ -46,11 +63,9 @@ func NewConfig(filepath string, cfg *SConfig) (IConfig, error) {
return nil, err
}
- cfg.fFilepath = filepath
- if err := cfg.loadPubKeys(); err != nil {
+ if err := cfg.initConfig(filepath); err != nil {
return nil, err
}
-
return cfg, nil
}
@@ -71,14 +86,48 @@ func LoadConfig(filepath string) (IConfig, error) {
return nil, err
}
- cfg.fFilepath = filepath
- if err := cfg.loadPubKeys(); err != nil {
+ if err := cfg.initConfig(filepath); err != nil {
return nil, err
}
-
return cfg, nil
}
+func (cfg *SConfig) initConfig(filepath string) error {
+ cfg.fFilepath = filepath
+
+ if err := cfg.loadPubKeys(); err != nil {
+ return err
+ }
+
+ if err := cfg.loadLogging(); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (cfg *SConfig) loadLogging() error {
+ // [info, warn, erro]
+ logging := sLogging(make([]bool, 3))
+
+ mapping := map[string]int{
+ "info": 0,
+ "warn": 1,
+ "erro": 2,
+ }
+
+ for _, v := range cfg.FLogging {
+ logType, ok := mapping[v]
+ if !ok {
+ return fmt.Errorf("undefined log type '%s'", v)
+ }
+ logging[logType] = true
+ }
+
+ cfg.fLogging = &logging
+ return nil
+}
+
func (cfg *SConfig) loadPubKeys() error {
cfg.fFriends = make(map[string]asymmetric.IPubKey)
@@ -100,10 +149,6 @@ func (cfg *SConfig) loadPubKeys() error {
return nil
}
-func (cfg *SConfig) Logging() bool {
- return cfg.FLogging
-}
-
func (cfg *SConfig) Network() string {
return cfg.FNetwork
}
@@ -119,10 +164,18 @@ func (cfg *SConfig) Friends() map[string]asymmetric.IPubKey {
return result
}
-func (cfg *SConfig) Address() iAddress {
+func (cfg *SConfig) Logging() ILogging {
+ return cfg.fLogging
+}
+
+func (cfg *SConfig) Address() IAddress {
return cfg.FAddress
}
+func (cfg *SConfig) Traffic() ITraffic {
+ return cfg.FTraffic
+}
+
func (cfg *SConfig) Connections() []string {
return cfg.FConnections
}
@@ -135,6 +188,32 @@ func (cfg *SConfig) Service(name string) (string, bool) {
return addr, ok
}
+func (traffic *STraffic) Download() []string {
+ if traffic == nil {
+ return nil
+ }
+ return traffic.FDownload
+}
+
+func (traffic *STraffic) Upload() []string {
+ if traffic == nil {
+ return nil
+ }
+ return traffic.FUpload
+}
+
+func (logging *sLogging) Info() bool {
+ return (*logging)[0]
+}
+
+func (logging *sLogging) Warn() bool {
+ return (*logging)[1]
+}
+
+func (logging *sLogging) Erro() bool {
+ return (*logging)[2]
+}
+
func (address *SAddress) TCP() string {
if address == nil {
return ""
diff --git a/cmd/hls/internal/config/config_test.go b/cmd/hidden_lake/service/internal/config/config_test.go
similarity index 81%
rename from cmd/hls/internal/config/config_test.go
rename to cmd/hidden_lake/service/internal/config/config_test.go
index c9643f34..8bffb167 100644
--- a/cmd/hls/internal/config/config_test.go
+++ b/cmd/hidden_lake/service/internal/config/config_test.go
@@ -16,6 +16,8 @@ const (
const (
tcLogging = true
tcNetwork = "test_network_key"
+ tcDownloader = "test_downloader"
+ tcUploader = "test_uploader"
tcAddressTCP = "test_address_tcp"
tcAddressHTTP = "test_address_http"
tcPubKeyAlias1 = "test_alias1"
@@ -41,12 +43,22 @@ var (
const (
tcConfigTemplate = `{
- "logging": %t,
+ "logging": ["info", "erro"],
"network": "%s",
"address": {
"tcp": "%s",
"http": "%s"
},
+ "traffic": {
+ "download": [
+ "%s",
+ "%s"
+ ],
+ "upload": [
+ "%s",
+ "%s"
+ ]
+ },
"connections": [
"%s",
"%s"
@@ -65,12 +77,15 @@ const (
func testNewConfigString() string {
return fmt.Sprintf(
tcConfigTemplate,
- tcLogging,
tcNetwork,
tcAddressTCP,
tcAddressHTTP,
tgConnects[0],
tgConnects[1],
+ tgConnects[0],
+ tgConnects[1],
+ tgConnects[0],
+ tgConnects[1],
tcPubKeyAlias1,
tgPubKeys[tcPubKeyAlias1],
tcPubKeyAlias2,
@@ -93,27 +108,69 @@ func TestConfig(t *testing.T) {
cfg, err := LoadConfig(tcConfigFile)
if err != nil {
t.Error(err)
+ return
}
- if cfg.Logging() != tcLogging {
- t.Error("logging is invalid")
+ if cfg.Logging().Info() != tcLogging {
+ t.Error("logging.info is invalid")
+ return
+ }
+
+ if cfg.Logging().Erro() != tcLogging {
+ t.Error("logging.erro is invalid")
+ return
+ }
+
+ if cfg.Logging().Warn() == tcLogging {
+ t.Error("logging.warn is invalid")
+ return
}
if cfg.Network() != tcNetwork {
t.Error("network is invalid")
+ return
}
if cfg.Address().TCP() != tcAddressTCP {
t.Error("address_tcp is invalid")
+ return
}
if cfg.Address().HTTP() != tcAddressHTTP {
t.Error("address_http is invalid")
+ return
}
+ if len(cfg.Traffic().Download()) != 2 {
+ t.Error("len traffic download != 2")
+ return
+ }
+ for i, v := range cfg.Traffic().Download() {
+ if v != tgConnects[i] {
+ t.Errorf("traffic download '%d' is invalid", i)
+ return
+ }
+ }
+
+ if len(cfg.Traffic().Upload()) != 2 {
+ t.Error("len traffic upload != 2")
+ return
+ }
+ for i, v := range cfg.Traffic().Upload() {
+ if v != tgConnects[i] {
+ t.Errorf("traffic upload '%d' is invalid", i)
+ return
+ }
+ }
+
+ if len(cfg.Connections()) != 2 {
+ t.Error("len connections != 2")
+ return
+ }
for i, v := range cfg.Connections() {
if v != tgConnects[i] {
t.Errorf("connection '%d' is invalid", i)
+ return
}
}
@@ -121,9 +178,11 @@ func TestConfig(t *testing.T) {
v1, ok := cfg.Service(k)
if !ok {
t.Errorf("service undefined '%s'", k)
+ return
}
if v != v1 {
t.Errorf("service address is invalid '%s'", v1)
+ return
}
}
@@ -132,6 +191,7 @@ func TestConfig(t *testing.T) {
pubKey := asymmetric.LoadRSAPubKey(pubStr)
if pubKey.Address().String() != v1.Address().String() {
t.Errorf("public key is invalid '%s'", v1)
+ return
}
}
}
@@ -143,6 +203,7 @@ func TestWrapper(t *testing.T) {
cfg, err := LoadConfig(tcConfigFile)
if err != nil {
t.Error(err)
+ return
}
if len(cfg.Friends()) == 0 {
@@ -161,6 +222,7 @@ func TestWrapper(t *testing.T) {
cfg, err = LoadConfig(tcConfigFile)
if err != nil {
t.Error(err)
+ return
}
if len(cfg.Friends()) != 0 {
diff --git a/cmd/hls/internal/config/editor.go b/cmd/hidden_lake/service/internal/config/editor.go
similarity index 96%
rename from cmd/hls/internal/config/editor.go
rename to cmd/hidden_lake/service/internal/config/editor.go
index 315731d1..60054047 100644
--- a/cmd/hls/internal/config/editor.go
+++ b/cmd/hidden_lake/service/internal/config/editor.go
@@ -4,7 +4,7 @@ import (
"fmt"
"sync"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/filesystem"
diff --git a/cmd/hls/internal/config/types.go b/cmd/hidden_lake/service/internal/config/types.go
similarity index 66%
rename from cmd/hls/internal/config/types.go
rename to cmd/hidden_lake/service/internal/config/types.go
index 25933167..9a5dab7a 100644
--- a/cmd/hls/internal/config/types.go
+++ b/cmd/hidden_lake/service/internal/config/types.go
@@ -15,15 +15,27 @@ type IEditor interface {
}
type IConfig interface {
- Logging() bool
Network() string
- Address() iAddress
+ Logging() ILogging
+ Address() IAddress
+ Traffic() ITraffic
Connections() []string
Friends() map[string]asymmetric.IPubKey
Service(string) (string, bool)
}
-type iAddress interface {
+type ITraffic interface {
+ Download() []string
+ Upload() []string
+}
+
+type ILogging interface {
+ Info() bool
+ Warn() bool
+ Erro() bool
+}
+
+type IAddress interface {
TCP() string
HTTP() string
}
diff --git a/cmd/hls/internal/config/wrapper.go b/cmd/hidden_lake/service/internal/config/wrapper.go
similarity index 100%
rename from cmd/hls/internal/config/wrapper.go
rename to cmd/hidden_lake/service/internal/config/wrapper.go
diff --git a/cmd/hls/internal/handler/config_connects.go b/cmd/hidden_lake/service/internal/handler/config_connects.go
similarity index 92%
rename from cmd/hls/internal/handler/config_connects.go
rename to cmd/hidden_lake/service/internal/handler/config_connects.go
index e3320ca2..2e6c6751 100644
--- a/cmd/hls/internal/handler/config_connects.go
+++ b/cmd/hidden_lake/service/internal/handler/config_connects.go
@@ -5,8 +5,8 @@ import (
"net/http"
"strings"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/handler/config_connects_test.go b/cmd/hidden_lake/service/internal/handler/config_connects_test.go
similarity index 91%
rename from cmd/hls/internal/handler/config_connects_test.go
rename to cmd/hidden_lake/service/internal/handler/config_connects_test.go
index c6721ab1..eeb0e07c 100644
--- a/cmd/hls/internal/handler/config_connects_test.go
+++ b/cmd/hidden_lake/service/internal/handler/config_connects_test.go
@@ -4,8 +4,8 @@ import (
"fmt"
"testing"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
testutils "github.com/number571/go-peer/test/_data"
)
diff --git a/cmd/hls/internal/handler/config_friends.go b/cmd/hidden_lake/service/internal/handler/config_friends.go
similarity index 93%
rename from cmd/hls/internal/handler/config_friends.go
rename to cmd/hidden_lake/service/internal/handler/config_friends.go
index 43d211e1..c4eae0c6 100644
--- a/cmd/hls/internal/handler/config_friends.go
+++ b/cmd/hidden_lake/service/internal/handler/config_friends.go
@@ -6,8 +6,8 @@ import (
"net/http"
"strings"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/handler/config_friends_test.go b/cmd/hidden_lake/service/internal/handler/config_friends_test.go
similarity index 92%
rename from cmd/hls/internal/handler/config_friends_test.go
rename to cmd/hidden_lake/service/internal/handler/config_friends_test.go
index a8d751ec..940174cf 100644
--- a/cmd/hls/internal/handler/config_friends_test.go
+++ b/cmd/hidden_lake/service/internal/handler/config_friends_test.go
@@ -4,8 +4,8 @@ import (
"fmt"
"testing"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
testutils "github.com/number571/go-peer/test/_data"
)
diff --git a/cmd/hls/internal/handler/handler_test.go b/cmd/hidden_lake/service/internal/handler/handler_test.go
similarity index 96%
rename from cmd/hls/internal/handler/handler_test.go
rename to cmd/hidden_lake/service/internal/handler/handler_test.go
index 209602df..31b1dd48 100644
--- a/cmd/hls/internal/handler/handler_test.go
+++ b/cmd/hidden_lake/service/internal/handler/handler_test.go
@@ -5,9 +5,9 @@ import (
"os"
"time"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/filesystem"
"github.com/number571/go-peer/pkg/network/anonymity"
diff --git a/cmd/hls/internal/handler/index.go b/cmd/hidden_lake/service/internal/handler/index.go
similarity index 55%
rename from cmd/hls/internal/handler/index.go
rename to cmd/hidden_lake/service/internal/handler/index.go
index 20a8b52d..4d682a70 100644
--- a/cmd/hls/internal/handler/index.go
+++ b/cmd/hidden_lake/service/internal/handler/index.go
@@ -3,8 +3,8 @@ package handler
import (
"net/http"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
func HandleIndexAPI() http.HandlerFunc {
diff --git a/cmd/hls/internal/handler/network_online.go b/cmd/hidden_lake/service/internal/handler/network_online.go
similarity index 93%
rename from cmd/hls/internal/handler/network_online.go
rename to cmd/hidden_lake/service/internal/handler/network_online.go
index f58eb992..37b267b4 100644
--- a/cmd/hls/internal/handler/network_online.go
+++ b/cmd/hidden_lake/service/internal/handler/network_online.go
@@ -6,7 +6,7 @@ import (
"sort"
"strings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/handler/network_online_test.go b/cmd/hidden_lake/service/internal/handler/network_online_test.go
similarity index 91%
rename from cmd/hls/internal/handler/network_online_test.go
rename to cmd/hidden_lake/service/internal/handler/network_online_test.go
index cf8bc89f..3ae87fe5 100644
--- a/cmd/hls/internal/handler/network_online_test.go
+++ b/cmd/hidden_lake/service/internal/handler/network_online_test.go
@@ -6,9 +6,9 @@ import (
"testing"
"time"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/network/anonymity"
diff --git a/cmd/hls/internal/handler/network_push.go b/cmd/hidden_lake/service/internal/handler/network_push.go
similarity index 90%
rename from cmd/hls/internal/handler/network_push.go
rename to cmd/hidden_lake/service/internal/handler/network_push.go
index 81176610..98abada6 100644
--- a/cmd/hls/internal/handler/network_push.go
+++ b/cmd/hidden_lake/service/internal/handler/network_push.go
@@ -4,8 +4,8 @@ import (
"encoding/json"
"net/http"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/network/anonymity"
diff --git a/cmd/hls/internal/handler/network_push_test.go b/cmd/hidden_lake/service/internal/handler/network_push_test.go
similarity index 90%
rename from cmd/hls/internal/handler/network_push_test.go
rename to cmd/hidden_lake/service/internal/handler/network_push_test.go
index 7b5c04e8..b1a20e0c 100644
--- a/cmd/hls/internal/handler/network_push_test.go
+++ b/cmd/hidden_lake/service/internal/handler/network_push_test.go
@@ -7,10 +7,10 @@ import (
"testing"
"time"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- hls_client "github.com/number571/go-peer/cmd/hls/pkg/client"
- "github.com/number571/go-peer/cmd/hls/pkg/request"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ hls_client "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/network/anonymity"
diff --git a/cmd/hls/internal/handler/node_key.go b/cmd/hidden_lake/service/internal/handler/node_key.go
similarity index 85%
rename from cmd/hls/internal/handler/node_key.go
rename to cmd/hidden_lake/service/internal/handler/node_key.go
index 4628fdbd..1360c45d 100644
--- a/cmd/hls/internal/handler/node_key.go
+++ b/cmd/hidden_lake/service/internal/handler/node_key.go
@@ -4,8 +4,8 @@ import (
"encoding/json"
"net/http"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/handler/node_key_test.go b/cmd/hidden_lake/service/internal/handler/node_key_test.go
similarity index 93%
rename from cmd/hls/internal/handler/node_key_test.go
rename to cmd/hidden_lake/service/internal/handler/node_key_test.go
index ca45fb5e..3f55409a 100644
--- a/cmd/hls/internal/handler/node_key_test.go
+++ b/cmd/hidden_lake/service/internal/handler/node_key_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"testing"
- "github.com/number571/go-peer/cmd/hls/pkg/client"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/client"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
testutils "github.com/number571/go-peer/test/_data"
)
diff --git a/cmd/hls/internal/handler/response.go b/cmd/hidden_lake/service/internal/handler/response.go
similarity index 76%
rename from cmd/hls/internal/handler/response.go
rename to cmd/hidden_lake/service/internal/handler/response.go
index 9ca3fc30..cf25f483 100644
--- a/cmd/hls/internal/handler/response.go
+++ b/cmd/hidden_lake/service/internal/handler/response.go
@@ -4,7 +4,7 @@ import (
"encoding/json"
"net/http"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
func response(w http.ResponseWriter, ret int, res string) {
diff --git a/cmd/hls/internal/handler/service_tcp.go b/cmd/hidden_lake/service/internal/handler/service_tcp.go
similarity index 85%
rename from cmd/hls/internal/handler/service_tcp.go
rename to cmd/hidden_lake/service/internal/handler/service_tcp.go
index 7ec5d555..9199247b 100644
--- a/cmd/hls/internal/handler/service_tcp.go
+++ b/cmd/hidden_lake/service/internal/handler/service_tcp.go
@@ -6,9 +6,9 @@ import (
"io"
"net/http"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- "github.com/number571/go-peer/cmd/hls/pkg/request"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/network/anonymity"
)
diff --git a/cmd/hls/internal/handler/service_tcp_test.go b/cmd/hidden_lake/service/internal/handler/service_tcp_test.go
similarity index 92%
rename from cmd/hls/internal/handler/service_tcp_test.go
rename to cmd/hidden_lake/service/internal/handler/service_tcp_test.go
index b1feee74..32cd266f 100644
--- a/cmd/hls/internal/handler/service_tcp_test.go
+++ b/cmd/hidden_lake/service/internal/handler/service_tcp_test.go
@@ -6,9 +6,9 @@ import (
"testing"
"time"
- "github.com/number571/go-peer/cmd/hls/internal/config"
- hls_settings "github.com/number571/go-peer/cmd/hls/internal/settings"
- "github.com/number571/go-peer/cmd/hls/pkg/request"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/internal/config"
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/internal/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
testutils "github.com/number571/go-peer/test/_data"
"github.com/number571/go-peer/pkg/closer"
diff --git a/cmd/hls/internal/settings/init_client.go b/cmd/hidden_lake/service/internal/settings/init_client.go
similarity index 62%
rename from cmd/hls/internal/settings/init_client.go
rename to cmd/hidden_lake/service/internal/settings/init_client.go
index 2d3d0e0e..bfaac278 100644
--- a/cmd/hls/internal/settings/init_client.go
+++ b/cmd/hidden_lake/service/internal/settings/init_client.go
@@ -1,6 +1,7 @@
package settings
import (
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/client"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
)
@@ -8,8 +9,8 @@ import (
func InitClient(privKey asymmetric.IPrivKey) client.IClient {
return client.NewClient(
client.NewSettings(&client.SSettings{
- FWorkSize: CWorkSize,
- FMessageSize: CMessageSize,
+ FWorkSize: pkg_settings.CWorkSize,
+ FMessageSize: pkg_settings.CMessageSize,
}),
privKey,
)
diff --git a/cmd/hls/internal/settings/settings.go b/cmd/hidden_lake/service/internal/settings/settings.go
similarity index 87%
rename from cmd/hls/internal/settings/settings.go
rename to cmd/hidden_lake/service/internal/settings/settings.go
index ff3ed7f8..e4d9e648 100644
--- a/cmd/hls/internal/settings/settings.go
+++ b/cmd/hidden_lake/service/internal/settings/settings.go
@@ -17,8 +17,6 @@ const (
const (
CRetryEnqueue = 2
CWaitTime = time.Minute
- CWorkSize = 20 // bits
- CMessageSize = (2 << 20) // 2MiB
)
const (
diff --git a/cmd/hls/internal/settings/settings_test.go b/cmd/hidden_lake/service/internal/settings/settings_test.go
similarity index 100%
rename from cmd/hls/internal/settings/settings_test.go
rename to cmd/hidden_lake/service/internal/settings/settings_test.go
diff --git a/cmd/hls/pkg/client/builder.go b/cmd/hidden_lake/service/pkg/client/builder.go
similarity index 87%
rename from cmd/hls/pkg/client/builder.go
rename to cmd/hidden_lake/service/pkg/client/builder.go
index b9380329..26896617 100644
--- a/cmd/hls/pkg/client/builder.go
+++ b/cmd/hidden_lake/service/pkg/client/builder.go
@@ -1,8 +1,8 @@
package client
import (
- "github.com/number571/go-peer/cmd/hls/pkg/request"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
)
diff --git a/cmd/hls/pkg/client/client.go b/cmd/hidden_lake/service/pkg/client/client.go
similarity index 96%
rename from cmd/hls/pkg/client/client.go
rename to cmd/hidden_lake/service/pkg/client/client.go
index 36163bbf..fa5f2b2d 100644
--- a/cmd/hls/pkg/client/client.go
+++ b/cmd/hidden_lake/service/pkg/client/client.go
@@ -1,7 +1,7 @@
package client
import (
- "github.com/number571/go-peer/cmd/hls/pkg/request"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
)
diff --git a/cmd/hls/pkg/client/client_test.go b/cmd/hidden_lake/service/pkg/client/client_test.go
similarity index 100%
rename from cmd/hls/pkg/client/client_test.go
rename to cmd/hidden_lake/service/pkg/client/client_test.go
diff --git a/cmd/hls/pkg/client/requester.go b/cmd/hidden_lake/service/pkg/client/requester.go
similarity index 98%
rename from cmd/hls/pkg/client/requester.go
rename to cmd/hidden_lake/service/pkg/client/requester.go
index a026aeac..2d646d4e 100644
--- a/cmd/hls/pkg/client/requester.go
+++ b/cmd/hidden_lake/service/pkg/client/requester.go
@@ -8,7 +8,7 @@ import (
"net/http"
"strings"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/encoding"
)
diff --git a/cmd/hls/pkg/client/types.go b/cmd/hidden_lake/service/pkg/client/types.go
similarity index 90%
rename from cmd/hls/pkg/client/types.go
rename to cmd/hidden_lake/service/pkg/client/types.go
index 17df1983..bcd81206 100644
--- a/cmd/hls/pkg/client/types.go
+++ b/cmd/hidden_lake/service/pkg/client/types.go
@@ -3,8 +3,8 @@ package client
import (
"github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/cmd/hls/pkg/request"
- pkg_settings "github.com/number571/go-peer/cmd/hls/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/request"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
)
type IClient interface {
diff --git a/cmd/hls/pkg/request/request.go b/cmd/hidden_lake/service/pkg/request/request.go
similarity index 100%
rename from cmd/hls/pkg/request/request.go
rename to cmd/hidden_lake/service/pkg/request/request.go
diff --git a/cmd/hls/pkg/request/request_test.go b/cmd/hidden_lake/service/pkg/request/request_test.go
similarity index 100%
rename from cmd/hls/pkg/request/request_test.go
rename to cmd/hidden_lake/service/pkg/request/request_test.go
diff --git a/cmd/hls/pkg/request/types.go b/cmd/hidden_lake/service/pkg/request/types.go
similarity index 100%
rename from cmd/hls/pkg/request/types.go
rename to cmd/hidden_lake/service/pkg/request/types.go
diff --git a/cmd/hls/pkg/settings/settings.go b/cmd/hidden_lake/service/pkg/settings/settings.go
similarity index 87%
rename from cmd/hls/pkg/settings/settings.go
rename to cmd/hidden_lake/service/pkg/settings/settings.go
index fbdfc2dd..c734fa6f 100644
--- a/cmd/hls/pkg/settings/settings.go
+++ b/cmd/hidden_lake/service/pkg/settings/settings.go
@@ -6,7 +6,9 @@ const (
)
const (
- CAKeySize = 4096
+ CAKeySize = 4096
+ CWorkSize = 20 // bits
+ CMessageSize = (2 << 20) // 2MiB
)
const (
diff --git a/cmd/hls/pkg/settings/settings_test.go b/cmd/hidden_lake/service/pkg/settings/settings_test.go
similarity index 100%
rename from cmd/hls/pkg/settings/settings_test.go
rename to cmd/hidden_lake/service/pkg/settings/settings_test.go
diff --git a/cmd/hls/pkg/settings/types.go b/cmd/hidden_lake/service/pkg/settings/types.go
similarity index 100%
rename from cmd/hls/pkg/settings/types.go
rename to cmd/hidden_lake/service/pkg/settings/types.go
diff --git a/cmd/hidden_lake/traffic/.gitignore b/cmd/hidden_lake/traffic/.gitignore
new file mode 100644
index 00000000..924c61cd
--- /dev/null
+++ b/cmd/hidden_lake/traffic/.gitignore
@@ -0,0 +1,4 @@
+hlt
+hlt.db
+hlt.cfg
+!cmd/hlt
diff --git a/cmd/hms/Makefile b/cmd/hidden_lake/traffic/Makefile
similarity index 74%
rename from cmd/hms/Makefile
rename to cmd/hidden_lake/traffic/Makefile
index 3c7ba281..a9c0adcd 100644
--- a/cmd/hms/Makefile
+++ b/cmd/hidden_lake/traffic/Makefile
@@ -3,10 +3,10 @@ GC=go build
.PHONY: default build run test clean
default: build run
build:
- $(GC) -o hms *.go
+ $(GC) -o hlt ./cmd/hlt
run:
- ./hms
+ ./hlt
test:
for i in {1..$(N)}; do go clean -testcache; echo $$i; go test ./...; done
clean:
- rm -rf hms hms.cfg hms.db
+ rm -rf hlt hlt.cfg hlt.db
diff --git a/cmd/hidden_lake/traffic/README.md b/cmd/hidden_lake/traffic/README.md
new file mode 100644
index 00000000..17133ab3
--- /dev/null
+++ b/cmd/hidden_lake/traffic/README.md
@@ -0,0 +1,3 @@
+# HLT
+
+> Hidden Lake Traffic
diff --git a/cmd/hidden_lake/traffic/cmd/hlt/hms_test.go b/cmd/hidden_lake/traffic/cmd/hlt/hms_test.go
new file mode 100644
index 00000000..b42968eb
--- /dev/null
+++ b/cmd/hidden_lake/traffic/cmd/hlt/hms_test.go
@@ -0,0 +1,155 @@
+package main
+
+// const (
+// tcN = 3
+// )
+
+// const (
+// tcPathDB = "hms_test.db"
+// tcPathConfig = "hms_test.cfg"
+// )
+
+// var (
+// tgHost = fmt.Sprintf("http://%s", testutils.TgAddrs[16])
+// )
+
+// func testHmsDefaultInit(dbPath, configPath string) {
+// os.RemoveAll(dbPath)
+
+// gDB = database.NewKeyValueDB(dbPath)
+// gConfig = config.NewConfig(configPath)
+// }
+
+// func TestHMS(t *testing.T) {
+// testHmsDefaultInit(tcPathDB, tcPathConfig)
+// defer func() {
+// gDB.Close()
+// os.RemoveAll(tcPathDB)
+// os.Remove(tcPathConfig)
+// }()
+
+// // server
+// srv := testStartServerHTTP(t)
+// defer srv.Close()
+
+// // client push
+// time.Sleep(200 * time.Millisecond)
+// err := testClientDoPush()
+// if err != nil {
+// t.Error(err)
+// return
+// }
+
+// // client size
+// err = testClientDoSize()
+// if err != nil {
+// t.Error(err)
+// return
+// }
+
+// // client load
+// err = testClientDoLoad()
+// if err != nil {
+// t.Error(err)
+// return
+// }
+// }
+
+// func testStartServerHTTP(t *testing.T) *http.Server {
+// mux := http.NewServeMux()
+
+// mux.HandleFunc("/", indexPage)
+// mux.HandleFunc("/size", sizePage)
+// mux.HandleFunc("/load", loadPage)
+// mux.HandleFunc("/push", pushPage)
+
+// srv := &http.Server{
+// Addr: testutils.TgAddrs[16],
+// Handler: mux,
+// }
+
+// go func() {
+// srv.ListenAndServe()
+// }()
+
+// return srv
+// }
+
+// func testClientDoPush() error {
+// client := testNewClient()
+
+// for i := 0; i < tcN; i++ {
+// err := hmc.NewClient(
+// hmc.NewBuilder(client),
+// hmc.NewRequester(tgHost),
+// ).Push(
+// client.PubKey(),
+// payload.NewPayload(
+// 0x01,
+// []byte(fmt.Sprintf(testutils.TcBodyTemplate, i)),
+// ),
+// )
+// if err != nil {
+// return err
+// }
+// }
+
+// return nil
+// }
+
+// func testClientDoSize() error {
+// client := testNewClient()
+
+// size, err := hmc.NewClient(
+// hmc.NewBuilder(client),
+// hmc.NewRequester(tgHost),
+// ).Size()
+// if err != nil {
+// return err
+// }
+
+// if size != tcN {
+// return fmt.Errorf("num(%d) != tcN(%d)", size, tcN)
+// }
+
+// return nil
+// }
+
+// func testClientDoLoad() error {
+// client := testNewClient()
+
+// for i := 0; i < tcN; i++ {
+// msg, err := hmc.NewClient(
+// hmc.NewBuilder(client),
+// hmc.NewRequester(tgHost),
+// ).Load(uint64(i))
+// if err != nil {
+// return err
+// }
+
+// pubKey, pld, err := client.Decrypt(msg)
+// if err != nil {
+// panic(err)
+// }
+
+// if string(pld.Body()) != fmt.Sprintf(testutils.TcBodyTemplate, i) {
+// return fmt.Errorf("body is not equal")
+// }
+
+// if pubKey.Address().String() != client.PubKey().Address().String() {
+// return fmt.Errorf("public key is not equal")
+// }
+// }
+
+// return nil
+// }
+
+// func testNewClient() client.IClient {
+// return client.NewClient(
+// client.NewSettings(&client.SSettings{
+// FWorkSize: hms_settings.CSizeWork,
+// FMessageSize: hms_settings.CSizePack,
+// }),
+// asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
+// )
+// }
diff --git a/cmd/hidden_lake/traffic/cmd/hlt/init_app.go b/cmd/hidden_lake/traffic/cmd/hlt/init_app.go
new file mode 100644
index 00000000..21a524a5
--- /dev/null
+++ b/cmd/hidden_lake/traffic/cmd/hlt/init_app.go
@@ -0,0 +1,15 @@
+package main
+
+import (
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/app"
+ "github.com/number571/go-peer/pkg/types"
+)
+
+func initApp() (types.IApp, error) {
+ cfg, err := initConfig()
+ if err != nil {
+ return nil, err
+ }
+
+ return app.NewApp(cfg), nil
+}
diff --git a/cmd/hidden_lake/traffic/cmd/hlt/init_config.go b/cmd/hidden_lake/traffic/cmd/hlt/init_config.go
new file mode 100644
index 00000000..d7c33758
--- /dev/null
+++ b/cmd/hidden_lake/traffic/cmd/hlt/init_config.go
@@ -0,0 +1,17 @@
+package main
+
+import (
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/config"
+ hlt_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/settings"
+ "github.com/number571/go-peer/pkg/filesystem"
+)
+
+func initConfig() (config.IConfig, error) {
+ if filesystem.OpenFile(hlt_settings.CPathCFG).IsExist() {
+ return config.LoadConfig(hlt_settings.CPathCFG)
+ }
+ initCfg := &config.SConfig{
+ FAddress: "localhost:9573",
+ }
+ return config.NewConfig(hlt_settings.CPathCFG, initCfg)
+}
diff --git a/cmd/hidden_lake/traffic/cmd/hlt/main.go b/cmd/hidden_lake/traffic/cmd/hlt/main.go
new file mode 100644
index 00000000..ede66a03
--- /dev/null
+++ b/cmd/hidden_lake/traffic/cmd/hlt/main.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "os/signal"
+ "syscall"
+)
+
+func main() {
+ app, err := initApp()
+ if err != nil {
+ panic(err)
+ }
+
+ shutdown := make(chan os.Signal, 1)
+ signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM)
+
+ if err := app.Run(); err != nil {
+ panic(err)
+ }
+ defer app.Close()
+
+ fmt.Println("Service is running...")
+
+ <-shutdown
+ fmt.Println("\nShutting down...")
+}
diff --git a/cmd/hidden_lake/traffic/internal/app/app.go b/cmd/hidden_lake/traffic/internal/app/app.go
new file mode 100644
index 00000000..417c1246
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/app/app.go
@@ -0,0 +1,72 @@
+package app
+
+import (
+ "errors"
+ "net/http"
+ "time"
+
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/database"
+ hlt_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/settings"
+ "github.com/number571/go-peer/pkg/closer"
+ "github.com/number571/go-peer/pkg/types"
+)
+
+const (
+ initStart = 3 * time.Second
+)
+
+var (
+ _ types.IApp = &sApp{}
+)
+
+type sApp struct {
+ fConfig config.IConfig
+ fDatabase database.IKeyValueDB
+ fServiceHTTP *http.Server
+}
+
+func NewApp(
+ cfg config.IConfig,
+) types.IApp {
+ db := database.NewKeyValueDB(
+ hlt_settings.CPathDB,
+ database.NewSettings(&database.SSettings{
+ FLimitMessages: hlt_settings.CLimitMessages,
+ FWorkSize: hls_settings.CWorkSize,
+ }),
+ )
+ return &sApp{
+ fConfig: cfg,
+ fDatabase: db,
+ fServiceHTTP: initServiceHTTP(cfg, db),
+ }
+}
+
+func (app *sApp) Run() error {
+ res := make(chan error)
+
+ go func() {
+ err := app.fServiceHTTP.ListenAndServe()
+ if err != nil && !errors.Is(err, http.ErrServerClosed) {
+ res <- err
+ return
+ }
+ }()
+
+ select {
+ case err := <-res:
+ app.Close()
+ return err
+ case <-time.After(initStart):
+ return nil
+ }
+}
+
+func (app *sApp) Close() error {
+ return closer.CloseAll([]types.ICloser{
+ app.fServiceHTTP,
+ app.fDatabase,
+ })
+}
diff --git a/cmd/hmc/hmc_test.go b/cmd/hidden_lake/traffic/internal/app/app_test.go
similarity index 82%
rename from cmd/hmc/hmc_test.go
rename to cmd/hidden_lake/traffic/internal/app/app_test.go
index c7d5b103..66f9f34a 100644
--- a/cmd/hmc/hmc_test.go
+++ b/cmd/hidden_lake/traffic/internal/app/app_test.go
@@ -1,4 +1,4 @@
-package main
+package app
import "testing"
diff --git a/cmd/hidden_lake/traffic/internal/app/init_service.go b/cmd/hidden_lake/traffic/internal/app/init_service.go
new file mode 100644
index 00000000..cf4411aa
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/app/init_service.go
@@ -0,0 +1,23 @@
+package app
+
+import (
+ "net/http"
+
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/config"
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/database"
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/handler"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+)
+
+func initServiceHTTP(cfg config.IConfig, db database.IKeyValueDB) *http.Server {
+ mux := http.NewServeMux()
+
+ mux.HandleFunc(pkg_settings.CHashesPath, handler.HandleIndexAPI())
+ mux.HandleFunc(pkg_settings.CLoadPath, handler.HandleLoadAPI(db))
+ mux.HandleFunc(pkg_settings.CPushPath, handler.HandlePushAPI(db))
+
+ return &http.Server{
+ Addr: cfg.Address(),
+ Handler: mux,
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/config/config.go b/cmd/hidden_lake/traffic/internal/config/config.go
new file mode 100644
index 00000000..dea82f2d
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/config/config.go
@@ -0,0 +1,54 @@
+package config
+
+import (
+ "fmt"
+
+ "github.com/number571/go-peer/pkg/encoding"
+ "github.com/number571/go-peer/pkg/filesystem"
+)
+
+var (
+ _ IConfig = &SConfig{}
+)
+
+type SConfig struct {
+ FAddress string `json:"address"`
+}
+
+func NewConfig(filepath string, cfg *SConfig) (IConfig, error) {
+ configFile := filesystem.OpenFile(filepath)
+
+ if configFile.IsExist() {
+ return nil, fmt.Errorf("config file '%s' already exist", filepath)
+ }
+
+ if err := configFile.Write(encoding.Serialize(cfg)); err != nil {
+ return nil, err
+ }
+
+ return cfg, nil
+}
+
+func LoadConfig(filepath string) (IConfig, error) {
+ configFile := filesystem.OpenFile(filepath)
+
+ if !configFile.IsExist() {
+ return nil, fmt.Errorf("config file '%s' does not exist", filepath)
+ }
+
+ bytes, err := configFile.Read()
+ if err != nil {
+ return nil, err
+ }
+
+ cfg := new(SConfig)
+ if err := encoding.Deserialize(bytes, cfg); err != nil {
+ return nil, err
+ }
+
+ return cfg, nil
+}
+
+func (cfg *SConfig) Address() string {
+ return cfg.FAddress
+}
diff --git a/cmd/hidden_lake/traffic/internal/config/config_test.go b/cmd/hidden_lake/traffic/internal/config/config_test.go
new file mode 100644
index 00000000..9df2278f
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/config/config_test.go
@@ -0,0 +1,31 @@
+package config
+
+import (
+ "os"
+ "testing"
+)
+
+const (
+ tcConfigFile = "config_test.txt"
+ tcAddress = "test_address"
+)
+
+func testConfigDefaultInit(configPath string) {
+ _, _ = NewConfig(configPath, &SConfig{
+ FAddress: tcAddress,
+ })
+}
+
+func TestConfig(t *testing.T) {
+ testConfigDefaultInit(tcConfigFile)
+ defer os.Remove(tcConfigFile)
+
+ cfg, err := LoadConfig(tcConfigFile)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if cfg.Address() != tcAddress {
+ t.Error("address is invalid")
+ }
+}
diff --git a/cmd/hms/config/types.go b/cmd/hidden_lake/traffic/internal/config/types.go
similarity index 58%
rename from cmd/hms/config/types.go
rename to cmd/hidden_lake/traffic/internal/config/types.go
index bb6acf6a..b6ed472b 100644
--- a/cmd/hms/config/types.go
+++ b/cmd/hidden_lake/traffic/internal/config/types.go
@@ -2,6 +2,4 @@ package config
type IConfig interface {
Address() string
- CleanCron() string
- Connections() []string
}
diff --git a/cmd/hidden_lake/traffic/internal/database/database.go b/cmd/hidden_lake/traffic/internal/database/database.go
new file mode 100644
index 00000000..290a44b1
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/database/database.go
@@ -0,0 +1,139 @@
+package database
+
+import (
+ "fmt"
+ "sync"
+
+ "github.com/number571/go-peer/pkg/client/message"
+ "github.com/number571/go-peer/pkg/crypto/hashing"
+ "github.com/number571/go-peer/pkg/encoding"
+ gp_database "github.com/number571/go-peer/pkg/storage/database"
+)
+
+type sKeyValueDB struct {
+ fMutex sync.Mutex
+ fPointer uint64
+
+ fPath string
+ fSettings ISettings
+ fDB gp_database.IKeyValueDB
+}
+
+func NewKeyValueDB(path string, sett ISettings) IKeyValueDB {
+ levelDB := gp_database.NewLevelDB(
+ gp_database.NewSettings(&gp_database.SSettings{}),
+ path,
+ )
+ if levelDB == nil {
+ panic("storage (hashes) is nil")
+ }
+ db := &sKeyValueDB{
+ fPath: path,
+ fSettings: sett,
+ fDB: levelDB,
+ }
+ db.fPointer = db.getPointer()
+ return db
+}
+
+func (db *sKeyValueDB) Settings() ISettings {
+ return db.fSettings
+}
+
+func (db *sKeyValueDB) Hashes() ([]string, error) {
+ db.fMutex.Lock()
+ defer db.fMutex.Unlock()
+
+ msgsLimit := db.Settings().GetLimitMessages()
+ res := make([]string, 0, msgsLimit)
+ for i := uint64(0); i < msgsLimit; i++ {
+ hash, err := db.fDB.Get(getKeyHash(i))
+ if err != nil {
+ break
+ }
+ if len(hash) != hashing.CSHA256Size {
+ return nil, fmt.Errorf("incorrect hash size")
+ }
+ res = append(res, encoding.HexEncode(hash))
+ }
+
+ return res, nil
+}
+
+func (db *sKeyValueDB) Push(msg message.IMessage) error {
+ db.fMutex.Lock()
+ defer db.fMutex.Unlock()
+
+ // delete old message
+ keyHash := getKeyHash(db.getPointer())
+ if hash, err := db.fDB.Get(keyHash); err == nil {
+ if err := db.fDB.Del(hash); err != nil {
+ return err
+ }
+ }
+
+ // rewrite hash's field
+ hash := msg.Body().Hash()
+ if err := db.fDB.Set(keyHash, hash); err != nil {
+ return err
+ }
+
+ // write message
+ keyMsg := getKeyMessage(hash)
+ if err := db.fDB.Set(keyMsg, msg.Bytes()); err != nil {
+ return err
+ }
+
+ // update pointer
+ if err := db.incPointer(); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (db *sKeyValueDB) Load(strHash string) (message.IMessage, error) {
+ db.fMutex.Lock()
+ defer db.fMutex.Unlock()
+
+ hash := encoding.HexDecode(strHash)
+ if len(hash) != hashing.CSHA256Size {
+ return nil, fmt.Errorf("key size invalid")
+ }
+
+ data, err := db.fDB.Get(getKeyMessage(hash))
+ if err != nil {
+ return nil, fmt.Errorf("message undefined")
+ }
+
+ msg := message.LoadMessage(data, db.fSettings.GetWorkSize())
+ if msg == nil {
+ panic("message is nil")
+ }
+
+ return msg, nil
+}
+
+func (db *sKeyValueDB) Close() error {
+ db.fMutex.Lock()
+ defer db.fMutex.Unlock()
+
+ return db.fDB.Close()
+}
+
+func (db *sKeyValueDB) getPointer() uint64 {
+ data, err := db.fDB.Get(getKeyPointer())
+ if err != nil {
+ return 0
+ }
+
+ res := [encoding.CSizeUint64]byte{}
+ copy(res[:], data)
+ return encoding.BytesToUint64(res)
+}
+
+func (db *sKeyValueDB) incPointer() error {
+ msgsLimit := db.Settings().GetLimitMessages()
+ res := encoding.Uint64ToBytes((db.getPointer() + 1) % msgsLimit)
+ return db.fDB.Set(getKeyPointer(), res[:])
+}
diff --git a/cmd/hidden_lake/traffic/internal/database/database_test.go b/cmd/hidden_lake/traffic/internal/database/database_test.go
new file mode 100644
index 00000000..badfcb12
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/database/database_test.go
@@ -0,0 +1,119 @@
+package database
+
+import (
+ "bytes"
+ "os"
+ "testing"
+
+ "github.com/number571/go-peer/pkg/client"
+ "github.com/number571/go-peer/pkg/crypto/asymmetric"
+ "github.com/number571/go-peer/pkg/encoding"
+ "github.com/number571/go-peer/pkg/payload"
+ testutils "github.com/number571/go-peer/test/_data"
+)
+
+const (
+ tcPathDB = "test.db"
+)
+
+var (
+ tgDB IKeyValueDB
+)
+
+func testHmsDefaultInit(dbPath string) {
+ os.RemoveAll(dbPath)
+ tgDB = NewKeyValueDB(dbPath, NewSettings(&SSettings{}))
+}
+
+func TestDB(t *testing.T) {
+ testHmsDefaultInit(tcPathDB)
+ defer func() {
+ tgDB.Close()
+ os.RemoveAll(tcPathDB)
+ }()
+
+ cl := client.NewClient(
+ client.NewSettings(&client.SSettings{
+ FWorkSize: 10,
+ FMessageSize: (100 << 10),
+ }),
+ asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
+ )
+
+ putHashes := make([]string, 0, 3)
+
+ for i := 0; i < 3; i++ {
+ msg, err := cl.Encrypt(
+ cl.PubKey(),
+ payload.NewPayload(uint64(testutils.TcHead), []byte(testutils.TcBody)),
+ )
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ if err := tgDB.Push(msg); err != nil {
+ t.Error(err)
+ return
+ }
+ putHashes = append(putHashes, encoding.HexEncode(msg.Body().Hash()))
+ }
+
+ getHashes, err := tgDB.Hashes()
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ if len(getHashes) != 3 {
+ t.Error("len getHashes != 3")
+ return
+ }
+
+ for i := range getHashes {
+ if getHashes[i] != putHashes[i] {
+ t.Errorf("getHashes[%d] != putHashes[%d]", i, i)
+ return
+ }
+ }
+
+ for _, getHash := range getHashes {
+ loadMsg, err := tgDB.Load(getHash)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ msgHash := encoding.HexEncode(loadMsg.Body().Hash())
+ if getHash != msgHash {
+ t.Errorf("getHash[%s] != msgHash[%s]", getHash, msgHash)
+ return
+ }
+
+ pubKey, pl, err := cl.Decrypt(loadMsg)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ if pubKey.Address().String() != cl.PubKey().Address().String() {
+ t.Error("load public key != init public key")
+ return
+ }
+
+ if pl.Head() != uint64(testutils.TcHead) {
+ t.Error("load msg head != init head")
+ return
+ }
+
+ if !bytes.Equal(pl.Body(), []byte(testutils.TcBody)) {
+ t.Error("load msg body != init body")
+ return
+ }
+ }
+
+ if err := tgDB.Close(); err != nil {
+ t.Error(err)
+ return
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/database/keys.go b/cmd/hidden_lake/traffic/internal/database/keys.go
new file mode 100644
index 00000000..887970f1
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/database/keys.go
@@ -0,0 +1,21 @@
+package database
+
+import "fmt"
+
+const (
+ cKeyPointer = "database.pointer"
+ cKeyHashTemplate = "database.hashes[%d]"
+ cKeyMessageTemplate = "database.messages[%X]"
+)
+
+func getKeyPointer() []byte {
+ return []byte(cKeyPointer)
+}
+
+func getKeyHash(i uint64) []byte {
+ return []byte(fmt.Sprintf(cKeyHashTemplate, i))
+}
+
+func getKeyMessage(hash []byte) []byte {
+ return []byte(fmt.Sprintf(cKeyMessageTemplate, hash))
+}
diff --git a/cmd/hidden_lake/traffic/internal/database/settings.go b/cmd/hidden_lake/traffic/internal/database/settings.go
new file mode 100644
index 00000000..874ab2b2
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/database/settings.go
@@ -0,0 +1,41 @@
+package database
+
+var (
+ _ ISettings = &sSettings{}
+)
+
+const (
+ cWorkSize = 10
+ cLimitMessages = (1 << 10)
+)
+
+type SSettings sSettings
+type sSettings struct {
+ FLimitMessages uint64
+ FWorkSize uint64
+}
+
+func NewSettings(sett *SSettings) ISettings {
+ return (&sSettings{
+ FWorkSize: sett.FWorkSize,
+ FLimitMessages: sett.FLimitMessages,
+ }).useDefaultValues()
+}
+
+func (s *sSettings) useDefaultValues() ISettings {
+ if s.FWorkSize == 0 {
+ s.FWorkSize = cWorkSize
+ }
+ if s.FLimitMessages == 0 {
+ s.FLimitMessages = cLimitMessages
+ }
+ return s
+}
+
+func (s *sSettings) GetLimitMessages() uint64 {
+ return s.FLimitMessages
+}
+
+func (s *sSettings) GetWorkSize() uint64 {
+ return s.FWorkSize
+}
diff --git a/cmd/hidden_lake/traffic/internal/database/types.go b/cmd/hidden_lake/traffic/internal/database/types.go
new file mode 100644
index 00000000..89fca384
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/database/types.go
@@ -0,0 +1,20 @@
+package database
+
+import (
+ "github.com/number571/go-peer/pkg/client/message"
+ "github.com/number571/go-peer/pkg/types"
+)
+
+type IKeyValueDB interface {
+ Push(message.IMessage) error
+ Load(string) (message.IMessage, error)
+ Hashes() ([]string, error)
+
+ Settings() ISettings
+ types.ICloser
+}
+
+type ISettings interface {
+ GetLimitMessages() uint64
+ GetWorkSize() uint64
+}
diff --git a/cmd/hmc/action/action_test.go b/cmd/hidden_lake/traffic/internal/handler/handler_test.go
similarity index 79%
rename from cmd/hmc/action/action_test.go
rename to cmd/hidden_lake/traffic/internal/handler/handler_test.go
index c355761b..afe9c77c 100644
--- a/cmd/hmc/action/action_test.go
+++ b/cmd/hidden_lake/traffic/internal/handler/handler_test.go
@@ -1,4 +1,4 @@
-package action
+package handler
import "testing"
diff --git a/cmd/hidden_lake/traffic/internal/handler/hashes.go b/cmd/hidden_lake/traffic/internal/handler/hashes.go
new file mode 100644
index 00000000..3f277d19
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/handler/hashes.go
@@ -0,0 +1,26 @@
+package handler
+
+import (
+ "net/http"
+ "strings"
+
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/database"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+)
+
+func HashesPage(db database.IKeyValueDB) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ if r.Method != "GET" {
+ response(w, pkg_settings.CErrorMethod, "failed: incorrect method")
+ return
+ }
+
+ hashes, err := db.Hashes()
+ if err != nil {
+ response(w, pkg_settings.CErrorLoad, "failed: load size")
+ return
+ }
+
+ response(w, pkg_settings.CErrorNone, strings.Join(hashes, ","))
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/handler/index.go b/cmd/hidden_lake/traffic/internal/handler/index.go
new file mode 100644
index 00000000..184b46ea
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/handler/index.go
@@ -0,0 +1,13 @@
+package handler
+
+import (
+ "net/http"
+
+ hlt_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+)
+
+func HandleIndexAPI() http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ response(w, hlt_settings.CErrorNone, hlt_settings.CTitlePattern)
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/handler/load.go b/cmd/hidden_lake/traffic/internal/handler/load.go
new file mode 100644
index 00000000..c9aad50b
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/handler/load.go
@@ -0,0 +1,35 @@
+package handler
+
+import (
+ "encoding/json"
+ "net/http"
+
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/database"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+ "github.com/number571/go-peer/pkg/encoding"
+)
+
+func HandleLoadAPI(db database.IKeyValueDB) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var vRequest pkg_settings.SLoadRequest
+
+ if r.Method != "POST" {
+ response(w, pkg_settings.CErrorMethod, "failed: incorrect method")
+ return
+ }
+
+ err := json.NewDecoder(r.Body).Decode(&vRequest)
+ if err != nil {
+ response(w, pkg_settings.CErrorDecode, "failed: decode request")
+ return
+ }
+
+ msg, err := db.Load(vRequest.FHash)
+ if err != nil {
+ response(w, pkg_settings.CErrorLoad, "failed: load message")
+ return
+ }
+
+ response(w, pkg_settings.CErrorNone, encoding.HexEncode(msg.Bytes()))
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/handler/push.go b/cmd/hidden_lake/traffic/internal/handler/push.go
new file mode 100644
index 00000000..a2bff7d8
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/handler/push.go
@@ -0,0 +1,48 @@
+package handler
+
+import (
+ "encoding/json"
+ "net/http"
+
+ "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/database"
+ hlt_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+ "github.com/number571/go-peer/pkg/client/message"
+ "github.com/number571/go-peer/pkg/encoding"
+)
+
+func HandlePushAPI(db database.IKeyValueDB) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ var vRequest pkg_settings.SPushRequest
+
+ if r.Method != "POST" {
+ response(w, pkg_settings.CErrorMethod, "failed: incorrect method")
+ return
+ }
+
+ err := json.NewDecoder(r.Body).Decode(&vRequest)
+ if err != nil {
+ response(w, pkg_settings.CErrorDecode, "failed: decode request")
+ return
+ }
+
+ if uint64(len(vRequest.FMessage)) > hlt_settings.CMessageSize {
+ response(w, pkg_settings.CErrorPackSize, "failed: incorrect package size")
+ return
+ }
+
+ msg := message.LoadMessage(encoding.HexDecode(vRequest.FMessage), hlt_settings.CWorkSize)
+ if msg == nil {
+ response(w, pkg_settings.CErrorMessage, "failed: decode message")
+ return
+ }
+
+ err = db.Push(msg)
+ if err != nil {
+ response(w, pkg_settings.CErrorPush, "failed: push message")
+ return
+ }
+
+ response(w, pkg_settings.CErrorNone, "success")
+ }
+}
diff --git a/cmd/hidden_lake/traffic/internal/handler/response.go b/cmd/hidden_lake/traffic/internal/handler/response.go
new file mode 100644
index 00000000..b137422e
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/handler/response.go
@@ -0,0 +1,16 @@
+package handler
+
+import (
+ "encoding/json"
+ "net/http"
+
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+)
+
+func response(w http.ResponseWriter, ret int, res string) {
+ w.Header().Set("Content-Type", pkg_settings.CContentType)
+ json.NewEncoder(w).Encode(&pkg_settings.SResponse{
+ FResult: res,
+ FReturn: ret,
+ })
+}
diff --git a/cmd/hidden_lake/traffic/internal/settings/settings.go b/cmd/hidden_lake/traffic/internal/settings/settings.go
new file mode 100644
index 00000000..dfe8fa60
--- /dev/null
+++ b/cmd/hidden_lake/traffic/internal/settings/settings.go
@@ -0,0 +1,16 @@
+package settings
+
+import (
+ hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
+)
+
+const (
+ CPathDB = "hlt.db"
+ CPathCFG = "hlt.cfg"
+)
+
+const (
+ CLimitMessages = (1 << 10)
+ CWorkSize = hls_settings.CWorkSize
+ CMessageSize = hls_settings.CMessageSize
+)
diff --git a/cmd/hmc/settings/settings_test.go b/cmd/hidden_lake/traffic/internal/settings/settings_test.go
similarity index 100%
rename from cmd/hmc/settings/settings_test.go
rename to cmd/hidden_lake/traffic/internal/settings/settings_test.go
diff --git a/cmd/hidden_lake/traffic/pkg/client/builder.go b/cmd/hidden_lake/traffic/pkg/client/builder.go
new file mode 100644
index 00000000..9147ab9a
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/client/builder.go
@@ -0,0 +1,31 @@
+package client
+
+import (
+ "github.com/number571/go-peer/pkg/client/message"
+ "github.com/number571/go-peer/pkg/encoding"
+
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+)
+
+var (
+ _ IBuilder = &sBuilder{}
+)
+
+type sBuilder struct {
+}
+
+func NewBuilder() IBuilder {
+ return &sBuilder{}
+}
+
+func (builder *sBuilder) Load(hash string) *pkg_settings.SLoadRequest {
+ return &pkg_settings.SLoadRequest{
+ FHash: hash,
+ }
+}
+
+func (builder *sBuilder) Push(msg message.IMessage) *pkg_settings.SPushRequest {
+ return &pkg_settings.SPushRequest{
+ FMessage: encoding.HexEncode(msg.Bytes()),
+ }
+}
diff --git a/cmd/hidden_lake/traffic/pkg/client/client.go b/cmd/hidden_lake/traffic/pkg/client/client.go
new file mode 100644
index 00000000..481062ce
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/client/client.go
@@ -0,0 +1,37 @@
+package client
+
+import (
+ "github.com/number571/go-peer/pkg/client/message"
+)
+
+var (
+ _ IClient = &sClient{}
+)
+
+type sClient struct {
+ fBuilder IBuilder
+ fRequester IRequester
+}
+
+func NewClient(builder IBuilder, requester IRequester) IClient {
+ return &sClient{
+ fBuilder: builder,
+ fRequester: requester,
+ }
+}
+
+func (client *sClient) Hashes() ([]string, error) {
+ return client.fRequester.Hashes()
+}
+
+func (client *sClient) Load(hash string) (message.IMessage, error) {
+ msg, err := client.fRequester.Load(client.fBuilder.Load(hash))
+ if err != nil {
+ return nil, err
+ }
+ return msg, nil
+}
+
+func (client *sClient) Push(msg message.IMessage) error {
+ return client.fRequester.Push(client.fBuilder.Push(msg))
+}
diff --git a/cmd/hidden_lake/traffic/pkg/client/client_test.go b/cmd/hidden_lake/traffic/pkg/client/client_test.go
new file mode 100644
index 00000000..29205f29
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/client/client_test.go
@@ -0,0 +1,60 @@
+package client
+
+// func TestBuilder(t *testing.T) {
+// client := client.NewClient(
+// client.NewSettings(&client.SSettings{
+// FWorkSize: 10,
+// FMessageSize: (100 << 10),
+// }),
+// asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
+// )
+
+// hashRecv := client.PubKey().Address().Bytes()
+// builder := NewBuilder(client)
+
+// bSize := builder.Size()
+// if !bytes.Equal(bSize.FReceiver, hashRecv) {
+// t.Error("builder size error (hash receiver)")
+// return
+// }
+
+// bLoad := builder.Load(1)
+// if bLoad.FIndex != 1 || !bytes.Equal(bLoad.FReceiver, hashRecv) {
+// t.Error("builder load error (index, hash receiver)")
+// return
+// }
+
+// pl := payload.NewPayload(uint64(testutils.TcHead), []byte(testutils.TcBody))
+// bPush := builder.Push(client.PubKey(), pl)
+// if !bytes.Equal(bPush.FReceiver, hashRecv) {
+// t.Error("builder push error (hash receiver)")
+// return
+// }
+
+// msg := message.LoadMessage(bPush.FPackage)
+// if msg == nil {
+// t.Error("builder push error (message is nil [1])")
+// return
+// }
+
+// pubKey, pl, err := client.Decrypt(msg)
+// if err != nil {
+// t.Error("builder push error (message is nil [2])")
+// return
+// }
+
+// if pl.Head() != uint64(testutils.TcHead) {
+// t.Error("builder push error (head is not equal)")
+// return
+// }
+
+// if string(pl.Body()) != testutils.TcBody {
+// t.Error("builder push error (body is not equal)")
+// return
+// }
+
+// if pubKey.Address().String() != client.PubKey().Address().String() {
+// t.Error("builder push error (public key is not equal)")
+// return
+// }
+// }
diff --git a/cmd/hidden_lake/traffic/pkg/client/requester.go b/cmd/hidden_lake/traffic/pkg/client/requester.go
new file mode 100644
index 00000000..528cb986
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/client/requester.go
@@ -0,0 +1,94 @@
+package client
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "strings"
+
+ hlt_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/internal/settings"
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+ "github.com/number571/go-peer/pkg/client/message"
+ "github.com/number571/go-peer/pkg/encoding"
+)
+
+var (
+ _ IRequester = &sRequester{}
+)
+
+type sRequester struct {
+ fHost string
+}
+
+func NewRequester(host string) IRequester {
+ return &sRequester{
+ fHost: host,
+ }
+}
+
+func (r *sRequester) Hashes() ([]string, error) {
+ resp, err := http.Get(
+ fmt.Sprintf(pkg_settings.CHashesTemplate, r.fHost),
+ )
+ if err != nil {
+ return nil, err
+ }
+
+ var response pkg_settings.SResponse
+ json.NewDecoder(resp.Body).Decode(&response)
+
+ if response.FReturn != pkg_settings.CErrorNone {
+ return nil, fmt.Errorf("%s", string(response.FResult))
+ }
+
+ return strings.Split(response.FResult, ","), nil
+}
+
+func (r *sRequester) Load(request *pkg_settings.SLoadRequest) (message.IMessage, error) {
+ resp, err := http.Post(
+ fmt.Sprintf(pkg_settings.CLoadTemplate, r.fHost),
+ pkg_settings.CContentType,
+ bytes.NewReader(encoding.Serialize(request)),
+ )
+ if err != nil {
+ return nil, err
+ }
+
+ var response pkg_settings.SResponse
+ json.NewDecoder(resp.Body).Decode(&response)
+
+ if response.FReturn != pkg_settings.CErrorNone {
+ return nil, fmt.Errorf("%s", string(response.FResult))
+ }
+
+ msg := message.LoadMessage(
+ encoding.HexDecode(response.FResult),
+ hlt_settings.CWorkSize,
+ )
+ if msg == nil {
+ return nil, fmt.Errorf("message is nil")
+ }
+
+ return msg, nil
+}
+
+func (r *sRequester) Push(request *pkg_settings.SPushRequest) error {
+ resp, err := http.Post(
+ fmt.Sprintf(pkg_settings.CPushTemplate, r.fHost),
+ pkg_settings.CContentType,
+ bytes.NewReader(encoding.Serialize(request)),
+ )
+ if err != nil {
+ return err
+ }
+
+ var response pkg_settings.SResponse
+ json.NewDecoder(resp.Body).Decode(&response)
+
+ if response.FReturn != pkg_settings.CErrorNone {
+ return fmt.Errorf("%s", string(response.FResult))
+ }
+
+ return nil
+}
diff --git a/cmd/hidden_lake/traffic/pkg/client/types.go b/cmd/hidden_lake/traffic/pkg/client/types.go
new file mode 100644
index 00000000..df0ddbab
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/client/types.go
@@ -0,0 +1,23 @@
+package client
+
+import (
+ pkg_settings "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/settings"
+ "github.com/number571/go-peer/pkg/client/message"
+)
+
+type IClient interface {
+ Hashes() ([]string, error)
+ Load(string) (message.IMessage, error)
+ Push(message.IMessage) error
+}
+
+type IBuilder interface {
+ Load(string) *pkg_settings.SLoadRequest
+ Push(message.IMessage) *pkg_settings.SPushRequest
+}
+
+type IRequester interface {
+ Hashes() ([]string, error)
+ Load(*pkg_settings.SLoadRequest) (message.IMessage, error)
+ Push(*pkg_settings.SPushRequest) error
+}
diff --git a/cmd/hidden_lake/traffic/pkg/settings/settings.go b/cmd/hidden_lake/traffic/pkg/settings/settings.go
new file mode 100644
index 00000000..cb49d684
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/settings/settings.go
@@ -0,0 +1,29 @@
+package settings
+
+const (
+ CTitlePattern = "go-peer/hidden-lake-traffic"
+ CContentType = "application/json"
+)
+
+const (
+ CHashesPath = "/hashes"
+ CLoadPath = "/load"
+ CPushPath = "/push"
+)
+
+const (
+ CHashesTemplate = "%s" + CHashesPath
+ CLoadTemplate = "%s" + CLoadPath
+ CPushTemplate = "%s" + CPushPath
+)
+
+const (
+ CErrorNone = iota + 1
+ CErrorMethod
+ CErrorDecode
+ CErrorLoad
+ CErrorPush
+ CErrorMessage
+ CErrorPackSize
+ CErrorWorkSize
+)
diff --git a/cmd/hms/settings/settings_test.go b/cmd/hidden_lake/traffic/pkg/settings/settings_test.go
similarity index 100%
rename from cmd/hms/settings/settings_test.go
rename to cmd/hidden_lake/traffic/pkg/settings/settings_test.go
diff --git a/cmd/hidden_lake/traffic/pkg/settings/types.go b/cmd/hidden_lake/traffic/pkg/settings/types.go
new file mode 100644
index 00000000..1cb83e39
--- /dev/null
+++ b/cmd/hidden_lake/traffic/pkg/settings/types.go
@@ -0,0 +1,14 @@
+package settings
+
+type SResponse struct {
+ FResult string `json:"result"`
+ FReturn int `json:"return"`
+}
+
+type SLoadRequest struct {
+ FHash string `json:"hash"`
+}
+
+type SPushRequest struct {
+ FMessage string `json:"message"`
+}
diff --git a/cmd/hmc/.gitignore b/cmd/hmc/.gitignore
deleted file mode 100644
index 1c55276b..00000000
--- a/cmd/hmc/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-hmc
diff --git a/cmd/hmc/Makefile b/cmd/hmc/Makefile
deleted file mode 100644
index ea8fd74a..00000000
--- a/cmd/hmc/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-GC=go build
-.PHONY: default build run clean
-default: build run
-build:
- $(GC) -o hmc *.go
-run:
- ./hmc
-clean:
- rm -rf hmc hmc.cfg hmc.stg hmc.db
diff --git a/cmd/hmc/README.md b/cmd/hmc/README.md
deleted file mode 100644
index fe112890..00000000
--- a/cmd/hmc/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# HMC
-
-> Hidden Message Client
diff --git a/cmd/hmc/action/action.go b/cmd/hmc/action/action.go
deleted file mode 100644
index 04da701b..00000000
--- a/cmd/hmc/action/action.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package action
-
-var (
- _ IAction = &sAction{}
-)
-
-type sAction struct {
- fDescription string
- fHandler func()
-}
-
-func NewAction(description string, handler func()) IAction {
- return &sAction{
- fDescription: description,
- fHandler: handler,
- }
-}
-
-func (act *sAction) Description() string {
- return act.fDescription
-}
-
-func (act *sAction) Do() {
- act.fHandler()
-}
diff --git a/cmd/hmc/action/types.go b/cmd/hmc/action/types.go
deleted file mode 100644
index 6821ebf0..00000000
--- a/cmd/hmc/action/types.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package action
-
-type IActions map[string]IAction
-
-type IAction interface {
- Description() string
- Do()
-}
diff --git a/cmd/hmc/actions.go b/cmd/hmc/actions.go
deleted file mode 100644
index 2649e19e..00000000
--- a/cmd/hmc/actions.go
+++ /dev/null
@@ -1,274 +0,0 @@
-package main
-
-import (
- "fmt"
- "math"
- "os"
- "sort"
- "strconv"
- "strings"
- "syscall"
-
- "github.com/number571/go-peer/cmd/hmc/action"
- "github.com/number571/go-peer/cmd/hmc/settings"
- "github.com/number571/go-peer/cmd/hms/hmc"
- "github.com/number571/go-peer/pkg/payload"
-)
-
-func newActions() action.IActions {
- return action.IActions{
- "": action.NewAction(
- "",
- func() {},
- ),
- "exit": action.NewAction(
- "exit from application",
- func() { syscall.Kill(os.Getpid(), syscall.SIGINT) },
- ),
- "help": action.NewAction(
- "get help information about this application",
- helpAction,
- ),
- "whoami": action.NewAction(
- "get information about authorized user",
- whoamiAction,
- ),
- "size": action.NewAction(
- "get count of emails and pages in user database",
- sizeAction,
- ),
- "list": action.NewAction(
- "get list of emails by page (10 emails in 1 page)",
- listAction,
- ),
- "read": action.NewAction(
- "get full information about 1 email by ID",
- readAction,
- ),
- "push": action.NewAction(
- "create new email and push this to servers",
- pushAction,
- ),
- "load": action.NewAction(
- "try load all emails to authorized user from servers",
- loadAction,
- ),
- }
-}
-
-func helpAction() {
- type sActionWithKey struct {
- fKey string
- fAction action.IAction
- }
-
- actions := []*sActionWithKey{}
- for key, act := range gActions {
- actions = append(actions, &sActionWithKey{
- fKey: key,
- fAction: act,
- })
- }
-
- sort.SliceStable(actions, func(i, j int) bool {
- return strings.Compare(actions[i].fKey, actions[j].fKey) < 0
- })
-
- for _, act := range actions {
- switch act.fKey {
- case "":
- continue
- default:
- fmt.Printf("%s:\t%s\n", act.fKey, act.fAction.Description())
- }
- }
-}
-
-func loadAction() {
- // check connections
- for _, addr := range gWrapper.Config().Original().Connections() {
- client := hmc.NewClient(
- hmc.NewBuilder(gClient),
- hmc.NewRequester(addr),
- )
-
- // connect to server
- size, err := client.Size()
- if err != nil {
- fmt.Println(err)
- continue
- }
-
- // infinite loop protection
- if size > settings.CReceiveSize {
- fmt.Println("size of messages > limit")
- continue
- }
-
- // load new emails
- for i := uint64(0); i < size; i++ {
- msg, err := client.Load(i)
- if err != nil {
- break
- }
-
- pubKey, pld, err := gClient.Decrypt(msg)
- if err != nil {
- continue
- }
-
- if gWrapper.Config().Original().F2F() {
- if _, ok := gWrapper.Config().GetNameByPubKey(pubKey); !ok {
- continue
- }
- }
-
- if pld.Head() != settings.CHeadPayload {
- continue
- }
-
- if len(strings.Split(string(pld.Body()), settings.CSeparator)) < 2 {
- continue
- }
-
- err = gDB.Push(gClient.PubKey().Address().Bytes(), msg)
- if err != nil {
- continue
- }
- }
- }
-}
-
-func whoamiAction() {
- fmt.Printf("Address:\n%s;\nPublic Key:\n%s;\n",
- gClient.PubKey().Address().String(),
- gClient.PubKey())
-}
-
-func sizeAction() {
- size, err := gDB.Size(gClient.PubKey().Address().Bytes())
- if err != nil {
- fmt.Println(err)
- return
- }
-
- pages := int(math.Ceil(float64(size) / float64(settings.CCountInPage)))
-
- fmt.Printf("Count: %d\n", size)
- fmt.Printf("Pages: %d\n", pages)
-}
-
-func listAction() {
- page := newInputter("Page: ").String()
- pageInt, err := strconv.Atoi(page)
- if err != nil {
- fmt.Println(err)
- return
- }
-
- start := (pageInt - 1) * settings.CCountInPage
- if start < 0 {
- fmt.Println("Page can't be <= 0")
- return
- }
-
- for pointer := start; pointer < start+settings.CCountInPage; pointer++ {
- msg, err := gDB.Load(gClient.PubKey().Address().Bytes(), uint64(pointer))
- if err != nil {
- break
- }
-
- pubKey, pld, err := gClient.Decrypt(msg)
- if err != nil {
- panic(err)
- }
-
- title := []rune(strings.Split(string(pld.Body()), settings.CSeparator)[0])
- if len(title) > settings.CListLenTitle {
- title = []rune(string(title[:settings.CListLenTitle-3]) + "...")
- }
-
- name, _ := gWrapper.Config().GetNameByPubKey(pubKey)
- fmt.Printf("%s\nID: %d;\nFrom: %s [%s];\nTitle: %s;\n",
- settings.CSeparator,
- pointer,
- pubKey.Address().String(),
- name,
- string(title),
- )
- }
-}
-
-func readAction() {
- id := newInputter("ID: ").String()
- idInt, err := strconv.Atoi(id)
- if err != nil {
- fmt.Println(err)
- return
- }
-
- msg, err := gDB.Load(gClient.PubKey().Address().Bytes(), uint64(idInt))
- if err != nil {
- return
- }
-
- pubKey, pld, err := gClient.Decrypt(msg)
- if err != nil {
- panic(err)
- }
-
- from, _ := gWrapper.Config().GetNameByPubKey(pubKey)
- splited := strings.Split(string(pld.Body()), settings.CSeparator)
-
- fmt.Printf("%s\nFROM:\n%s [%s]\n%s\nTITLE:\n%s\n%s\nMESSAGE:\n%s\n%s\nPUBLIC_KEY:\n%s\n",
- settings.CSeparator,
- pubKey.Address().String(),
- from,
- settings.CSeparator,
- splited[0],
- settings.CSeparator,
- strings.Join(splited[1:], settings.CSeparator),
- settings.CSeparator,
- pubKey.String(),
- )
-}
-
-func pushAction() {
- name := newInputter("Receiver: ").String()
- pubKey, ok := gWrapper.Config().GetPubKeyByName(name)
- if !ok {
- fmt.Println("Receiver's public key undefined")
- return
- }
-
- title := newInputter("Title: ").String()
- if title == "" {
- fmt.Println("Title is nil")
- return
- }
-
- msg := newInputter("Message: ").String()
- if msg == "" {
- fmt.Println("Message is nil")
- return
- }
-
- withoutError := 0
- pushReq := hmc.NewBuilder(gClient).Push(
- pubKey,
- payload.NewPayload(
- settings.CHeadPayload,
- []byte(fmt.Sprintf("%s%s%s", title, settings.CSeparator, msg)),
- ),
- )
- for _, addr := range gWrapper.Config().Original().Connections() {
- err := hmc.NewRequester(addr).Push(pushReq)
- if err != nil {
- fmt.Printf("%s - '%s'\n", addr, err.Error())
- continue
- }
- withoutError++
- }
-
- fmt.Printf("Message successfully sent (%d servers are received)\n", withoutError)
-}
diff --git a/cmd/hmc/config/config.go b/cmd/hmc/config/config.go
deleted file mode 100644
index 41ee147c..00000000
--- a/cmd/hmc/config/config.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package config
-
-import (
- "fmt"
-
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/encoding"
- "github.com/number571/go-peer/pkg/filesystem"
-)
-
-var (
- _ IConfig = &sConfig{}
-)
-
-type sConfig struct {
- FF2F bool `json:"f2f_mode"`
- FConnections []string `json:"connections"`
- FFriends []*sFriend `json:"friends"`
- fFriends []iFriend
-}
-
-type sFriend struct {
- FName string `json:"name"`
- FPubKey string `json:"pub_key"`
- fPubKey asymmetric.IPubKey
-}
-
-const (
- // create local hms
- cDefaultConnection = "http://localhost:8080"
-
- // example of friend's name
- gDefaultName = "default"
-
- // example of friend's public key
- gDefaultPubKey = `Pub(go-peer/rsa){30818902818100C709DA63096CEDBA0DD6B5DD9465B412268C00509757A8EBD9096E17BEEC17C25A3A8F246E1591554CD214F4B27254EFA811F8BE441A03B37B3C8B390484C74C2294A4C895AA925D723E0065A877D4502CC010996863821E7348348E4E96CDD4CB7A852B2E2853C8FDEE556C4F89F6C3295EAC00DAEE86DD94E25F9703F368C70203010001}`
-)
-
-func NewConfig(filepath string) IConfig {
- var cfg = new(sConfig)
-
- if !filesystem.OpenFile(filepath).IsExist() {
- cfg = &sConfig{
- FF2F: false,
- FConnections: []string{cDefaultConnection},
- FFriends: []*sFriend{{
- FName: gDefaultName,
- FPubKey: gDefaultPubKey,
- }},
- }
- err := filesystem.OpenFile(filepath).Write(encoding.Serialize(cfg))
- if err != nil {
- panic(err)
- }
- } else {
- bytes, err := filesystem.OpenFile(filepath).Read()
- if err != nil {
- panic(err)
- }
- err = encoding.Deserialize(bytes, cfg)
- if err != nil {
- panic(err)
- }
- }
-
- for _, val := range cfg.FFriends {
- val.fPubKey = asymmetric.LoadRSAPubKey(val.FPubKey)
- if val.fPubKey == nil {
- panic(fmt.Sprintf("public key is nil: '%s'", val.FName))
- }
- cfg.fFriends = append(cfg.fFriends, val)
- }
-
- return cfg
-}
-
-func (cfg *sConfig) F2F() bool {
- return cfg.FF2F
-}
-
-func (cfg *sConfig) Connections() []string {
- return cfg.FConnections
-}
-
-func (cfg *sConfig) Friends() []iFriend {
- return cfg.fFriends
-}
-
-func (f *sFriend) Name() string {
- return f.FName
-}
-
-func (f *sFriend) PubKey() asymmetric.IPubKey {
- return f.fPubKey
-}
diff --git a/cmd/hmc/config/config_test.go b/cmd/hmc/config/config_test.go
deleted file mode 100644
index 74aa141d..00000000
--- a/cmd/hmc/config/config_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package config
-
-import (
- "os"
- "testing"
-
- "github.com/number571/go-peer/pkg/filesystem"
-)
-
-const (
- tcConfigFile = "config_test.txt"
-)
-
-const (
- tcF2F = true
- tcConnection = "test_connection"
- tcName = "default"
- tcPubKey = "Pub(go-peer/rsa){30818902818100C709DA63096CEDBA0DD6B5DD9465B412268C00509757A8EBD9096E17BEEC17C25A3A8F246E1591554CD214F4B27254EFA811F8BE441A03B37B3C8B390484C74C2294A4C895AA925D723E0065A877D4502CC010996863821E7348348E4E96CDD4CB7A852B2E2853C8FDEE556C4F89F6C3295EAC00DAEE86DD94E25F9703F368C70203010001}"
-)
-
-const (
- tcConfig = `{
- "f2f_mode": true,
- "connections": [
- "test_connection"
- ],
- "friends": [
- {
- "name": "default",
- "pub_key": "Pub(go-peer/rsa){30818902818100C709DA63096CEDBA0DD6B5DD9465B412268C00509757A8EBD9096E17BEEC17C25A3A8F246E1591554CD214F4B27254EFA811F8BE441A03B37B3C8B390484C74C2294A4C895AA925D723E0065A877D4502CC010996863821E7348348E4E96CDD4CB7A852B2E2853C8FDEE556C4F89F6C3295EAC00DAEE86DD94E25F9703F368C70203010001}"
- }
- ]
-}`
-)
-
-func testConfigDefaultInit(configPath string) {
- filesystem.OpenFile(configPath).Write([]byte(tcConfig))
-}
-
-func TestConfig(t *testing.T) {
- testConfigDefaultInit(tcConfigFile)
- defer os.Remove(tcConfigFile)
-
- cfg := NewConfig(tcConfigFile)
-
- if cfg.F2F() != tcF2F {
- t.Error("f2f is invalid")
- }
-
- if cfg.Connections()[0] != tcConnection {
- t.Error("connections is invalid")
- }
-
- if cfg.Friends()[0].Name() != tcName {
- t.Error("name is invalid")
- }
-
- if cfg.Friends()[0].PubKey().String() != tcPubKey {
- t.Error("public key is invalid")
- }
-}
diff --git a/cmd/hmc/config/types.go b/cmd/hmc/config/types.go
deleted file mode 100644
index 34131271..00000000
--- a/cmd/hmc/config/types.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package config
-
-import (
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
-)
-
-type IConfig interface {
- F2F() bool
- Connections() []string
- Friends() []iFriend
-}
-
-type iFriend interface {
- Name() string
- PubKey() asymmetric.IPubKey
-}
diff --git a/cmd/hmc/init.go b/cmd/hmc/init.go
deleted file mode 100644
index 458abcae..00000000
--- a/cmd/hmc/init.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package main
-
-import (
- "fmt"
- "strings"
-
- "github.com/number571/go-peer/cmd/hmc/config"
- "github.com/number571/go-peer/cmd/hmc/settings"
- "github.com/number571/go-peer/pkg/client"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/storage"
-
- hms_database "github.com/number571/go-peer/cmd/hms/database"
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
-)
-
-func hmcDefaultInit() error {
- gWrapper = newWrapper(
- newConfigWrapper(config.NewConfig("hmc.cfg")),
- )
- gDB = hms_database.NewKeyValueDB("hmc.db")
-
- privKey := getPrivKey(
- "hmc.stg",
- []byte(newInputter("Password#Stg: ").Password()),
- []byte(newInputter("Password#Obj: ").Password()),
- )
- if privKey == nil {
- return fmt.Errorf("failed load private key")
- }
-
- gActions = newActions()
- gClient = client.NewClient(
- client.NewSettings(&client.SSettings{
- FWorkSize: hms_settings.CSizeWork,
- FMessageSize: hms_settings.CSizePack,
- }),
- privKey,
- )
-
- return nil
-}
-
-func getPrivKey(filepath string, storageKey, objectKey []byte) asymmetric.IPrivKey {
- // create/open storage
- storage, err := storage.NewCryptoStorage(
- filepath,
- storageKey,
- settings.CWorkSize,
- )
- if err != nil {
- return nil
- }
-
- // get private key
- bpriv, err := storage.Get(objectKey)
- if err == nil {
- return asymmetric.LoadRSAPrivKey(bpriv)
- }
-
- // private key not exist
- answ := newInputter("Private key by password not exist.\nGenerate new? [y/n]: ").String()
- switch strings.ToLower(answ) {
- case "y", "yes":
- // generate private key
- priv := asymmetric.NewRSAPrivKey(settings.CAKeySize)
- err := storage.Set(objectKey, priv.Bytes())
- if err != nil {
- panic(err)
- }
- return priv
- case "n", "no":
- // exit from program
- return nil
- default:
- // undefined answer
- panic("input answer not equal [y/yes, n/no]")
- }
-}
diff --git a/cmd/hmc/inputter.go b/cmd/hmc/inputter.go
deleted file mode 100644
index bf68519c..00000000
--- a/cmd/hmc/inputter.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package main
-
-import (
- "bufio"
- "fmt"
- "os"
- "strings"
- "syscall"
-
- "golang.org/x/term"
-)
-
-var (
- _ iInputter = &sInputter{}
-)
-
-type sInputter struct {
- fBegin string
-}
-
-func newInputter(begin string) iInputter {
- return &sInputter{
- fBegin: begin,
- }
-}
-
-func (inp *sInputter) String() string {
- fmt.Print(inp.fBegin)
-
- msg, err := bufio.NewReader(os.Stdin).ReadString('\n')
- if err != nil {
- panic(err)
- }
-
- return strings.TrimSpace(msg)
-}
-
-func (inp *sInputter) Password() string {
- fmt.Print(inp.fBegin)
-
- bpasw, err := term.ReadPassword(syscall.Stdin)
- if err != nil {
- panic(err)
- }
- fmt.Println()
-
- return strings.TrimSpace(string(bpasw))
-}
diff --git a/cmd/hmc/main.go b/cmd/hmc/main.go
deleted file mode 100644
index 52035ca9..00000000
--- a/cmd/hmc/main.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// made by cryptohomochok
-package main
-
-import (
- "fmt"
- "os"
- "os/signal"
- "syscall"
-
- "github.com/number571/go-peer/pkg/closer"
- "github.com/number571/go-peer/pkg/types"
-)
-
-func main() {
- err := hmcDefaultInit()
- if err != nil {
- panic(err)
- }
-
- shutdown := make(chan os.Signal, 1)
- signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM)
-
- go func() {
- gActions["load"].Do()
- for {
- cmd := newInputter("> ").String()
- f, ok := gActions[cmd]
- if !ok {
- fmt.Println("Undefined command")
- continue
- }
- f.Do()
- }
- }()
-
- <-shutdown
- fmt.Println("Shutting down...")
- closer.CloseAll([]types.ICloser{gDB})
-}
diff --git a/cmd/hmc/settings.go b/cmd/hmc/settings.go
deleted file mode 100644
index 7062a8e7..00000000
--- a/cmd/hmc/settings.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package main
-
-import (
- "github.com/number571/go-peer/cmd/hmc/action"
- hms_database "github.com/number571/go-peer/cmd/hms/database"
- hls_client "github.com/number571/go-peer/pkg/client"
-)
-
-var (
- gActions action.IActions
- gWrapper iWrapper
- gClient hls_client.IClient
- gDB hms_database.IKeyValueDB
-)
diff --git a/cmd/hmc/settings/settings.go b/cmd/hmc/settings/settings.go
deleted file mode 100644
index 28400bcc..00000000
--- a/cmd/hmc/settings/settings.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package settings
-
-const (
- CSeparator = "=============================================="
- CCountInPage = 10 // count of messages in one page
- CWorkSize = 20
- CListLenTitle = 50 // length of title in list
- CAKeySize = 4096 // size of asymmetric key
- CReceiveSize = 8192 // count of messages from server
- CHeadPayload = 0x5710017500000001 // head of payload
-)
diff --git a/cmd/hmc/types.go b/cmd/hmc/types.go
deleted file mode 100644
index a8e6d714..00000000
--- a/cmd/hmc/types.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package main
-
-import (
- "github.com/number571/go-peer/cmd/hmc/config"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
-)
-
-type iWrapper interface {
- Config() iConfigWrapper
-}
-
-type iConfigWrapper interface {
- Original() config.IConfig
- GetNameByPubKey(asymmetric.IPubKey) (string, bool)
- GetPubKeyByName(string) (asymmetric.IPubKey, bool)
-}
-
-type iInputter interface {
- String() string
- Password() string
-}
diff --git a/cmd/hmc/wrapper.go b/cmd/hmc/wrapper.go
deleted file mode 100644
index 44cf4011..00000000
--- a/cmd/hmc/wrapper.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package main
-
-import (
- "github.com/number571/go-peer/cmd/hmc/config"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
-)
-
-var (
- _ iWrapper = &sWrapper{}
- _ iConfigWrapper = &sConfigWrapper{}
-)
-
-// Wrapper
-
-type sWrapper struct {
- fConfig iConfigWrapper
-}
-
-func newWrapper(cfg iConfigWrapper) iWrapper {
- return &sWrapper{
- fConfig: cfg,
- }
-}
-
-func (wrap *sWrapper) Config() iConfigWrapper {
- return wrap.fConfig
-}
-
-// Config wrapper
-
-type sConfigWrapper struct {
- fConfig config.IConfig
-}
-
-func newConfigWrapper(cfg config.IConfig) iConfigWrapper {
- return &sConfigWrapper{
- fConfig: cfg,
- }
-}
-
-func (cfgw *sConfigWrapper) Original() config.IConfig {
- return cfgw.fConfig
-}
-
-func (cfgw *sConfigWrapper) GetNameByPubKey(pubKey asymmetric.IPubKey) (string, bool) {
- for _, friend := range cfgw.fConfig.Friends() {
- if friend.PubKey().Address().String() == pubKey.Address().String() {
- return friend.Name(), true
- }
- }
- return "", false
-}
-
-func (cfgw *sConfigWrapper) GetPubKeyByName(name string) (asymmetric.IPubKey, bool) {
- for _, friend := range cfgw.fConfig.Friends() {
- if friend.Name() == name {
- return friend.PubKey(), true
- }
- }
- return nil, false
-}
diff --git a/cmd/hms/.gitignore b/cmd/hms/.gitignore
deleted file mode 100644
index 3ece6590..00000000
--- a/cmd/hms/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-hms
diff --git a/cmd/hms/README.md b/cmd/hms/README.md
deleted file mode 100644
index c86fa57b..00000000
--- a/cmd/hms/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# HMS
-
-> Hidden Message Service
diff --git a/cmd/hms/config/config.go b/cmd/hms/config/config.go
deleted file mode 100644
index df3a928a..00000000
--- a/cmd/hms/config/config.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package config
-
-import (
- "github.com/number571/go-peer/pkg/encoding"
- "github.com/number571/go-peer/pkg/filesystem"
-)
-
-var (
- _ IConfig = &sConfig{}
-)
-
-type sConfig struct {
- FAddress string `json:"address"`
- FCleanCron string `json:"clean_cron"`
- FConnections []string `json:"connections"`
-}
-
-const (
- // create local hms
- cDefaultAddress = "localhost:8080"
-
- // cron of clean database
- cDefaultCleanCron = "0 0 * * *"
-
- // connection
- cDefaultConnection = "http://localhost:8081"
-)
-
-func NewConfig(filepath string) IConfig {
- var cfg = new(sConfig)
-
- if !filesystem.OpenFile(filepath).IsExist() {
- cfg = &sConfig{
- FAddress: cDefaultAddress,
- FCleanCron: cDefaultCleanCron,
- FConnections: []string{cDefaultConnection},
- }
- err := filesystem.OpenFile(filepath).Write(encoding.Serialize(cfg))
- if err != nil {
- panic(err)
- }
- } else {
- bytes, err := filesystem.OpenFile(filepath).Read()
- if err != nil {
- panic(err)
- }
- err = encoding.Deserialize(bytes, cfg)
- if err != nil {
- panic(err)
- }
- }
-
- return cfg
-}
-
-func (cfg *sConfig) Address() string {
- return cfg.FAddress
-}
-
-func (cfg *sConfig) CleanCron() string {
- return cfg.FCleanCron
-}
-
-func (cfg *sConfig) Connections() []string {
- return cfg.FConnections
-}
diff --git a/cmd/hms/config/config_test.go b/cmd/hms/config/config_test.go
deleted file mode 100644
index 65fb5b04..00000000
--- a/cmd/hms/config/config_test.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package config
-
-import (
- "os"
- "testing"
-
- "github.com/number571/go-peer/pkg/filesystem"
-)
-
-const (
- tcConfigFile = "config_test.txt"
-)
-
-const (
- tcAddress = "test_address"
- tcCleanCron = "0 0 0 0 0"
- tcConnection = "test_connection"
-)
-
-const (
- tcConfig = `{
- "address": "test_address",
- "clean_cron": "0 0 0 0 0",
- "connections": [
- "test_connection"
- ]
-}`
-)
-
-func testConfigDefaultInit(configPath string) {
- filesystem.OpenFile(configPath).Write([]byte(tcConfig))
-}
-
-func TestConfig(t *testing.T) {
- testConfigDefaultInit(tcConfigFile)
- defer os.Remove(tcConfigFile)
-
- cfg := NewConfig(tcConfigFile)
-
- if cfg.Address() != tcAddress {
- t.Error("address is invalid")
- }
-
- if cfg.CleanCron() != tcCleanCron {
- t.Error("clean_cron is invalid")
- }
-
- if cfg.Connections()[0] != tcConnection {
- t.Error("connections is invalid")
- }
-}
diff --git a/cmd/hms/database/database.go b/cmd/hms/database/database.go
deleted file mode 100644
index f160d688..00000000
--- a/cmd/hms/database/database.go
+++ /dev/null
@@ -1,185 +0,0 @@
-package database
-
-import (
- "fmt"
- "os"
- "sync"
-
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/crypto/hashing"
- "github.com/number571/go-peer/pkg/encoding"
- gp_database "github.com/number571/go-peer/pkg/storage/database"
-)
-
-type sStorage struct {
- fPath string
- fDB gp_database.IKeyValueDB
-}
-
-type sKeyValueDB struct {
- fMutex sync.Mutex
- fHashes *sStorage
- fMessages *sStorage
-}
-
-func NewKeyValueDB(path string) IKeyValueDB {
- var (
- hPath = fmt.Sprintf("%s/hashes", path)
- mPath = fmt.Sprintf("%s/messages", path)
- )
- dbHashes := gp_database.NewLevelDB(
- gp_database.NewSettings(&gp_database.SSettings{}),
- hPath,
- )
- if dbHashes == nil {
- panic("storage (hashes) is nil")
- }
- dbMessages := gp_database.NewLevelDB(
- gp_database.NewSettings(&gp_database.SSettings{}),
- mPath,
- )
- if dbMessages == nil {
- panic("storage (messages) is nil")
- }
- return &sKeyValueDB{
- fHashes: &sStorage{
- fPath: hPath,
- fDB: dbHashes,
- },
- fMessages: &sStorage{
- fPath: mPath,
- fDB: dbMessages,
- },
- }
-}
-
-func (db *sKeyValueDB) Size(key []byte) (uint64, error) {
- db.fMutex.Lock()
- defer db.fMutex.Unlock()
-
- if len(key) != hashing.CSHA256Size {
- return 0, fmt.Errorf("key size invalid")
- }
-
- data, err := db.fMessages.fDB.Get(getKeySize(key))
- if err != nil {
- return 0, nil
- }
-
- res := [encoding.CSizeUint64]byte{}
- copy(res[:], data)
- return encoding.BytesToUint64(res), nil
-}
-
-func (db *sKeyValueDB) Push(key []byte, msg message.IMessage) error {
- db.fMutex.Lock()
- defer db.fMutex.Unlock()
-
- if len(key) != hashing.CSHA256Size {
- return fmt.Errorf("key size invalid")
- }
-
- // store hash
- hash := msg.Body().Hash()
- _, err := db.fHashes.fDB.Get(getKeyHash(hash))
- if err == nil {
- return fmt.Errorf("hash already exists")
- }
-
- err = db.fHashes.fDB.Set(getKeyHash(hash), []byte{1})
- if err != nil {
- return err
- }
-
- // update size
- size := uint64(0)
- bnum, err := db.fMessages.fDB.Get(getKeySize(key))
- if err == nil {
- res := [encoding.CSizeUint64]byte{}
- copy(res[:], bnum)
- size = encoding.BytesToUint64(res)
- }
-
- res := encoding.Uint64ToBytes(size + 1)
- err = db.fMessages.fDB.Set(getKeySize(key), res[:])
- if err != nil {
- return err
- }
-
- // push message
- err = db.fMessages.fDB.Set(
- getKeyMessage(key, size),
- msg.Bytes(),
- )
- if err != nil {
- err1 := db.fHashes.fDB.Del(getKeyHash(hash))
- if err1 != nil {
- panic(err)
- }
- err2 := db.fMessages.fDB.Del(getKeySize(key))
- if err2 != nil {
- panic(err)
- }
- return err
- }
-
- return nil
-}
-
-func (db *sKeyValueDB) Load(key []byte, i uint64) (message.IMessage, error) {
- db.fMutex.Lock()
- defer db.fMutex.Unlock()
-
- if len(key) != hashing.CSHA256Size {
- return nil, fmt.Errorf("key size invalid")
- }
-
- data, err := db.fMessages.fDB.Get(getKeyMessage(key, i))
- if err != nil {
- return nil, fmt.Errorf("message undefined")
- }
-
- return message.LoadMessage(data), nil
-}
-
-func (db *sKeyValueDB) Close() error {
- db.fMutex.Lock()
- defer db.fMutex.Unlock()
-
- err := db.fMessages.fDB.Close()
- if err != nil {
- return err
- }
-
- err = db.fHashes.fDB.Close()
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func (db *sKeyValueDB) Clean() error {
- db.fMutex.Lock()
- defer db.fMutex.Unlock()
-
- err := db.fMessages.fDB.Close()
- if err != nil {
- return err
- }
-
- err = os.RemoveAll(db.fMessages.fPath)
- if err != nil {
- return err
- }
-
- db.fMessages.fDB = gp_database.NewLevelDB(
- gp_database.NewSettings(&gp_database.SSettings{}),
- db.fMessages.fPath,
- )
- if db.fMessages.fDB == nil {
- panic("storage is nil")
- }
-
- return nil
-}
diff --git a/cmd/hms/database/database_test.go b/cmd/hms/database/database_test.go
deleted file mode 100644
index 86e5ef49..00000000
--- a/cmd/hms/database/database_test.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package database
-
-import (
- "bytes"
- "os"
- "testing"
-
- "github.com/number571/go-peer/pkg/client"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/crypto/hashing"
- "github.com/number571/go-peer/pkg/payload"
- testutils "github.com/number571/go-peer/test/_data"
-)
-
-const (
- tcPathDB = "test.db"
-)
-
-var (
- tgKey = hashing.NewSHA256Hasher([]byte("test-key")).Bytes()
- tgDB IKeyValueDB
-)
-
-func testHmsDefaultInit(dbPath string) {
- os.RemoveAll(dbPath)
- tgDB = NewKeyValueDB(dbPath)
-}
-
-func TestDB(t *testing.T) {
- testHmsDefaultInit(tcPathDB)
- defer func() {
- tgDB.Close()
- os.RemoveAll(tcPathDB)
- }()
-
- size, err := tgDB.Size(tgKey)
- if err != nil {
- t.Error(err)
- return
- }
- if size != 0 {
- t.Error("init size != 0")
- return
- }
-
- cl := client.NewClient(
- client.NewSettings(&client.SSettings{
- FWorkSize: 10,
- FMessageSize: (100 << 10),
- }),
- asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
- )
-
- msg, err := cl.Encrypt(
- cl.PubKey(),
- payload.NewPayload(uint64(testutils.TcHead), []byte(testutils.TcBody)),
- )
- if err != nil {
- t.Error(err)
- return
- }
-
- err = tgDB.Push(tgKey, msg)
- if err != nil {
- t.Error(err)
- return
- }
-
- size, err = tgDB.Size(tgKey)
- if err != nil {
- t.Error(err)
- return
- }
- if size != 1 {
- t.Error("after push size != 1")
- return
- }
-
- loadMsg, err := tgDB.Load(tgKey, 0)
- if err != nil {
- t.Error(err)
- return
- }
-
- pubKey, pl, err := cl.Decrypt(loadMsg)
- if err != nil {
- t.Error(err)
- return
- }
-
- if pubKey.Address().String() != cl.PubKey().Address().String() {
- t.Error("load public key != init public key")
- return
- }
-
- if pl.Head() != uint64(testutils.TcHead) {
- t.Error("load msg head != init head")
- return
- }
-
- if !bytes.Equal(pl.Body(), []byte(testutils.TcBody)) {
- t.Error("load msg body != init body")
- return
- }
-
- err = tgDB.Clean()
- if err != nil {
- t.Error(err)
- return
- }
-
- size, err = tgDB.Size(tgKey)
- if err != nil {
- t.Error(err)
- return
- }
- if size != 0 {
- t.Error("after clean size != 0")
- return
- }
-
- err = tgDB.Close()
- if err != nil {
- t.Error(err)
- return
- }
-}
diff --git a/cmd/hms/database/keys.go b/cmd/hms/database/keys.go
deleted file mode 100644
index d0ca6fb3..00000000
--- a/cmd/hms/database/keys.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package database
-
-import "fmt"
-
-const (
- cKeySizeTemplate = "database.users[%X].size"
- cKeyMessageTemplate = "database.users[%X].messages[%d]"
- cKeyHashTemplate = "database.hashes[%X]"
-)
-
-func getKeySize(key []byte) []byte {
- return []byte(fmt.Sprintf(cKeySizeTemplate, key))
-}
-
-func getKeyMessage(key []byte, i uint64) []byte {
- return []byte(fmt.Sprintf(cKeyMessageTemplate, key, i))
-}
-
-func getKeyHash(key []byte) []byte {
- return []byte(fmt.Sprintf(cKeyHashTemplate, key))
-}
diff --git a/cmd/hms/database/types.go b/cmd/hms/database/types.go
deleted file mode 100644
index cf9d2334..00000000
--- a/cmd/hms/database/types.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package database
-
-import (
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/types"
-)
-
-type IKeyValueDB interface {
- Size([]byte) (uint64, error)
- Push([]byte, message.IMessage) error
- Load([]byte, uint64) (message.IMessage, error)
-
- Clean() error
- types.ICloser
-}
diff --git a/cmd/hms/hmc/builder.go b/cmd/hms/hmc/builder.go
deleted file mode 100644
index 89c8c2ac..00000000
--- a/cmd/hms/hmc/builder.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package hmc
-
-import (
- "github.com/number571/go-peer/pkg/client"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/payload"
-
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
-)
-
-var (
- _ IBuilder = &sBuilder{}
-)
-
-type sBuilder struct {
- fClient client.IClient
-}
-
-func NewBuilder(client client.IClient) IBuilder {
- return &sBuilder{
- fClient: client,
- }
-}
-
-func (builder *sBuilder) Size() *hms_settings.SSizeRequest {
- return &hms_settings.SSizeRequest{
- FReceiver: builder.fClient.PubKey().Address().Bytes(),
- }
-}
-
-func (builder *sBuilder) Load(n uint64) *hms_settings.SLoadRequest {
- return &hms_settings.SLoadRequest{
- FReceiver: builder.fClient.PubKey().Address().Bytes(),
- FIndex: n,
- }
-}
-
-func (builder *sBuilder) Push(receiver asymmetric.IPubKey, pl payload.IPayload) *hms_settings.SPushRequest {
- encMsg, err := builder.fClient.Encrypt(builder.fClient.PubKey(), pl)
- if err != nil {
- panic(err)
- }
-
- return &hms_settings.SPushRequest{
- FReceiver: builder.fClient.PubKey().Address().Bytes(),
- FPackage: encMsg.Bytes(),
- }
-}
diff --git a/cmd/hms/hmc/client.go b/cmd/hms/hmc/client.go
deleted file mode 100644
index c75c4fbf..00000000
--- a/cmd/hms/hmc/client.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package hmc
-
-import (
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/payload"
-)
-
-var (
- _ IClient = &sClient{}
-)
-
-type sClient struct {
- fBuilder IBuilder
- fRequester IRequester
-}
-
-func NewClient(builder IBuilder, requester IRequester) IClient {
- return &sClient{
- fBuilder: builder,
- fRequester: requester,
- }
-}
-
-func (client *sClient) Size() (uint64, error) {
- return client.fRequester.Size(client.fBuilder.Size())
-}
-
-func (client *sClient) Load(i uint64) (message.IMessage, error) {
- msg, err := client.fRequester.Load(client.fBuilder.Load(i))
- if err != nil {
- return nil, err
- }
- return msg, nil
-}
-
-func (client *sClient) Push(recv asymmetric.IPubKey, pl payload.IPayload) error {
- return client.fRequester.Push(client.fBuilder.Push(recv, pl))
-}
diff --git a/cmd/hms/hmc/hmc_test.go b/cmd/hms/hmc/hmc_test.go
deleted file mode 100644
index 9bbb332e..00000000
--- a/cmd/hms/hmc/hmc_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package hmc
-
-import (
- "bytes"
- "testing"
-
- "github.com/number571/go-peer/pkg/client"
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/payload"
- testutils "github.com/number571/go-peer/test/_data"
-)
-
-func TestBuilder(t *testing.T) {
- client := client.NewClient(
- client.NewSettings(&client.SSettings{
- FWorkSize: 10,
- FMessageSize: (100 << 10),
- }),
- asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
- )
-
- hashRecv := client.PubKey().Address().Bytes()
- builder := NewBuilder(client)
-
- bSize := builder.Size()
- if !bytes.Equal(bSize.FReceiver, hashRecv) {
- t.Error("builder size error (hash receiver)")
- return
- }
-
- bLoad := builder.Load(1)
- if bLoad.FIndex != 1 || !bytes.Equal(bLoad.FReceiver, hashRecv) {
- t.Error("builder load error (index, hash receiver)")
- return
- }
-
- pl := payload.NewPayload(uint64(testutils.TcHead), []byte(testutils.TcBody))
- bPush := builder.Push(client.PubKey(), pl)
- if !bytes.Equal(bPush.FReceiver, hashRecv) {
- t.Error("builder push error (hash receiver)")
- return
- }
-
- msg := message.LoadMessage(bPush.FPackage)
- if msg == nil {
- t.Error("builder push error (message is nil [1])")
- return
- }
-
- pubKey, pl, err := client.Decrypt(msg)
- if err != nil {
- t.Error("builder push error (message is nil [2])")
- return
- }
-
- if pl.Head() != uint64(testutils.TcHead) {
- t.Error("builder push error (head is not equal)")
- return
- }
-
- if string(pl.Body()) != testutils.TcBody {
- t.Error("builder push error (body is not equal)")
- return
- }
-
- if pubKey.Address().String() != client.PubKey().Address().String() {
- t.Error("builder push error (public key is not equal)")
- return
- }
-}
diff --git a/cmd/hms/hmc/requester.go b/cmd/hms/hmc/requester.go
deleted file mode 100644
index 8e6ffcba..00000000
--- a/cmd/hms/hmc/requester.go
+++ /dev/null
@@ -1,92 +0,0 @@
-package hmc
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "net/http"
-
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/encoding"
-)
-
-var (
- _ IRequester = &sRequester{}
-)
-
-type sRequester struct {
- fHost string
-}
-
-func NewRequester(host string) IRequester {
- return &sRequester{
- fHost: host,
- }
-}
-
-func (r *sRequester) Size(request *hms_settings.SSizeRequest) (uint64, error) {
- resp, err := http.Post(
- fmt.Sprintf(hms_settings.CSizeTemplate, r.fHost),
- hms_settings.CContentType,
- bytes.NewReader(encoding.Serialize(request)),
- )
- if err != nil {
- return 0, err
- }
-
- var response hms_settings.SResponse
- json.NewDecoder(resp.Body).Decode(&response)
-
- if response.FReturn != hms_settings.CErrorNone {
- return 0, fmt.Errorf("%s", string(response.FResult))
- }
-
- res := [encoding.CSizeUint64]byte{}
- copy(res[:], response.FResult)
- return encoding.BytesToUint64(res), nil
-}
-
-func (r *sRequester) Load(request *hms_settings.SLoadRequest) (message.IMessage, error) {
- resp, err := http.Post(
- fmt.Sprintf(hms_settings.CLoadTemplate, r.fHost),
- hms_settings.CContentType,
- bytes.NewReader(encoding.Serialize(request)),
- )
- if err != nil {
- return nil, err
- }
-
- var response hms_settings.SResponse
- json.NewDecoder(resp.Body).Decode(&response)
-
- if response.FReturn != hms_settings.CErrorNone {
- return nil, fmt.Errorf("%s", string(response.FResult))
- }
-
- msg := message.LoadMessage(response.FResult)
- if msg == nil {
- return nil, fmt.Errorf("message is nil")
- }
-
- return msg, nil
-}
-
-func (r *sRequester) Push(request *hms_settings.SPushRequest) error {
- resp, err := http.Post(
- fmt.Sprintf(hms_settings.CPushTemplate, r.fHost),
- hms_settings.CContentType,
- bytes.NewReader(encoding.Serialize(request)),
- )
- if err != nil {
- return err
- }
- var response hms_settings.SResponse
- json.NewDecoder(resp.Body).Decode(&response)
-
- if response.FReturn != hms_settings.CErrorNone {
- return fmt.Errorf("%s", string(response.FResult))
- }
-
- return nil
-}
diff --git a/cmd/hms/hmc/types.go b/cmd/hms/hmc/types.go
deleted file mode 100644
index 4e08faf5..00000000
--- a/cmd/hms/hmc/types.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package hmc
-
-import (
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/payload"
-)
-
-type IClient interface {
- Size() (uint64, error)
- Load(uint64) (message.IMessage, error)
- Push(asymmetric.IPubKey, payload.IPayload) error
-}
-
-type IBuilder interface {
- Size() *hms_settings.SSizeRequest
- Load(uint64) *hms_settings.SLoadRequest
- Push(asymmetric.IPubKey, payload.IPayload) *hms_settings.SPushRequest
-}
-
-type IRequester interface {
- Size(*hms_settings.SSizeRequest) (uint64, error)
- Load(*hms_settings.SLoadRequest) (message.IMessage, error)
- Push(*hms_settings.SPushRequest) error
-}
diff --git a/cmd/hms/hms_test.go b/cmd/hms/hms_test.go
deleted file mode 100644
index 4db364f3..00000000
--- a/cmd/hms/hms_test.go
+++ /dev/null
@@ -1,172 +0,0 @@
-package main
-
-import (
- "fmt"
- "net/http"
- "os"
- "testing"
- "time"
-
- "github.com/number571/go-peer/cmd/hms/config"
- "github.com/number571/go-peer/cmd/hms/database"
- "github.com/number571/go-peer/cmd/hms/hmc"
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
- "github.com/number571/go-peer/pkg/client"
- "github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/payload"
- testutils "github.com/number571/go-peer/test/_data"
-)
-
-const (
- tcN = 3
-)
-
-const (
- tcPathDB = "hms_test.db"
- tcPathConfig = "hms_test.cfg"
-)
-
-var (
- tgHost = fmt.Sprintf("http://%s", testutils.TgAddrs[16])
-)
-
-func testHmsDefaultInit(dbPath, configPath string) {
- os.RemoveAll(dbPath)
-
- gDB = database.NewKeyValueDB(dbPath)
- gConfig = config.NewConfig(configPath)
-}
-
-func TestHMS(t *testing.T) {
- testHmsDefaultInit(tcPathDB, tcPathConfig)
- defer func() {
- gDB.Close()
- os.RemoveAll(tcPathDB)
- os.Remove(tcPathConfig)
- }()
-
- // server
- srv := testStartServerHTTP(t)
- defer srv.Close()
-
- // client push
- time.Sleep(200 * time.Millisecond)
- err := testClientDoPush()
- if err != nil {
- t.Error(err)
- return
- }
-
- // client size
- err = testClientDoSize()
- if err != nil {
- t.Error(err)
- return
- }
-
- // client load
- err = testClientDoLoad()
- if err != nil {
- t.Error(err)
- return
- }
-}
-
-func testStartServerHTTP(t *testing.T) *http.Server {
- mux := http.NewServeMux()
-
- mux.HandleFunc("/", indexPage)
- mux.HandleFunc("/size", sizePage)
- mux.HandleFunc("/load", loadPage)
- mux.HandleFunc("/push", pushPage)
-
- srv := &http.Server{
- Addr: testutils.TgAddrs[16],
- Handler: mux,
- }
-
- go func() {
- srv.ListenAndServe()
- }()
-
- return srv
-}
-
-func testClientDoPush() error {
- client := testNewClient()
-
- for i := 0; i < tcN; i++ {
- err := hmc.NewClient(
- hmc.NewBuilder(client),
- hmc.NewRequester(tgHost),
- ).Push(
- client.PubKey(),
- payload.NewPayload(
- 0x01,
- []byte(fmt.Sprintf(testutils.TcBodyTemplate, i)),
- ),
- )
- if err != nil {
- return err
- }
- }
-
- return nil
-}
-
-func testClientDoSize() error {
- client := testNewClient()
-
- size, err := hmc.NewClient(
- hmc.NewBuilder(client),
- hmc.NewRequester(tgHost),
- ).Size()
- if err != nil {
- return err
- }
-
- if size != tcN {
- return fmt.Errorf("num(%d) != tcN(%d)", size, tcN)
- }
-
- return nil
-}
-
-func testClientDoLoad() error {
- client := testNewClient()
-
- for i := 0; i < tcN; i++ {
- msg, err := hmc.NewClient(
- hmc.NewBuilder(client),
- hmc.NewRequester(tgHost),
- ).Load(uint64(i))
- if err != nil {
- return err
- }
-
- pubKey, pld, err := client.Decrypt(msg)
- if err != nil {
- panic(err)
- }
-
- if string(pld.Body()) != fmt.Sprintf(testutils.TcBodyTemplate, i) {
- return fmt.Errorf("body is not equal")
- }
-
- if pubKey.Address().String() != client.PubKey().Address().String() {
- return fmt.Errorf("public key is not equal")
- }
- }
-
- return nil
-}
-
-func testNewClient() client.IClient {
- return client.NewClient(
- client.NewSettings(&client.SSettings{
- FWorkSize: hms_settings.CSizeWork,
- FMessageSize: hms_settings.CSizePack,
- }),
- asymmetric.LoadRSAPrivKey(testutils.TcPrivKey),
- )
-}
diff --git a/cmd/hms/init.go b/cmd/hms/init.go
deleted file mode 100644
index 935231a6..00000000
--- a/cmd/hms/init.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package main
-
-import (
- "flag"
- "fmt"
- "os"
- "time"
-
- "github.com/number571/go-peer/cmd/hms/config"
- "github.com/number571/go-peer/cmd/hms/database"
- "github.com/robfig/cron/v3"
-)
-
-func hmsDefaultInit() error {
- var (
- initOnly bool
- )
-
- flag.BoolVar(&initOnly, "init", false, "run initialization only")
- flag.Parse()
-
- gConfig = config.NewConfig("hms.cfg")
- gDB = database.NewKeyValueDB("hms.db")
-
- jakartaTime, err := time.LoadLocation("Asia/Jakarta")
- if err != nil {
- return err
- }
-
- scheduler := cron.New(cron.WithLocation(jakartaTime))
- scheduler.AddFunc(gConfig.CleanCron(), func() {
- gDB.Clean()
- })
-
- if initOnly {
- os.Exit(0)
- }
-
- fmt.Printf("Service is listening [%s]...\n", gConfig.Address())
- return nil
-}
diff --git a/cmd/hms/main.go b/cmd/hms/main.go
deleted file mode 100644
index 72a7a1f8..00000000
--- a/cmd/hms/main.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// HMS - Hidden Message Service
-package main
-
-import (
- "fmt"
- "net/http"
- "os"
- "os/signal"
- "syscall"
-
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
- "github.com/number571/go-peer/pkg/closer"
- "github.com/number571/go-peer/pkg/types"
-)
-
-func main() {
- err := hmsDefaultInit()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- shutdown := make(chan os.Signal, 1)
- signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM)
-
- mux := http.NewServeMux()
-
- mux.HandleFunc("/", indexPage)
- mux.HandleFunc(hms_settings.CSizePath, sizePage)
- mux.HandleFunc(hms_settings.CLoadPath, loadPage)
- mux.HandleFunc(hms_settings.CPushSize, pushPage)
-
- srv := &http.Server{
- Addr: gConfig.Address(),
- Handler: mux,
- }
-
- go func() {
- err := srv.ListenAndServe()
- if err != nil {
- fmt.Println(err)
- }
- }()
-
- <-shutdown
- fmt.Println("Shutting down...")
- closer.CloseAll([]types.ICloser{srv, gDB})
-}
diff --git a/cmd/hms/pages.go b/cmd/hms/pages.go
deleted file mode 100644
index 6f19ea31..00000000
--- a/cmd/hms/pages.go
+++ /dev/null
@@ -1,117 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "net/http"
-
- "github.com/number571/go-peer/cmd/hms/hmc"
- hms_settings "github.com/number571/go-peer/cmd/hms/settings"
- "github.com/number571/go-peer/pkg/client/message"
- "github.com/number571/go-peer/pkg/crypto/puzzle"
- "github.com/number571/go-peer/pkg/encoding"
-)
-
-func indexPage(w http.ResponseWriter, r *http.Request) {
- response(w, hms_settings.CErrorNone, []byte(hms_settings.CTitlePattern))
-}
-
-func sizePage(w http.ResponseWriter, r *http.Request) {
- var vRequest hms_settings.SSizeRequest
-
- if r.Method != "POST" {
- response(w, hms_settings.CErrorMethod, []byte("failed: incorrect method"))
- return
- }
-
- err := json.NewDecoder(r.Body).Decode(&vRequest)
- if err != nil {
- response(w, hms_settings.CErrorDecode, []byte("failed: decode request"))
- return
- }
-
- size, err := gDB.Size(vRequest.FReceiver)
- if err != nil {
- response(w, hms_settings.CErrorLoad, []byte("failed: load size"))
- return
- }
-
- res := encoding.Uint64ToBytes(size)
- response(w, hms_settings.CErrorNone, res[:])
-}
-
-func loadPage(w http.ResponseWriter, r *http.Request) {
- var vRequest hms_settings.SLoadRequest
-
- if r.Method != "POST" {
- response(w, hms_settings.CErrorMethod, []byte("failed: incorrect method"))
- return
- }
-
- err := json.NewDecoder(r.Body).Decode(&vRequest)
- if err != nil {
- response(w, hms_settings.CErrorDecode, []byte("failed: decode request"))
- return
- }
-
- msg, err := gDB.Load(vRequest.FReceiver, vRequest.FIndex)
- if err != nil {
- response(w, hms_settings.CErrorLoad, []byte("failed: load message"))
- return
- }
-
- response(w, hms_settings.CErrorNone, msg.Bytes())
-}
-
-func pushPage(w http.ResponseWriter, r *http.Request) {
- var vRequest hms_settings.SPushRequest
-
- if r.Method != "POST" {
- response(w, hms_settings.CErrorMethod, []byte("failed: incorrect method"))
- return
- }
-
- err := json.NewDecoder(r.Body).Decode(&vRequest)
- if err != nil {
- response(w, hms_settings.CErrorDecode, []byte("failed: decode request"))
- return
- }
-
- if uint64(len(vRequest.FPackage)) > hms_settings.CSizePack {
- response(w, hms_settings.CErrorPackSize, []byte("failed: incorrect package size"))
- return
- }
-
- msg := message.LoadMessage(vRequest.FPackage)
- if msg == nil {
- response(w, hms_settings.CErrorMessage, []byte("failed: decode message"))
- return
- }
-
- puzzle := puzzle.NewPoWPuzzle(hms_settings.CSizeWork)
- if !puzzle.Verify(msg.Body().Hash(), msg.Body().Proof()) {
- response(w, hms_settings.CErrorWorkSize, []byte("failed: incorrect work size"))
- return
- }
-
- err = gDB.Push(vRequest.FReceiver, msg)
- if err != nil {
- response(w, hms_settings.CErrorPush, []byte("failed: push message"))
- return
- }
-
- go func() {
- for _, host := range gConfig.Connections() {
- hmc.NewRequester(host).Push(&vRequest)
- }
- }()
-
- response(w, hms_settings.CErrorNone, []byte("success"))
-}
-
-func response(w http.ResponseWriter, ret int, res []byte) {
- w.Header().Set("Content-Type", hms_settings.CContentType)
- json.NewEncoder(w).Encode(&hms_settings.SResponse{
- FResult: res,
- FReturn: ret,
- })
-}
diff --git a/cmd/hms/settings.go b/cmd/hms/settings.go
deleted file mode 100644
index d490ae43..00000000
--- a/cmd/hms/settings.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package main
-
-import (
- "github.com/number571/go-peer/cmd/hms/config"
- "github.com/number571/go-peer/cmd/hms/database"
-)
-
-var (
- gConfig config.IConfig
- gDB database.IKeyValueDB
-)
diff --git a/cmd/hms/settings/settings.go b/cmd/hms/settings/settings.go
deleted file mode 100644
index 522ecc32..00000000
--- a/cmd/hms/settings/settings.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package settings
-
-const (
- CTitlePattern = "go-peer/hidden-message-service"
- CContentType = "application/json"
-)
-
-const (
- CSizePath = "/size"
- CLoadPath = "/load"
- CPushSize = "/push"
-)
-
-const (
- CSizeTemplate = "%s" + CSizePath
- CLoadTemplate = "%s" + CLoadPath
- CPushTemplate = "%s" + CPushSize
-)
-
-const (
- CSizeWork = 20 // bits
- CSizePack = (8 << 20) // 8MiB
-)
-
-const (
- CErrorNone = iota + 1
- CErrorMethod
- CErrorDecode
- CErrorLoad
- CErrorPush
- CErrorMessage
- CErrorPackSize
- CErrorWorkSize
-)
diff --git a/cmd/hms/settings/types.go b/cmd/hms/settings/types.go
deleted file mode 100644
index 75509830..00000000
--- a/cmd/hms/settings/types.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package settings
-
-type SResponse struct {
- FResult []byte `json:"result"`
- FReturn int `json:"return"`
-}
-
-type SSizeRequest struct {
- FReceiver []byte `json:"receiver"`
-}
-
-type SLoadRequest struct {
- FReceiver []byte `json:"receiver"`
- FIndex uint64 `json:"index"`
-}
-
-type SPushRequest struct {
- FReceiver []byte `json:"receiver"`
- FPackage []byte `json:"package"`
-}
diff --git a/cmd/akg/.gitignore b/cmd/tools/akg/.gitignore
similarity index 100%
rename from cmd/akg/.gitignore
rename to cmd/tools/akg/.gitignore
diff --git a/cmd/akg/Makefile b/cmd/tools/akg/Makefile
similarity index 100%
rename from cmd/akg/Makefile
rename to cmd/tools/akg/Makefile
diff --git a/cmd/akg/README.md b/cmd/tools/akg/README.md
similarity index 100%
rename from cmd/akg/README.md
rename to cmd/tools/akg/README.md
diff --git a/cmd/akg/akg_test.go b/cmd/tools/akg/akg_test.go
similarity index 100%
rename from cmd/akg/akg_test.go
rename to cmd/tools/akg/akg_test.go
diff --git a/cmd/akg/main.go b/cmd/tools/akg/main.go
similarity index 100%
rename from cmd/akg/main.go
rename to cmd/tools/akg/main.go
diff --git a/cmd/cds/.gitignore b/cmd/tools/cds/.gitignore
similarity index 100%
rename from cmd/cds/.gitignore
rename to cmd/tools/cds/.gitignore
diff --git a/cmd/cds/Makefile b/cmd/tools/cds/Makefile
similarity index 100%
rename from cmd/cds/Makefile
rename to cmd/tools/cds/Makefile
diff --git a/cmd/cds/README.md b/cmd/tools/cds/README.md
similarity index 100%
rename from cmd/cds/README.md
rename to cmd/tools/cds/README.md
diff --git a/cmd/cds/cds_test.go b/cmd/tools/cds/cds_test.go
similarity index 100%
rename from cmd/cds/cds_test.go
rename to cmd/tools/cds/cds_test.go
diff --git a/cmd/cds/data.txt b/cmd/tools/cds/data.txt
similarity index 100%
rename from cmd/cds/data.txt
rename to cmd/tools/cds/data.txt
diff --git a/cmd/cds/main.go b/cmd/tools/cds/main.go
similarity index 100%
rename from cmd/cds/main.go
rename to cmd/tools/cds/main.go
diff --git a/cmd/cds/password.txt b/cmd/tools/cds/password.txt
similarity index 100%
rename from cmd/cds/password.txt
rename to cmd/tools/cds/password.txt
diff --git a/docs/abstract_anonymous_networks.docx b/docs/abstract_anonymous_networks.docx
index b2c3e2c8..a5274bab 100644
Binary files a/docs/abstract_anonymous_networks.docx and b/docs/abstract_anonymous_networks.docx differ
diff --git a/docs/monolithic_cryptographic_protocol.docx b/docs/monolithic_cryptographic_protocol.docx
index 9cf2d664..1747269c 100644
Binary files a/docs/monolithic_cryptographic_protocol.docx and b/docs/monolithic_cryptographic_protocol.docx differ
diff --git a/docs/monolithic_cryptographic_protocol.pdf b/docs/monolithic_cryptographic_protocol.pdf
index 54e87d22..ea51e171 100644
Binary files a/docs/monolithic_cryptographic_protocol.pdf and b/docs/monolithic_cryptographic_protocol.pdf differ
diff --git a/docs/theory_of_the_structure_of_hidden_systems.docx b/docs/theory_of_the_structure_of_hidden_systems.docx
index 0ee46f37..0d68dfbc 100644
Binary files a/docs/theory_of_the_structure_of_hidden_systems.docx and b/docs/theory_of_the_structure_of_hidden_systems.docx differ
diff --git a/docs/theory_of_the_structure_of_hidden_systems.pdf b/docs/theory_of_the_structure_of_hidden_systems.pdf
index dd86ae0d..f414a2ee 100644
Binary files a/docs/theory_of_the_structure_of_hidden_systems.pdf and b/docs/theory_of_the_structure_of_hidden_systems.pdf differ
diff --git a/examples/_cmd/anon_messenger/Makefile b/examples/_cmd/anon_messenger/Makefile
index b9a4c6c1..5d37af3b 100644
--- a/examples/_cmd/anon_messenger/Makefile
+++ b/examples/_cmd/anon_messenger/Makefile
@@ -8,18 +8,18 @@ init:
pkill --version
build:
# MAKEFILE BUILD
- make build -C ../../../cmd/hls
- make build -C ../../../cmd/hlm
+ make build -C ../../../cmd/hidden_lake/service
+ make build -C ../../../cmd/hidden_lake/messenger
# COPY HLS PROGRAM
- cp ../../../cmd/hls/hls ./middle_hls/prog_hls
- cp ../../../cmd/hls/hls ./node1_hlm/prog_hls1
- cp ../../../cmd/hls/hls ./node2_hlm/prog_hls2
+ cp ../../../cmd/hidden_lake/service/hls ./middle_hls/prog_hls
+ cp ../../../cmd/hidden_lake/service/hls ./node1_hlm/prog_hls1
+ cp ../../../cmd/hidden_lake/service/hls ./node2_hlm/prog_hls2
# COPY HLM PROGRAM
- cp ../../../cmd/hlm/hlm ./node1_hlm/prog_hlm1
- cp ../../../cmd/hlm/hlm ./node2_hlm/prog_hlm2
+ cp ../../../cmd/hidden_lake/messenger/hlm ./node1_hlm/prog_hlm1
+ cp ../../../cmd/hidden_lake/messenger/hlm ./node2_hlm/prog_hlm2
# COPY HLM WEB
- cp -r ../../../cmd/hlm/web ./node1_hlm
- cp -r ../../../cmd/hlm/web ./node2_hlm
+ cp -r ../../../cmd/hidden_lake/messenger/web ./node1_hlm
+ cp -r ../../../cmd/hidden_lake/messenger/web ./node2_hlm
run:
# MAKEFILE RUN
make run -C middle_hls
diff --git a/examples/_cmd/anon_messenger/middle_hls/Makefile b/examples/_cmd/anon_messenger/middle_hls/Makefile
index edce676d..cf20cca6 100644
--- a/examples/_cmd/anon_messenger/middle_hls/Makefile
+++ b/examples/_cmd/anon_messenger/middle_hls/Makefile
@@ -2,7 +2,7 @@ GC=go build
.PHONY: default run clean
default: clean run
run:
- ./prog_hls --key priv.key &
+ ./prog_hls &
sleep 8
clean:
pkill prog_hls || true
diff --git a/examples/_cmd/anon_messenger/middle_hls/hls.cfg b/examples/_cmd/anon_messenger/middle_hls/hls.cfg
index b0e603d7..bf3e0b8c 100644
--- a/examples/_cmd/anon_messenger/middle_hls/hls.cfg
+++ b/examples/_cmd/anon_messenger/middle_hls/hls.cfg
@@ -1,5 +1,5 @@
{
- "logging": true,
+ "logging": ["info", "warn", "erro"],
"address": {
"tcp": "localhost:9571"
}
diff --git a/examples/_cmd/anon_messenger/middle_hls/priv.key b/examples/_cmd/anon_messenger/middle_hls/priv.key
deleted file mode 100644
index 4d9b1195..00000000
--- a/examples/_cmd/anon_messenger/middle_hls/priv.key
+++ /dev/null
@@ -1 +0,0 @@
-Priv(go-peer/rsa){308209290201000282020100C62F3CFA3D9809EE6DD77EBBFD38BC6796ABA76B795B3C76D3449F0AC808E01EDA8B2B08C58E508C306B2D842A2D317FF6B6D4A13EB76C7BBD5B157B663C3390B227476F4985EF649510D8CCA38FAB9FFCD67916FE73DB77595AB64FBE66D85892708A2DBCA94447A628F183FA6328136FCF158688CB6664EBA91F4C41621741786D50E3286AF9CAB81C101BDB19ACF42E10041CFDA5C6F30ACBBC4251E3D13C0E0781CBDC622E4ED490DD76BBA04D0A9C0012EBDAA77BD9F23183205A9D533C95A6C1FAAD8AB7C3B21FA4C76F7A3FB8EAEB231083ED925C1F71D23671E8C90E460C673A0DCD82ECFA956DF315200554571A99D79EB1E744681B9652389DBA6B9937CE476EBCAC34D02AEACF381DA40469B2F23E4F3DBFD5D8E04031708E46C31E3DC94342298E6F83CF7869C1209ACE2EA04FDB011D0FE265C8D51CF7D90C947160415B3415DFF9D1B16D5A9961F896109223B1408E740C421C6F413FA7B3D7094144DE4A0211DCAF043BC1A9FDE120251CBD654E705795D692A912F0543FF2F13EC733BD1E3AB83B915F95D3540EAA809C1E6E8C248A1EA1AE1D3B29C804F855167F64DA0AB06E5D89080D77D95A6E7199B079925922EA8735DF7654A01B350D67472F25B79DE5FF65B7E9156AEFC8818A1D9216BC4BE527DDC7D88F249B8745CF7DF1610A8237EB4BC1325C64FF47BD34B32CFE59720EC7FB52608D9009C70203010001028202000C1BAEBA0B3152CA0263FC16382E533470FC23CA692BADD204AE58992C077EC9E3C844E4D04D1596BB0E914555DE54FBE072E322C6D6260699570B44F2C612D07051FE074A92A84198E9E294FE1934FF1D4F6D2E7E754D9F491245B93184CF0AFA476DE9C57101FEEEA3E9BD8A7AAC64239C9F500CE3806A020BDF21A58CFCA6BF58CE6C5277D6B30FF486F76CB770DDAA42C83D8D31A7AA09AAD0E1AC6722CD6C7E00EC1796D80570EF38D89C35FAFEFEF0F236FEB0E4DC37F3D6730F963513AA80F9B0FB115290DE3D18B0269B6D713AC90AE763680C5D1C7EB3BD27D075182E276BD71C28C62AFC544CD7611F07B4536E08A027CDEEB73B35144609B7794026215127C65E10EF24541F8F9CB6580EA10B7A5569CC68F310D1F149AFDCE246B2D6E3BEFD31E330760E2AA275C0E014F8122B95CAD4E272C5D4992230A538ABD4360A028C729B3BB8ED3FE306BF7F82C05FBB6AB45906C879D8F80C4991515F86C0F46178A5E99D61F6341A41A6BA9C2B6C7E62A0FDFC0CD62E7A87139435C72994610C47405547B8241EBAE1F281FFBA56F9C2A9E79AF8CFDF5C0C04FB40EBEB331BB80D11EFBF55A845F0C0BFCD6B4D2C79884E0E1CC6F8F1F226F68F0DC15905BE85D9459F082BADBF3D4624E79D0930946C5724FBCFE6A67CDC783ED95133828F7C51BB5915FB5F6B84AEB80A036F33653287D68F735CDE5057B8064A010282010100E51BBE370F1B82489920B74453203702F00C9F4F1B6E6B3D145DA7B800966EC97E702ED709DB6743A678111577584C06AE03CE34981160D52243FB9431F17296CCB8588983D7F83A995845A4E4DD2297B422F61CFDA5718D2AA6B1C3D91E55B1315F41C1715617B62F3C33F9ACD7368E26DB623EF3217E0B6293CA772BEB8A27E0BD73B805C9546E976C8E74D263FD79560F28187A4CE8156BAC397D96CA68D439913ECC8A47D2AE8FF988DB60ABD2F3C8337AF0AD33DC8ED73DB7C1B673DA31B07C5155A3BD3967AE6A2B1CB4F65EEF30AD922568AE29D71FFB64B4B3E21EAD51DCA8A7F9067A0FB3757DCA283327AEF8D9D76F8B2860DF855AE58E0DC503870282010100DD724B53AA306CD9B87E50F855E761F250DA06277529F1A8413FB62A154532890682C2B5D06AC59526D3E82F2E345EC5F54927E2DE015F48112D7391DDB9FEAFD72C7FABAE60B4F5F06C07366E8A0FE759F94B16F634410EC793490BBF2D5E180665C69A1864395D4167FE8B8566547473DAF153EB40B79A2AA408F66BF7959C0C714D4DA9BCF4183111B5510A4FB80CD43124C6DFD3BDA1326A7E816895667CD7CF7CBFA54EF6382B3021459C6295DBADC2DF0B1865491A1B52BF0C4AED521F51362DA0BEE10DEFF3007A7285A79A2FF639884BF8E7539CD59B10DB68FC505942BBA8177555F213FC28AF119E89C578FA22D32D6655AF1C920E5153E1DED7C10282010100985427D687CEEC82C47D421CC58027D366339E4084A697DA968DE693AAA05AACD1CA58FA54ED71ED42E395C845FF891CEFDA4BE220317DC677EFE77792F54C1103B095FD6891D1D3745D8280AE42715B98439E8B8C01D24BDFCDD167BC16353788F222D03140E2A71924D811EB5F744073896DFB18C06E03B7D937C6A0870CE692C0A40DF89AF1EE4DF3B98BE6CEE09B2A230DAFA8B135A5F85F1C226A7DCDD13D2D5B29B7CF253F372EDC55B022CE31942CD652EB760DF1531F0FEC5619153BF071D7CA2F020306F2AA585BCFDDF724E5A2A2070960B324FB78B46E892390EDFFFDCC8D523F822CAA4F36019154E1CFAE5978AA0B461F92BE21BF7B01A0BA450282010100C1E186A7FAB2A92ABA0806165707DD4E8D9145A018499FE5A33307E7B275C2380C364209732F784C0D11AD1059D0CA45616B2A7BCBC9C1C5541CCA39A4BA6A8D43C417079605DF8A107454A04889A240F91A75AEE5E27C2F5776D196724C633C7FA56E0B8E5D7987F772F87EE94DDD9593B5D66295EF3490CAD2917246B71F0AE02DF6F38F2FFB3A8F03A50F0E0B1BE64785BB604FA9903668F0AA4FDCE4293616B0F7D4C703EA38E53F1F7255E84EB26660DE6D556FA0603619ED60F2DCF370ADE6D46E0F90F565E708BD2C356EB765549BAC846FA90120A8383ABB0F2111AC04EC4DD034100A818ADD87E1D23F676073083882603D96B25A02251C5EFE7F41028201001F90EEFCA05DBF1439CE2F7B2E1A3FE4A551238EEF4EECD53B46D12D136896B00B91BFB6ECFBDBCFEB3737B082D5C93A4146A61E58879DC66B445C84215F3E76B06D23323CE2D20775FCB66F1F013CC42AC8DE870812FA347C7D66EBD70117B00D4074AEEEFA8D0D59E8CD83734989064DF5D0F5565C179F4FA0CA8BE30959B530B7D768C31CC435748F194C4A31E1E8CBCCDC3FBA3D03F37C1B582E5D9E0C8768820098459F8F8703F5016680B0E756541834C4A54393D91683A57FE2E9CC2986BA3B4BF0387A4E69D83B878887C1C4F117274F9C20A142AA23C415241780D15BE316720716AC57D5343C1085F06D49EAD304B24DB756BAB196C0CD270EBA98}
\ No newline at end of file
diff --git a/examples/_cmd/anon_messenger/middle_hls/pub.key b/examples/_cmd/anon_messenger/middle_hls/pub.key
deleted file mode 100644
index 87ebb6f3..00000000
--- a/examples/_cmd/anon_messenger/middle_hls/pub.key
+++ /dev/null
@@ -1 +0,0 @@
-Pub(go-peer/rsa){3082020A0282020100C62F3CFA3D9809EE6DD77EBBFD38BC6796ABA76B795B3C76D3449F0AC808E01EDA8B2B08C58E508C306B2D842A2D317FF6B6D4A13EB76C7BBD5B157B663C3390B227476F4985EF649510D8CCA38FAB9FFCD67916FE73DB77595AB64FBE66D85892708A2DBCA94447A628F183FA6328136FCF158688CB6664EBA91F4C41621741786D50E3286AF9CAB81C101BDB19ACF42E10041CFDA5C6F30ACBBC4251E3D13C0E0781CBDC622E4ED490DD76BBA04D0A9C0012EBDAA77BD9F23183205A9D533C95A6C1FAAD8AB7C3B21FA4C76F7A3FB8EAEB231083ED925C1F71D23671E8C90E460C673A0DCD82ECFA956DF315200554571A99D79EB1E744681B9652389DBA6B9937CE476EBCAC34D02AEACF381DA40469B2F23E4F3DBFD5D8E04031708E46C31E3DC94342298E6F83CF7869C1209ACE2EA04FDB011D0FE265C8D51CF7D90C947160415B3415DFF9D1B16D5A9961F896109223B1408E740C421C6F413FA7B3D7094144DE4A0211DCAF043BC1A9FDE120251CBD654E705795D692A912F0543FF2F13EC733BD1E3AB83B915F95D3540EAA809C1E6E8C248A1EA1AE1D3B29C804F855167F64DA0AB06E5D89080D77D95A6E7199B079925922EA8735DF7654A01B350D67472F25B79DE5FF65B7E9156AEFC8818A1D9216BC4BE527DDC7D88F249B8745CF7DF1610A8237EB4BC1325C64FF47BD34B32CFE59720EC7FB52608D9009C70203010001}
\ No newline at end of file
diff --git a/examples/_cmd/anon_messenger/node1_hlm/priv.key b/examples/_cmd/anon_messenger/node1_hlm/priv.key
deleted file mode 100644
index 1241d86d..00000000
--- a/examples/_cmd/anon_messenger/node1_hlm/priv.key
+++ /dev/null
@@ -1 +0,0 @@
-Priv(go-peer/rsa){308209280201000282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC702030100010282020071714CA16013F526DFF4B0AA211C1B01662E7C37073C106487BD102BCB8BFDF1C54FBAEFBF093896E48D74BDB5F85B4A5CA4569C2E6A4EFB978D586446F36EF3C1B76A0C9B12A93B756C09B6B2D3EF0F15D22387046196B3B3F9EAD2C50EBAA0B275BCD81FF78C29FFB1C0FDA72A61D3B53BB67BEE37E57BBA1FC48F87DF5671DA02C9783745D4DE3E11D57DCD8DA6E85233CE48DBF7B7D6AD4778EE1A63B5CB9E259ACEB48D6713529F6A68E49975798375557B4F6D1EFE1808764B765A3BEEBC796705797EC6867DA9188BE81D122F465FDFD4242EF78C2FC3EEAA96C455A2164981694A893484E304E0EA94255B66A88B1591558EB4C935FC5E4576DD59AADEA5F24C3182C6F15D0AC03C33EACD988D4A461567D64BB0860D653CD1FC3CF0E3931475DE81C60D3F0417695ECB98A5D98AD4949BAB1FFB3F8D47EEA6657397E87E9D944E0FEEC01EECC262468A691BDF837192FFE5DFEA31E25E34BC34026517796947C4392EA054C95F795D451DCC2BA3474EE660E0B750EF2840AF08664D7C40DD63911F53D4B42FE58E1D1CF5447D235C748A2527EFC269C3E177F4AEFCC4CF9800EE6E677379F4A21FC403AF059AB6DB6B46391DD42C249EA01EB9C61C3658DCE7DD9EF999C8E24FF4A144AF407B01959D16FF69433CC3027161C40C11496C70C67C7769C4A06F17019CE1F904D538789BC245E3264B67AF04BA53CD790282010100E3F6F06E9B3E5989BF3ED2280D37FF0A841F5C6E038038C81CC965B2F484EEEBC7906DF20AAA41C21CDBBB93C34B4B1C9592A61EE7B58517CDD03A7714007DDAD4B9234ECF2F3A5037F3BF939EFADBB0F64A598D5F83BA486FD18EE0527AA377153CE48DE6A1595414487C319BCC862979CC9038CC2212D84A515C7F624FA8158097C1414DFE5769111CFBFEFD005F0A576B5DFC556EF8F28F2C3C2DC6A923633FEFB3F70AA85C8FD73CA6E185C21570042AD6428842100F4EFC54D3CB3D98FF663C945DC0B2AE34C7838C4DDCDB5F31CE1AFB3BF1654A5C43F322E17C314EE88DA66E98442B60401D112C8247E9DC2EA86C42EBB65427F0F0A4C2CDD7A63B850282010100CDDE71139488AAF431C71101D8D6E0CB656BA0EF311910E5A32CC00151817D406C38E908C43589588EED06111E1D5216C7B1CCB055E528CE01528757A0AC98BE1322B4374F73F6A92F5965A698D9EEF658A3946CC3AFA2B4D2244FE4B21671286BE2A230288CEDA4181A8FAFCD8D23479B5F391576E217C6766D77CBA96DD4EA4A8E97FA40570D566F7CD4FB300628C2E91EB2B89B75C0CC4AFDDBB6AC8BD6B5D7B7771D61D249A6422C05ED8AB087E7C190F7AD20899F5F7DEB435F76DE5F9D0613744659A51A11BC7F97C95A815799B82A07F242B4F78BB88A162060E969089C56B8FDDE2B428CEB93BDE94CE37EAECFF4630DFAF0FD6351A68D3E792F0ADB0282010009FC8C65DC092C34FB9ACDEC11402DBD1132AA82EB4657B67484621F27D516FE5F3CB5844FF14B762C7B77C92E5A030D5A841520EF77A53FF8B5318A7BE6D59C9B8B0CBFEC159E915B1223875D0492513B48E0896FF0BE5D6400A328B2944ACAF1B43C32F732844E49A12F47A112A1A1F982FBA27156E0CA76DEFF9559023253D6D14F17044AAB1BA0334BDACCCC925D4A9D1A7DEE643125B71DF1F8F365FF75DE9C2A9F1CE9693CA7EA314959E9B9B4B18A0ADED947439AD813F7C75B74F459E3E9AD7A39F1D9EDD7FBAC4ED0E90F4F883EE858A4E7920D5EB0AD0B81BC4B3FA6CCEEB55EEF23854B80B01978FB06B948898D98F3E0D5EB192FAE9503E8755D028201003B41BBEA96E67FCEAA45526FE5AA742A1797534B862660E6B88139032822CD9AAD8BF407C1F26706469D93117A4996475853A5475C7209BCC244AF1059FF5437E1EA2B55805930B6A21A6957FAC7403148724D56C13CDCE88F54446ADF97F61A5C736F9BCD104396E8193D22AD57E2BFC9C92EF52EB30584EAB1B7B9B79B159E1AB7D0A707BE06E8CA4E743F99232CB86DC1984FEAEF89FF43D6AE57767309EA6D9D317C139C23F6E73524BFAB1C05028084E9C5BB87E187EB06BCEDCD99548C2E238B6474894167B98A407684C69620791220176B7C0B84FC2943152ED0009BA9E48C7B06680D4FE2BF33FAE356D830194B8EF78733B6BBCFD4D0F31A8E9FE10282010100CCBC84560C368408205FD9F564F054BB8BDFF143E29EC426A5A1C3775801BE71822B1BCCF24B9808EE39143F664F5425ECB68E342AAB8DC44377AB719DFE103B8FF418B0841BE6C96987845C92997AA06EB0EE6ECE1F691867358735E5A1DF2965DED9A84A0BF90DC853DB1D8D6DBD0BC5C52073070493F4047FEC326F35C25716ED521EB18EE1E54014C8ADB3B561BD3B07625C2208638A2BF950E785CC9322399658A4DAD14ADDBDA188EE41193C1B02F9515D429844298A2352A7F809AB6DA9CA61AEB28B7B6A6CC2B5ED19F90DAAD04B7986ECCF41130A5FDBF77BA94D3099F5A275D4A3A3FE6962081CBAB5975457D32D96BD3E9B947E5AA999C1BC8CB2}
\ No newline at end of file
diff --git a/examples/_cmd/anon_messenger/node1_hlm/pub.key b/examples/_cmd/anon_messenger/node1_hlm/pub.key
deleted file mode 100644
index 022476e9..00000000
--- a/examples/_cmd/anon_messenger/node1_hlm/pub.key
+++ /dev/null
@@ -1 +0,0 @@
-Pub(go-peer/rsa){3082020A0282020100B752D35E81F4AEEC1A9C42EDED16E8924DD4D359663611DE2DCCE1A9611704A697B26254DD2AFA974A61A2CF94FAD016450FEF22F218CA970BFE41E6340CE3ABCBEE123E35A9DCDA6D23738DAC46AF8AC57902DDE7F41A03EB00A4818137E1BF4DFAE1EEDF8BB9E4363C15FD1C2278D86F2535BC3F395BE9A6CD690A5C852E6C35D6184BE7B9062AEE2AFC1A5AC81E7D21B7252A56C62BB5AC0BBAD36C7A4907C868704985E1754BAA3E8315E775A51B7BDC7ACB0D0675D29513D78CB05AB6119D3CA0A810A41F78150E3C5D9ACAFBE1533FC3533DECEC14387BF7478F6E229EB4CC312DC22436F4DB0D4CC308FB6EEA612F2F9E00239DE7902DE15889EE71370147C9696A5E7B022947ABB8AFBBC64F7840BED4CE69592CAF4085A1074475E365ED015048C89AE717BC259C42510F15F31DA3F9302EAD8F263B43D14886B2335A245C00871C041CBB683F1F047573F789673F9B11B6E6714C2A3360244757BB220C7952C6D3D9D65AA47511A63E2A59706B7A70846C930DCFB3D8CAFB3BD6F687CACF5A708692C26B363C80C460F54E59912D41D9BB359698051ABC049A0D0CFD7F23DC97DA940B1EDEAC6B84B194C8F8A56A46CE69EE7A0AEAA11C99508A368E64D27756AD0BA7146A6ADA3D5FA237B3B4EDDC84B71C27DE3A9F26A42197791C7DC09E2D7C4A7D8FCDC8F9A5D4983BB278FCE9513B1486D18F8560C3F31CC70203010001}
\ No newline at end of file
diff --git a/examples/_cmd/anon_messenger/node2_hlm/priv.key b/examples/_cmd/anon_messenger/node2_hlm/priv.key
deleted file mode 100644
index 07f523c1..00000000
--- a/examples/_cmd/anon_messenger/node2_hlm/priv.key
+++ /dev/null
@@ -1 +0,0 @@
-Priv(go-peer/rsa){308209270201000282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001028202007497315BDB203CB5BA27CBCDF9F6182BF24F824A43B97D33110CE82155F84EBE65106C5A775935253D11E67E0AB6C8F095EBE039C477C941DA0888D126EF651C27D4C1BBCD540C3ABDFBC60F4D3D11037CFE13574A96D2C2CEC921724B0C030515269180CA0C77AFE592728D668D5D396ED7640DCB065D577F2A6ECDEAA1116B65F50261AEA5061FE367E4EBD81ACE6C206CF6C5108F0BA265668B608FD8B5B8D13A56D79ABBA296577735C03F405BF863049935E75889CB55AB12354B1E3F366DB2815A1755D68B457FF47F9E03005BDDA457A3EAB1A2470722848DBA0FB69324C31EC076B73849CF3EE7AE8202FE5977818C9C6FB18956541B6AF37FC0620BAD4A401FEBADEB782F85597BD4E8110E948DB2FA6D1BA6D9B3C76226EDB97578B0FAA480D8ED07CBD93FBEFA1CB499F6841DF85EE5A8EFFCAAD5193772930E164BCB254E63324E7DD545C629CB25358162A990DB55397510E0E7BBFF896E9673B9286F1ED353E3580D925AC89268EC6DDE2912BE8CB9CEBFCD4212DD6863BE267AAAA646B215C45541F98D606ED20964AE23B017B85119C267F00A99A86D31CB0A32BD66A4F7D07044B03F9A45C4775A753EFB2CA2E238857F968AFF607476D2CBB07A560E649895502C55B8782E3E761A935C223EE0573005D93CE92DEE0D60F2DBED5B044CC40445F50F83539F90455BED7E94145A0C6AF9B95B47B355E1210282010100F9A85AA543F0D90CBE0ED7A879FE5186D2A14BE5C1C10EC7848557CA312EED8DCE148B1E74D73FAF3022876E8AE985192ED8E0E64556D6B6E20AB9C94F06FF67B465D5F6156156A990DB5E7FC56FB0A352A5E75FA76ABF62C346F70546F6D7AA0E4F8C3947ED2F83782509BD75E3EF1F8BD5F37B62C0677393A959AB503251A13D111B7DE46103C8DEF96744BA0F383EC45B7CE66556AEE1DFE79EECE1F6E301955FFBBE935FE2689989C0F476525DBD8498CB42CF32D3129B66B6B34EC2A33F5CB5ECEEAF6E59B30800AB80879DFBE7D50D3E3771B2345C669290EABE2C9A3734F87414CFD4DF21C0D1F00E3665CF311FEBCAB3A20153886BB83448AADA7A730282010100C665BED80AB3AB43D55BBD1B584C5278D4DC7FD32B4B9870D8F606AB63BC3BBF3330915E587B1C408704FC2D1FCB86433E24E06937785372BB7A8F655BADF073C7E3B5CBFBC870F0F94A0D9EB1FF133CBCD406A4DE63552AEC6F52F50671A095F47D6D87A2B039DBD120116BC26A7D1278EBE7FC46B2B572CBD904804EBE92A0B424D308C4E822B29E670C4C1FE95CBD917FF546434AAED98FC7F8EA0ACF49F571572CCBFEE772686EFF8F6AD45904A305A850D6C3ADE545B8F3A2966E428A59A92B9640B5ED1C0CFDF5DF9D00D5320852321FCCBF699F1A8D3408ED5ACCCB20C387DE5524D9680E3F5837E11496F65843B1B5965FCEB131AEE74C40E674D705028201000C9711E32DB6F2AB32D67AC7B34741034491FFCAD9678C0041CD9BACC5A83130AA88DCAF2F833F61ED528073F1AB6F1BE301EAED91E79C3262D9D99EAE4E9308BECF37E80E11F795DB89448DBAFE33F13894C7434AA5167BBB8F539BBF856940D931E7C767BA2D603AE9DB40E3B617F4065046D41D19C8DDCA3F8B17199740089A94C7472502437798CF09072D3EE13E4116C008BA6991AE306574DD4B53F104BE6CB5BC59A04741B124824791C3FB98381CA07B8109761D851ABBF1F4F1D9DBB32835879FEF37B4D09D80089E4E384AEBB29C459D853820C4C775697127BCAB360FA582FB2C280882B9D39A53E1F47DECB72E64BAB1C86DA3C90951F4D3C9C3028201001688F008720EBE615216BD8021A369AAB7E2E3D20494ED97C3CD0E2CE1833BF617C6687CA2E838E94B6CD187FE988B838FC77885FAFAFBDF8853FF7DAFD02E03B8ACB0B59EBFC1B45D5C7FF78A9842831F9FA5B18C611407701BA4FC97E2C82EC03A8EFA5D0C4F461C96DBE3B58D8AEF5234D980DA36EA4D43C23EB4A43D19428FB3AF14CBE8E2280FBDFCB398DC54E0636A795DA5BF11E53C63A66E4F14047E90852A5D7172B09814238B12C353E926EB3997150DDCEEB1E0B42BBF927E946062CAC4A24D07C5ABE41CCD6D73EEC364169202F2AABB408B2F86BD8CD84772BB21FA88D27B0106C4B78539B3A337127C2C143F5FF939ECFE8BB35201FD2B4051028201007013EF7A989CF3DAF73407F23F75DD141AE5AB841D2A31BC1C632761B71F37EE0BE7690922130E4B29F5A92EF3CFD9184275B015BF95F885720AE117C5C8960BAC8E7E9FEB19B3007970E5CDE0F935C75F90D887AE15A820F104CBBA2ABC37697C2952B5D25A91CAA27E5C04DB6D74B5C8B012093A927E96E7315EB2C2E882300171AF0E725DB4088F7B2AC2A36DE6FE7B73413BB40989B21BEED9662EEF9477B938B4020A01169E7F70D8050F9D751A7530E2A44A47F69FAB1FDD7F3F78EC1C22236B49C3B68100712B53C97DB8DB67A4D8B9309D69773BE761CFFAB42DEE9C55E55573AE40AC6A4926A28119BD1C069869250297938875850E4F471CDD2DC7}
\ No newline at end of file
diff --git a/examples/_cmd/anon_messenger/node2_hlm/pub.key b/examples/_cmd/anon_messenger/node2_hlm/pub.key
deleted file mode 100644
index 86ca44fa..00000000
--- a/examples/_cmd/anon_messenger/node2_hlm/pub.key
+++ /dev/null
@@ -1 +0,0 @@
-Pub(go-peer/rsa){3082020A0282020100C17B6FA53983050B0339A0AB60D20A8A5FF5F8210564464C45CD2FAC2F266E8DDBA3B36C6F356AE57D1A71EED7B612C4CBC808557E4FCBAF6EDCFCECE37494144F09D65C7533109CE2F9B9B31D754453CA636A4463594F2C38303AE1B7BFFE738AC57805C782193B4854FF3F3FACA2C6BF9F75428DF6C583FBC29614C0B3329DF50F7B6399E1CC1F12BED77F29F885D7137ADFADE74A43451BB97A32F2301BE8EA866AFF34D6C7ED7FF1FAEA11FFB5B1034602B67E7918E42CA3D20E3E68AA700BE1B55A78C73A1D60D0A3DED3A6E5778C0BA68BAB9C345462131B9DC554D1A189066D649D7E167621815AB5B93905582BF19C28BCA6018E0CD205702968885E92A3B1E3DB37A25AC26FA4D2A47FF024ECD401F79FA353FEF2E4C2183C44D1D44B44938D32D8DBEDDAF5C87D042E4E9DAD671BE9C10DD8B3FE0A7C29AFE20843FE268C6A8F14949A04FF25A3EEE1EBE0027A99CE1C4DC561697297EA9FD9E23CF2E190B58CA385B66A235290A23CBB3856108EFFDD775601B3DE92C06C9EA2695C2D25D7897FD9D43C1AE10016E51C46C67F19AC84CD25F47DE2962A48030BCD8A0F14FFE4135A2893F62AC3E15CC61EC2E4ACADE0736C9A8DBC17D439248C42C5C0C6E08612414170FBE5AA6B52AE64E4CCDAE6FD3066BED5C200E07DBB0167D74A9FAD263AF253DFA870F44407F8EF3D9F12B8D910C4D803AD82ABA136F93F0203010001}
\ No newline at end of file
diff --git a/examples/_cmd/echo_service/Makefile b/examples/_cmd/echo_service/Makefile
index 04e1da19..1a30a89d 100644
--- a/examples/_cmd/echo_service/Makefile
+++ b/examples/_cmd/echo_service/Makefile
@@ -5,12 +5,12 @@ init:
pkill --version
build:
# MAKEFILE BUILD
- make build -C ../../../cmd/hls
+ make build -C ../../../cmd/hidden_lake/service
make build -C ./recv_hls
# COPY HLS
- cp -r ../../../cmd/hls/hls ./middle_hls/prog_hls
- cp -r ../../../cmd/hls/hls ./recv_hls/prog_hls1
- cp -r ../../../cmd/hls/hls ./send_hls/prog_hls2
+ cp -r ../../../cmd/hidden_lake/service/hls ./middle_hls/prog_hls
+ cp -r ../../../cmd/hidden_lake/service/hls ./recv_hls/prog_hls1
+ cp -r ../../../cmd/hidden_lake/service/hls ./send_hls/prog_hls2
run:
# MAKEFILE RUN
make run -C ./middle_hls
diff --git a/examples/_cmd/echo_service/middle_hls/hls.cfg b/examples/_cmd/echo_service/middle_hls/hls.cfg
index b0e603d7..bf3e0b8c 100644
--- a/examples/_cmd/echo_service/middle_hls/hls.cfg
+++ b/examples/_cmd/echo_service/middle_hls/hls.cfg
@@ -1,5 +1,5 @@
{
- "logging": true,
+ "logging": ["info", "warn", "erro"],
"address": {
"tcp": "localhost:9571"
}
diff --git a/pkg/client/message/message.go b/pkg/client/message/message.go
index fb220b84..f20f2542 100644
--- a/pkg/client/message/message.go
+++ b/pkg/client/message/message.go
@@ -3,6 +3,8 @@ package message
import (
"encoding/json"
+ "github.com/number571/go-peer/pkg/crypto/hashing"
+ "github.com/number571/go-peer/pkg/crypto/puzzle"
"github.com/number571/go-peer/pkg/encoding"
"github.com/number571/go-peer/pkg/payload"
)
@@ -34,12 +36,15 @@ type SBodyMessage struct {
// IMessage
-func LoadMessage(bmsg []byte) IMessage {
+func LoadMessage(bmsg []byte, workSize uint64) IMessage {
var msg = new(SMessage)
err := json.Unmarshal(bmsg, msg)
if err != nil {
return nil
}
+ if !msg.isValid(workSize) {
+ return nil
+ }
return msg
}
@@ -59,6 +64,14 @@ func (msg *SMessage) Bytes() []byte {
return jsonData
}
+func (msg *SMessage) isValid(workSize uint64) bool {
+ if len(msg.Body().Hash()) != hashing.CSHA256Size {
+ return false
+ }
+ puzzle := puzzle.NewPoWPuzzle(workSize)
+ return puzzle.Verify(msg.Body().Hash(), msg.Body().Proof())
+}
+
// IHead
func (head SHeadMessage) Sender() []byte {
diff --git a/pkg/client/message/message_test.go b/pkg/client/message/message_test.go
index 8013c74e..c6ba3425 100644
--- a/pkg/client/message/message_test.go
+++ b/pkg/client/message/message_test.go
@@ -1,34 +1,27 @@
package message
-import (
- "bytes"
- "testing"
+// const (
+// tcHead = 12345
+// tcBody = "hello, world!"
+// )
- "github.com/number571/go-peer/pkg/payload"
-)
+// func TestMessage(t *testing.T) {
+// msg := testNewMessage()
+// msg1 := LoadMessage(msg.Bytes())
-const (
- tcHead = 12345
- tcBody = "hello, world!"
-)
+// if !bytes.Equal(msg.Bytes(), msg1.Bytes()) {
+// t.Error("load message not equal new message")
+// return
+// }
+// }
-func TestMessage(t *testing.T) {
- msg := testNewMessage()
- msg1 := LoadMessage(msg.Bytes())
-
- if !bytes.Equal(msg.Bytes(), msg1.Bytes()) {
- t.Error("load message not equal new message")
- return
- }
-}
-
-func testNewMessage() IMessage {
- return &SMessage{
- FHead: SHeadMessage{
- FSession: "session-key",
- },
- FBody: SBodyMessage{
- FPayload: string(payload.NewPayload(tcHead, []byte(tcBody)).Bytes()),
- },
- }
-}
+// func testNewMessage() IMessage {
+// return &SMessage{
+// FHead: SHeadMessage{
+// FSession: "session-key",
+// },
+// FBody: SBodyMessage{
+// FPayload: string(payload.NewPayload(tcHead, []byte(tcBody)).Bytes()),
+// },
+// }
+// }
diff --git a/pkg/client/queue/queue.go b/pkg/client/queue/queue.go
index f78fbcd7..272ee880 100644
--- a/pkg/client/queue/queue.go
+++ b/pkg/client/queue/queue.go
@@ -49,7 +49,6 @@ func (q *sQueue) UpdateClient(c client.IClient) {
q.fClient = c
q.fQueue = make(chan message.IMessage, q.Settings().GetCapacity())
- q.fMsgPull.fQueue = make(chan message.IMessage, q.Settings().GetPullCapacity())
}
func (q *sQueue) Client() client.IClient {
@@ -73,7 +72,7 @@ func (q *sQueue) Run() error {
return
case <-time.After(q.Settings().GetDuration() / 2):
currLen := len(q.fMsgPull.fQueue)
- if !q.fIsRun || uint64(currLen) >= q.Settings().GetPullCapacity() {
+ if uint64(currLen) >= q.Settings().GetPullCapacity() {
continue
}
q.fMsgPull.fQueue <- q.newPseudoMessage()
@@ -105,32 +104,35 @@ func (q *sQueue) Enqueue(msg message.IMessage) error {
return errors.New("queue already full, need wait and retry")
}
- go func() {
- q.fMutex.Lock()
- defer q.fMutex.Unlock()
-
- q.fQueue <- msg
- }()
-
+ q.fQueue <- msg
return nil
}
func (q *sQueue) Dequeue() <-chan message.IMessage {
- time.Sleep(q.Settings().GetDuration())
+ closed := make(chan bool)
go func() {
- q.fMutex.Lock()
- defer q.fMutex.Unlock()
-
- if !q.fIsRun {
+ select {
+ case <-q.fMsgPull.fSignal:
+ closed <- true
return
- }
+ case <-time.After(q.Settings().GetDuration()):
+ q.fMutex.Lock()
+ defer q.fMutex.Unlock()
- if len(q.fQueue) == 0 {
- q.fQueue <- (<-q.fMsgPull.fQueue)
+ if len(q.fQueue) == 0 {
+ q.fQueue <- (<-q.fMsgPull.fQueue)
+ }
+ closed <- false
}
}()
+ if <-closed {
+ queue := make(chan message.IMessage)
+ close(queue)
+ return queue
+ }
+
return q.fQueue
}
diff --git a/pkg/client/queue/queue_test.go b/pkg/client/queue/queue_test.go
index 77dccc9f..eeb18456 100644
--- a/pkg/client/queue/queue_test.go
+++ b/pkg/client/queue/queue_test.go
@@ -87,9 +87,19 @@ func testQueue(queue IQueue) error {
}
}
+ closed := make(chan bool)
+ go func() {
+ // test close with parallel dequeue
+ _, ok := <-queue.Dequeue()
+ closed <- ok
+ }()
+
if err := queue.Close(); err != nil {
return err
}
+ if <-closed {
+ return fmt.Errorf("success dequeue with close")
+ }
return nil
}
diff --git a/pkg/client/queue/types.go b/pkg/client/queue/types.go
index 3ee836a3..81a87810 100644
--- a/pkg/client/queue/types.go
+++ b/pkg/client/queue/types.go
@@ -9,6 +9,8 @@ import (
)
type IQueue interface {
+ types.IApp
+
Settings() ISettings
UpdateClient(client.IClient)
@@ -16,8 +18,6 @@ type IQueue interface {
Enqueue(message.IMessage) error
Dequeue() <-chan message.IMessage
-
- types.IApp
}
type ISettings interface {
diff --git a/pkg/network/anonymity/anonymity.go b/pkg/network/anonymity/anonymity.go
index 12ed71f4..62dbe55d 100644
--- a/pkg/network/anonymity/anonymity.go
+++ b/pkg/network/anonymity/anonymity.go
@@ -11,8 +11,6 @@ import (
"github.com/number571/go-peer/pkg/client/queue"
"github.com/number571/go-peer/pkg/closer"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
- "github.com/number571/go-peer/pkg/crypto/hashing"
- "github.com/number571/go-peer/pkg/crypto/puzzle"
"github.com/number571/go-peer/pkg/crypto/random"
"github.com/number571/go-peer/pkg/friends"
"github.com/number571/go-peer/pkg/logger"
@@ -61,10 +59,28 @@ func NewNode(
}
func (node *sNode) Run() error {
- if err := node.Queue().Run(); err != nil {
+ if err := node.runQueue(); err != nil {
return err
}
- node.Network().Handle(node.Settings().GetNetworkMask(), node.handleWrapper())
+
+ handleWrapper := node.handleWrapper()
+
+ middleware := node.Settings().GetTraffic().Download()
+ if middleware != nil {
+ chMsg := middleware()
+ for {
+ msg, ok := <-chMsg
+ if !ok {
+ break
+ }
+ handleWrapper(nil, nil, msg.Bytes())
+ }
+ }
+
+ node.Network().Handle(
+ node.Settings().GetNetworkMask(),
+ handleWrapper,
+ )
return nil
}
@@ -168,7 +184,11 @@ func (node *sNode) recv(actionKey string) ([]byte, error) {
}
}
-func (node *sNode) handleWrapper() network.IHandlerF {
+func (node *sNode) runQueue() error {
+ if err := node.Queue().Run(); err != nil {
+ return err
+ }
+
go func() {
for {
msg, ok := <-node.Queue().Dequeue()
@@ -176,14 +196,14 @@ func (node *sNode) handleWrapper() network.IHandlerF {
break
}
- hash := msg.Body().Hash()
- proof := msg.Body().Proof()
+ var (
+ hash = msg.Body().Hash()
+ proof = msg.Body().Proof()
+ pubKey = node.Queue().Client().PubKey()
+ )
- pubKey := node.fQueue.Client().PubKey()
-
- // redirect message to another nodes
if err := node.networkBroadcast(msg); err != nil {
- node.fLogger.Warn(fmtLog(cLogBaseBroadcast, hash, proof, pubKey, nil))
+ node.fLogger.Erro(fmtLog(cLogErroMiddleware, hash, proof, pubKey, nil))
continue
}
@@ -191,8 +211,12 @@ func (node *sNode) handleWrapper() network.IHandlerF {
}
}()
- return func(nnode network.INode, conn conn.IConn, reqBytes []byte) {
- msg := node.initialCheck(message.LoadMessage(reqBytes))
+ return nil
+}
+
+func (node *sNode) handleWrapper() network.IHandlerF {
+ return func(_ network.INode, conn conn.IConn, reqBytes []byte) {
+ msg := message.LoadMessage(reqBytes, node.Queue().Client().Settings().GetWorkSize())
if msg == nil {
node.fLogger.Warn(fmtLog(cLogWarnMessageNull, nil, 0, nil, conn))
return
@@ -214,10 +238,10 @@ func (node *sNode) handleWrapper() network.IHandlerF {
return
}
- // redirect message to another nodes
+ // broadcast message to network
if err := node.networkBroadcast(msg); err != nil {
- node.fLogger.Warn(fmtLog(cLogBaseBroadcast, hash, proof, nil, conn))
- // need continue
+ node.fLogger.Erro(fmtLog(cLogErroMiddleware, hash, proof, nil, conn))
+ return
}
// try decrypt message
@@ -227,6 +251,8 @@ func (node *sNode) handleWrapper() network.IHandlerF {
return
}
+ fmt.Println("AAA")
+
// check sender in f2f list
if !node.F2F().InList(sender) {
node.fLogger.Warn(fmtLog(cLogWarnNotFriend, hash, proof, sender, conn))
@@ -269,29 +295,29 @@ func (node *sNode) handleWrapper() network.IHandlerF {
}
}
-func (node *sNode) initialCheck(msg message.IMessage) message.IMessage {
- if msg == nil {
- return nil
- }
-
- if len(msg.Body().Hash()) != hashing.CSHA256Size {
- return nil
- }
-
- diff := node.Queue().Client().Settings().GetWorkSize()
- puzzle := puzzle.NewPoWPuzzle(diff)
- if !puzzle.Verify(msg.Body().Hash(), msg.Body().Proof()) {
- return nil
- }
-
- return msg
-}
-
func (node *sNode) networkBroadcast(msg message.IMessage) error {
- return node.Network().Broadcast(payload.NewPayload(
+ hash := msg.Body().Hash()
+ proof := msg.Body().Proof()
+
+ // redirect message to another nodes
+ err := node.Network().Broadcast(payload.NewPayload(
node.Settings().GetNetworkMask(),
msg.Bytes(),
))
+ if err != nil {
+ node.fLogger.Warn(fmtLog(cLogBaseBroadcast, hash, proof, nil, nil))
+ // need continue (some of connections may be closed)
+ }
+
+ // use middleware func for upload raw messages
+ middleware := node.Settings().GetTraffic().Upload()
+ if middleware != nil {
+ if err := middleware(msg); err != nil {
+ return err
+ }
+ }
+
+ return nil
}
func (node *sNode) setRoute(head uint32, handle IHandlerF) {
diff --git a/pkg/network/anonymity/logger.go b/pkg/network/anonymity/logger.go
index 8a747c0f..93d94bbc 100644
--- a/pkg/network/anonymity/logger.go
+++ b/pkg/network/anonymity/logger.go
@@ -27,6 +27,7 @@ const (
cLogWarnUnknownRoute iLogType = "UNKRT"
// ERRO
+ cLogErroMiddleware iLogType = "MDLWR"
cLogErroDatabaseSet iLogType = "DBSET"
)
diff --git a/pkg/network/anonymity/settings.go b/pkg/network/anonymity/settings.go
index 1d2cf19b..a587fb4d 100644
--- a/pkg/network/anonymity/settings.go
+++ b/pkg/network/anonymity/settings.go
@@ -18,6 +18,7 @@ type sSettings struct {
FRetryEnqueue uint64
FNetworkMask uint64
FTimeWait time.Duration
+ FTraffic ITraffic
}
func NewSettings(sett *SSettings) ISettings {
@@ -25,6 +26,7 @@ func NewSettings(sett *SSettings) ISettings {
FRetryEnqueue: sett.FRetryEnqueue,
FNetworkMask: sett.FNetworkMask,
FTimeWait: sett.FTimeWait,
+ FTraffic: sett.FTraffic,
}).useDefaultValue()
}
@@ -35,6 +37,9 @@ func (s *sSettings) useDefaultValue() ISettings {
if s.FTimeWait == 0 {
s.FTimeWait = cTimeWait
}
+ if s.FTraffic == nil {
+ s.FTraffic = NewTraffic(nil, nil)
+ }
return s
}
@@ -49,3 +54,7 @@ func (s *sSettings) GetNetworkMask() uint64 {
func (s *sSettings) GetRetryEnqueue() uint64 {
return s.FRetryEnqueue
}
+
+func (s *sSettings) GetTraffic() ITraffic {
+ return s.FTraffic
+}
diff --git a/pkg/network/anonymity/traffic.go b/pkg/network/anonymity/traffic.go
new file mode 100644
index 00000000..423e4a96
--- /dev/null
+++ b/pkg/network/anonymity/traffic.go
@@ -0,0 +1,25 @@
+package anonymity
+
+var (
+ _ ITraffic = &sTraffic{}
+)
+
+type sTraffic struct {
+ FDownload IDownloadF
+ FUpload IUploadF
+}
+
+func NewTraffic(d IDownloadF, u IUploadF) ITraffic {
+ return &sTraffic{
+ FDownload: d,
+ FUpload: u,
+ }
+}
+
+func (t *sTraffic) Download() IDownloadF {
+ return t.FDownload
+}
+
+func (t *sTraffic) Upload() IUploadF {
+ return t.FUpload
+}
diff --git a/pkg/network/anonymity/types.go b/pkg/network/anonymity/types.go
index eeb9b63c..fdb571b7 100644
--- a/pkg/network/anonymity/types.go
+++ b/pkg/network/anonymity/types.go
@@ -3,6 +3,7 @@ package anonymity
import (
"time"
+ "github.com/number571/go-peer/pkg/client/message"
"github.com/number571/go-peer/pkg/client/queue"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
"github.com/number571/go-peer/pkg/friends"
@@ -14,7 +15,9 @@ import (
)
type (
- IHandlerF func(INode, asymmetric.IPubKey, []byte) []byte
+ IHandlerF func(INode, asymmetric.IPubKey, []byte) []byte
+ IDownloadF func() <-chan message.IMessage
+ IUploadF func(message.IMessage) error
)
type INode interface {
@@ -35,6 +38,12 @@ type ISettings interface {
GetTimeWait() time.Duration
GetNetworkMask() uint64
GetRetryEnqueue() uint64
+ GetTraffic() ITraffic
+}
+
+type ITraffic interface {
+ Download() IDownloadF
+ Upload() IUploadF
}
type iHead interface {