From 016df9caee65b439682af4028b5d4eb70b7ff48d Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 00:47:53 +0700 Subject: [PATCH 01/47] test(registry): add unit tests for registry behavior --- coverage | 1006 ++++++++++++++++++++++++++++ internal/registry/registry_test.go | 632 +++++++++++++++++ sonar-project.properties | 4 +- 3 files changed, 1641 insertions(+), 1 deletion(-) create mode 100644 coverage create mode 100644 internal/registry/registry_test.go diff --git a/coverage b/coverage new file mode 100644 index 0000000..cddf4d2 --- /dev/null +++ b/coverage @@ -0,0 +1,1006 @@ +mode: set +tunnel_pls/main.go:27.13,28.75 1 0 +tunnel_pls/main.go:28.75,31.3 2 0 +tunnel_pls/main.go:33.2,39.16 5 0 +tunnel_pls/main.go:39.16,42.3 2 0 +tunnel_pls/main.go:44.2,50.64 3 0 +tunnel_pls/main.go:50.64,52.3 1 0 +tunnel_pls/main.go:54.2,55.16 2 0 +tunnel_pls/main.go:55.16,57.3 1 0 +tunnel_pls/main.go:59.2,60.16 2 0 +tunnel_pls/main.go:60.16,62.3 1 0 +tunnel_pls/main.go:64.2,76.41 9 0 +tunnel_pls/main.go:76.41,80.17 3 0 +tunnel_pls/main.go:80.17,82.4 1 0 +tunnel_pls/main.go:84.3,85.64 2 0 +tunnel_pls/main.go:85.64,88.4 2 0 +tunnel_pls/main.go:89.3,91.13 2 0 +tunnel_pls/main.go:91.13,92.90 1 0 +tunnel_pls/main.go:92.90,94.5 1 0 +tunnel_pls/main.go:98.2,98.12 1 0 +tunnel_pls/main.go:98.12,102.17 4 0 +tunnel_pls/main.go:102.17,105.4 2 0 +tunnel_pls/main.go:106.3,107.17 2 0 +tunnel_pls/main.go:107.17,110.4 2 0 +tunnel_pls/main.go:113.2,113.23 1 0 +tunnel_pls/main.go:113.23,114.13 1 0 +tunnel_pls/main.go:114.13,119.18 5 0 +tunnel_pls/main.go:119.18,122.5 2 0 +tunnel_pls/main.go:123.4,124.18 2 0 +tunnel_pls/main.go:124.18,127.5 2 0 +tunnel_pls/main.go:131.2,133.16 3 0 +tunnel_pls/main.go:133.16,136.3 2 0 +tunnel_pls/main.go:138.2,139.12 2 0 +tunnel_pls/main.go:139.12,141.17 2 0 +tunnel_pls/main.go:141.17,144.4 2 0 +tunnel_pls/main.go:145.3,145.14 1 0 +tunnel_pls/main.go:149.2,149.25 1 0 +tunnel_pls/main.go:149.25,150.13 1 0 +tunnel_pls/main.go:150.13,153.61 3 0 +tunnel_pls/main.go:153.61,155.5 1 0 +tunnel_pls/main.go:159.2,159.9 1 0 +tunnel_pls/main.go:160.23,161.39 1 0 +tunnel_pls/main.go:162.29,163.55 1 0 +tunnel_pls/main.go:166.2,168.16 2 0 +tunnel_pls/main.go:168.16,169.36 1 0 +tunnel_pls/main.go:169.36,171.4 1 0 +tunnel_pls/main.go:174.2,174.23 1 0 +tunnel_pls/main.go:174.23,175.43 1 0 +tunnel_pls/main.go:175.43,177.4 1 0 +tunnel_pls/internal/port/port.go:22.17,27.2 1 0 +tunnel_pls/internal/port/port.go:29.59,33.25 3 0 +tunnel_pls/internal/port/port.go:33.25,35.3 1 0 +tunnel_pls/internal/port/port.go:36.2,36.52 1 0 +tunnel_pls/internal/port/port.go:36.52,37.44 1 0 +tunnel_pls/internal/port/port.go:37.44,40.4 2 0 +tunnel_pls/internal/port/port.go:42.2,42.49 1 0 +tunnel_pls/internal/port/port.go:42.49,44.3 1 0 +tunnel_pls/internal/port/port.go:45.2,45.12 1 0 +tunnel_pls/internal/port/port.go:48.45,52.39 3 0 +tunnel_pls/internal/port/port.go:52.39,53.23 1 0 +tunnel_pls/internal/port/port.go:53.23,55.4 1 0 +tunnel_pls/internal/port/port.go:57.2,57.17 1 0 +tunnel_pls/internal/port/port.go:60.61,66.2 4 0 +tunnel_pls/internal/port/port.go:68.51,74.22 4 0 +tunnel_pls/internal/port/port.go:74.22,76.3 1 0 +tunnel_pls/internal/port/port.go:78.2,78.13 1 0 +tunnel_pls/internal/port/port.go:78.13,81.3 2 0 +tunnel_pls/internal/port/port.go:83.2,84.13 2 0 +tunnel_pls/internal/config/config.go:33.33,34.38 1 0 +tunnel_pls/internal/config/config.go:34.38,36.3 1 0 +tunnel_pls/internal/config/config.go:38.2,39.16 2 0 +tunnel_pls/internal/config/config.go:39.16,41.3 1 0 +tunnel_pls/internal/config/config.go:43.2,43.17 1 0 +tunnel_pls/internal/config/config.go:46.45,46.64 1 0 +tunnel_pls/internal/config/config.go:47.45,47.65 1 0 +tunnel_pls/internal/config/config.go:48.45,48.66 1 0 +tunnel_pls/internal/config/config.go:49.45,49.67 1 0 +tunnel_pls/internal/config/config.go:50.45,50.68 1 0 +tunnel_pls/internal/config/config.go:51.45,51.69 1 0 +tunnel_pls/internal/config/config.go:52.45,52.67 1 0 +tunnel_pls/internal/config/config.go:53.45,53.68 1 0 +tunnel_pls/internal/config/config.go:54.45,54.69 1 0 +tunnel_pls/internal/config/config.go:55.45,55.75 1 0 +tunnel_pls/internal/config/config.go:56.45,56.73 1 0 +tunnel_pls/internal/config/config.go:57.45,57.68 1 0 +tunnel_pls/internal/config/config.go:58.45,58.70 1 0 +tunnel_pls/internal/config/config.go:59.45,59.67 1 0 +tunnel_pls/internal/config/config.go:60.45,60.62 1 0 +tunnel_pls/internal/config/config.go:61.45,61.69 1 0 +tunnel_pls/internal/config/config.go:62.45,62.66 1 0 +tunnel_pls/internal/config/config.go:63.45,63.67 1 0 +tunnel_pls/internal/config/loader.go:42.31,44.16 2 0 +tunnel_pls/internal/config/loader.go:44.16,46.3 1 0 +tunnel_pls/internal/config/loader.go:48.2,61.33 10 0 +tunnel_pls/internal/config/loader.go:61.33,63.3 1 0 +tunnel_pls/internal/config/loader.go:65.2,66.16 2 0 +tunnel_pls/internal/config/loader.go:66.16,68.3 1 0 +tunnel_pls/internal/config/loader.go:70.2,79.53 7 0 +tunnel_pls/internal/config/loader.go:79.53,81.3 1 0 +tunnel_pls/internal/config/loader.go:83.2,102.8 1 0 +tunnel_pls/internal/config/loader.go:105.26,106.43 1 0 +tunnel_pls/internal/config/loader.go:106.43,108.3 1 0 +tunnel_pls/internal/config/loader.go:109.2,109.12 1 0 +tunnel_pls/internal/config/loader.go:112.44,113.55 1 0 +tunnel_pls/internal/config/loader.go:114.20,115.41 1 0 +tunnel_pls/internal/config/loader.go:116.14,117.35 1 0 +tunnel_pls/internal/config/loader.go:118.10,119.45 1 0 +tunnel_pls/internal/config/loader.go:123.50,125.15 2 0 +tunnel_pls/internal/config/loader.go:125.15,127.3 1 0 +tunnel_pls/internal/config/loader.go:129.2,130.21 2 0 +tunnel_pls/internal/config/loader.go:130.21,132.3 1 0 +tunnel_pls/internal/config/loader.go:134.2,135.16 2 0 +tunnel_pls/internal/config/loader.go:135.16,137.3 1 0 +tunnel_pls/internal/config/loader.go:139.2,140.16 2 0 +tunnel_pls/internal/config/loader.go:140.16,142.3 1 0 +tunnel_pls/internal/config/loader.go:144.2,144.40 1 0 +tunnel_pls/internal/config/loader.go:147.28,150.49 3 0 +tunnel_pls/internal/config/loader.go:150.49,153.3 2 0 +tunnel_pls/internal/config/loader.go:154.2,154.13 1 0 +tunnel_pls/internal/config/loader.go:157.37,158.34 1 0 +tunnel_pls/internal/config/loader.go:158.34,160.3 1 0 +tunnel_pls/internal/config/loader.go:161.2,161.12 1 0 +tunnel_pls/internal/config/loader.go:164.44,166.15 2 0 +tunnel_pls/internal/config/loader.go:166.15,168.3 1 0 +tunnel_pls/internal/config/loader.go:169.2,169.22 1 0 +tunnel_pls/internal/grpc/client/client.go:41.99,62.16 7 0 +tunnel_pls/internal/grpc/client/client.go:62.16,64.3 1 0 +tunnel_pls/internal/grpc/client/client.go:66.2,76.8 3 0 +tunnel_pls/internal/grpc/client/client.go:79.89,86.23 3 0 +tunnel_pls/internal/grpc/client/client.go:86.23,87.19 1 0 +tunnel_pls/internal/grpc/client/client.go:87.19,89.4 1 0 +tunnel_pls/internal/grpc/client/client.go:90.3,90.10 1 0 +tunnel_pls/internal/grpc/client/client.go:91.30,92.14 1 0 +tunnel_pls/internal/grpc/client/client.go:93.21,94.20 1 0 +tunnel_pls/internal/grpc/client/client.go:97.2,97.24 1 0 +tunnel_pls/internal/grpc/client/client.go:97.24,99.27 2 0 +tunnel_pls/internal/grpc/client/client.go:99.27,101.4 1 0 +tunnel_pls/internal/grpc/client/client.go:104.2,104.6 1 0 +tunnel_pls/internal/grpc/client/client.go:104.6,106.17 2 0 +tunnel_pls/internal/grpc/client/client.go:106.17,107.98 1 0 +tunnel_pls/internal/grpc/client/client.go:107.98,109.5 1 0 +tunnel_pls/internal/grpc/client/client.go:110.4,110.78 1 0 +tunnel_pls/internal/grpc/client/client.go:110.78,112.5 1 0 +tunnel_pls/internal/grpc/client/client.go:113.4,113.32 1 0 +tunnel_pls/internal/grpc/client/client.go:113.32,115.5 1 0 +tunnel_pls/internal/grpc/client/client.go:116.4,118.12 3 0 +tunnel_pls/internal/grpc/client/client.go:121.3,131.17 2 0 +tunnel_pls/internal/grpc/client/client.go:131.17,133.32 2 0 +tunnel_pls/internal/grpc/client/client.go:133.32,134.33 1 0 +tunnel_pls/internal/grpc/client/client.go:134.33,136.6 1 0 +tunnel_pls/internal/grpc/client/client.go:137.5,138.13 2 0 +tunnel_pls/internal/grpc/client/client.go:140.4,140.14 1 0 +tunnel_pls/internal/grpc/client/client.go:142.3,145.56 3 0 +tunnel_pls/internal/grpc/client/client.go:145.56,146.98 1 0 +tunnel_pls/internal/grpc/client/client.go:146.98,148.5 1 0 +tunnel_pls/internal/grpc/client/client.go:149.4,149.32 1 0 +tunnel_pls/internal/grpc/client/client.go:149.32,151.33 2 0 +tunnel_pls/internal/grpc/client/client.go:151.33,153.6 1 0 +tunnel_pls/internal/grpc/client/client.go:154.5,155.13 2 0 +tunnel_pls/internal/grpc/client/client.go:157.4,157.14 1 0 +tunnel_pls/internal/grpc/client/client.go:162.105,165.6 2 0 +tunnel_pls/internal/grpc/client/client.go:165.6,167.17 2 0 +tunnel_pls/internal/grpc/client/client.go:167.17,169.4 1 0 +tunnel_pls/internal/grpc/client/client.go:171.3,172.10 2 0 +tunnel_pls/internal/grpc/client/client.go:172.10,174.12 2 0 +tunnel_pls/internal/grpc/client/client.go:177.3,177.38 1 0 +tunnel_pls/internal/grpc/client/client.go:177.38,179.4 1 0 +tunnel_pls/internal/grpc/client/client.go:183.140,185.68 1 0 +tunnel_pls/internal/grpc/client/client.go:185.68,185.113 1 0 +tunnel_pls/internal/grpc/client/client.go:186.68,186.114 1 0 +tunnel_pls/internal/grpc/client/client.go:187.68,187.119 1 0 +tunnel_pls/internal/grpc/client/client.go:191.122,198.16 6 0 +tunnel_pls/internal/grpc/client/client.go:198.16,205.3 1 0 +tunnel_pls/internal/grpc/client/client.go:207.2,207.172 1 0 +tunnel_pls/internal/grpc/client/client.go:207.172,214.3 1 0 +tunnel_pls/internal/grpc/client/client.go:216.2,222.36 2 0 +tunnel_pls/internal/grpc/client/client.go:225.123,229.31 3 0 +tunnel_pls/internal/grpc/client/client.go:229.31,239.3 2 0 +tunnel_pls/internal/grpc/client/client.go:241.2,246.34 1 0 +tunnel_pls/internal/grpc/client/client.go:249.128,255.16 5 0 +tunnel_pls/internal/grpc/client/client.go:255.16,262.3 1 0 +tunnel_pls/internal/grpc/client/client.go:264.2,265.16 2 0 +tunnel_pls/internal/grpc/client/client.go:265.16,272.3 1 0 +tunnel_pls/internal/grpc/client/client.go:274.2,274.55 1 0 +tunnel_pls/internal/grpc/client/client.go:274.55,281.3 1 0 +tunnel_pls/internal/grpc/client/client.go:283.2,288.42 1 0 +tunnel_pls/internal/grpc/client/client.go:291.129,292.45 1 0 +tunnel_pls/internal/grpc/client/client.go:292.45,293.31 1 0 +tunnel_pls/internal/grpc/client/client.go:293.31,295.4 1 0 +tunnel_pls/internal/grpc/client/client.go:296.3,296.37 1 0 +tunnel_pls/internal/grpc/client/client.go:298.2,298.12 1 0 +tunnel_pls/internal/grpc/client/client.go:301.82,302.11 1 0 +tunnel_pls/internal/grpc/client/client.go:303.29,304.35 1 0 +tunnel_pls/internal/grpc/client/client.go:305.28,306.34 1 0 +tunnel_pls/internal/grpc/client/client.go:307.10,308.77 1 0 +tunnel_pls/internal/grpc/client/client.go:312.48,314.2 1 0 +tunnel_pls/internal/grpc/client/client.go:316.109,318.16 2 0 +tunnel_pls/internal/grpc/client/client.go:318.16,320.3 1 0 +tunnel_pls/internal/grpc/client/client.go:322.2,322.82 1 0 +tunnel_pls/internal/grpc/client/client.go:322.82,324.3 1 0 +tunnel_pls/internal/grpc/client/client.go:325.2,325.35 1 0 +tunnel_pls/internal/grpc/client/client.go:328.63,333.16 3 0 +tunnel_pls/internal/grpc/client/client.go:333.16,335.3 1 0 +tunnel_pls/internal/grpc/client/client.go:336.2,336.63 1 0 +tunnel_pls/internal/grpc/client/client.go:336.63,338.3 1 0 +tunnel_pls/internal/grpc/client/client.go:339.2,339.12 1 0 +tunnel_pls/internal/grpc/client/client.go:342.32,343.19 1 0 +tunnel_pls/internal/grpc/client/client.go:343.19,347.3 3 0 +tunnel_pls/internal/grpc/client/client.go:348.2,348.12 1 0 +tunnel_pls/internal/grpc/client/client.go:351.52,352.15 1 0 +tunnel_pls/internal/grpc/client/client.go:352.15,354.3 1 0 +tunnel_pls/internal/grpc/client/client.go:355.2,355.16 1 0 +tunnel_pls/internal/grpc/client/client.go:355.16,357.3 1 0 +tunnel_pls/internal/grpc/client/client.go:358.2,358.28 1 0 +tunnel_pls/internal/grpc/client/client.go:358.28,360.3 1 0 +tunnel_pls/internal/grpc/client/client.go:361.2,361.26 1 0 +tunnel_pls/internal/grpc/client/client.go:362.65,363.14 1 0 +tunnel_pls/internal/grpc/client/client.go:364.10,365.15 1 0 +tunnel_pls/internal/http/header/parser.go:11.4,12.25 1 0 +tunnel_pls/internal/http/header/parser.go:12.25,14.20 2 0 +tunnel_pls/internal/http/header/parser.go:14.20,16.4 1 0 +tunnel_pls/internal/http/header/parser.go:18.3,20.21 2 0 +tunnel_pls/internal/http/header/parser.go:20.21,21.9 1 0 +tunnel_pls/internal/http/header/parser.go:24.3,25.21 2 0 +tunnel_pls/internal/http/header/parser.go:25.21,29.4 3 0 +tunnel_pls/internal/http/header/parser.go:31.3,31.32 1 0 +tunnel_pls/internal/http/header/parser.go:31.32,32.9 1 0 +tunnel_pls/internal/http/header/parser.go:35.3,35.36 1 0 +tunnel_pls/internal/http/header/parser.go:39.70,45.19 3 0 +tunnel_pls/internal/http/header/parser.go:45.19,47.3 1 0 +tunnel_pls/internal/http/header/parser.go:49.2,53.16 5 0 +tunnel_pls/internal/http/header/parser.go:53.16,55.3 1 0 +tunnel_pls/internal/http/header/parser.go:57.2,61.20 3 0 +tunnel_pls/internal/http/header/parser.go:64.81,66.22 2 0 +tunnel_pls/internal/http/header/parser.go:66.22,68.3 1 0 +tunnel_pls/internal/http/header/parser.go:70.2,71.23 2 0 +tunnel_pls/internal/http/header/parser.go:71.23,73.3 1 0 +tunnel_pls/internal/http/header/parser.go:74.2,80.35 5 0 +tunnel_pls/internal/http/header/parser.go:83.70,89.16 3 0 +tunnel_pls/internal/http/header/parser.go:89.16,91.3 1 0 +tunnel_pls/internal/http/header/parser.go:93.2,98.16 5 0 +tunnel_pls/internal/http/header/parser.go:98.16,100.3 1 0 +tunnel_pls/internal/http/header/parser.go:102.2,102.6 1 0 +tunnel_pls/internal/http/header/parser.go:102.6,104.17 2 0 +tunnel_pls/internal/http/header/parser.go:104.17,106.4 1 0 +tunnel_pls/internal/http/header/parser.go:108.3,110.26 2 0 +tunnel_pls/internal/http/header/parser.go:110.26,111.9 1 0 +tunnel_pls/internal/http/header/parser.go:114.3,115.21 2 0 +tunnel_pls/internal/http/header/parser.go:115.21,116.12 1 0 +tunnel_pls/internal/http/header/parser.go:119.3,122.46 3 0 +tunnel_pls/internal/http/header/parser.go:125.2,125.20 1 0 +tunnel_pls/internal/http/header/parser.go:128.67,130.32 2 0 +tunnel_pls/internal/http/header/parser.go:130.32,132.3 1 0 +tunnel_pls/internal/http/header/parser.go:133.2,139.32 5 0 +tunnel_pls/internal/http/header/parser.go:139.32,144.3 4 0 +tunnel_pls/internal/http/header/parser.go:146.2,147.12 2 0 +tunnel_pls/internal/http/header/request.go:8.55,9.23 1 0 +tunnel_pls/internal/http/header/request.go:10.14,11.34 1 0 +tunnel_pls/internal/http/header/request.go:12.21,13.35 1 0 +tunnel_pls/internal/http/header/request.go:14.10,15.52 1 0 +tunnel_pls/internal/http/header/request.go:19.52,21.9 2 0 +tunnel_pls/internal/http/header/request.go:21.9,23.3 1 0 +tunnel_pls/internal/http/header/request.go:24.2,24.12 1 0 +tunnel_pls/internal/http/header/request.go:27.57,29.2 1 0 +tunnel_pls/internal/http/header/request.go:31.46,33.2 1 0 +tunnel_pls/internal/http/header/request.go:35.43,37.2 1 0 +tunnel_pls/internal/http/header/request.go:39.41,41.2 1 0 +tunnel_pls/internal/http/header/request.go:43.44,45.2 1 0 +tunnel_pls/internal/http/header/request.go:47.45,49.2 1 0 +tunnel_pls/internal/http/header/response.go:8.61,15.19 3 0 +tunnel_pls/internal/http/header/response.go:15.19,17.3 1 0 +tunnel_pls/internal/http/header/response.go:19.2,23.20 4 0 +tunnel_pls/internal/http/header/response.go:26.54,28.2 1 0 +tunnel_pls/internal/http/header/response.go:30.59,32.2 1 0 +tunnel_pls/internal/http/header/response.go:34.48,36.2 1 0 +tunnel_pls/internal/http/header/response.go:38.47,40.2 1 0 +tunnel_pls/internal/random/random.go:5.55,9.40 3 0 +tunnel_pls/internal/random/random.go:9.40,11.3 1 0 +tunnel_pls/internal/random/random.go:13.2,13.19 1 0 +tunnel_pls/internal/random/random.go:13.19,15.3 1 0 +tunnel_pls/internal/random/random.go:17.2,17.23 1 0 +tunnel_pls/internal/key/key.go:15.53,16.44 1 0 +tunnel_pls/internal/key/key.go:16.44,19.3 2 0 +tunnel_pls/internal/key/key.go:21.2,24.16 3 0 +tunnel_pls/internal/key/key.go:24.16,26.3 1 0 +tunnel_pls/internal/key/key.go:28.2,34.47 3 0 +tunnel_pls/internal/key/key.go:34.47,36.3 1 0 +tunnel_pls/internal/key/key.go:38.2,39.16 2 0 +tunnel_pls/internal/key/key.go:39.16,41.3 1 0 +tunnel_pls/internal/key/key.go:42.2,44.66 2 0 +tunnel_pls/internal/key/key.go:44.66,46.3 1 0 +tunnel_pls/internal/key/key.go:48.2,49.16 2 0 +tunnel_pls/internal/key/key.go:49.16,51.3 1 0 +tunnel_pls/internal/key/key.go:53.2,55.16 3 0 +tunnel_pls/internal/key/key.go:55.16,57.3 1 0 +tunnel_pls/internal/key/key.go:58.2,61.16 3 0 +tunnel_pls/internal/key/key.go:61.16,63.3 1 0 +tunnel_pls/internal/key/key.go:65.2,66.12 2 0 +tunnel_pls/internal/middleware/forwardedfor.go:12.51,14.2 1 0 +tunnel_pls/internal/middleware/forwardedfor.go:16.74,18.16 2 0 +tunnel_pls/internal/middleware/forwardedfor.go:18.16,20.3 1 0 +tunnel_pls/internal/middleware/forwardedfor.go:21.2,22.12 2 0 +tunnel_pls/internal/middleware/tunnelfingerprint.go:9.48,11.2 1 0 +tunnel_pls/internal/middleware/tunnelfingerprint.go:13.93,16.2 2 0 +tunnel_pls/internal/http/stream/parser.go:5.73,9.2 3 0 +tunnel_pls/internal/http/stream/parser.go:11.36,15.81 3 0 +tunnel_pls/internal/http/stream/parser.go:15.81,17.3 1 0 +tunnel_pls/internal/http/stream/parser.go:19.2,19.33 1 0 +tunnel_pls/internal/http/stream/parser.go:19.33,20.21 1 0 +tunnel_pls/internal/http/stream/parser.go:20.21,21.9 1 0 +tunnel_pls/internal/http/stream/parser.go:23.3,24.20 2 0 +tunnel_pls/internal/http/stream/parser.go:24.20,26.4 1 0 +tunnel_pls/internal/http/stream/parser.go:28.2,28.13 1 0 +tunnel_pls/internal/http/stream/reader.go:8.45,11.29 3 0 +tunnel_pls/internal/http/stream/reader.go:11.29,13.3 1 0 +tunnel_pls/internal/http/stream/reader.go:15.2,18.24 3 0 +tunnel_pls/internal/http/stream/reader.go:18.24,20.3 1 0 +tunnel_pls/internal/http/stream/reader.go:22.2,24.31 2 0 +tunnel_pls/internal/http/stream/reader.go:24.31,27.3 2 0 +tunnel_pls/internal/http/stream/reader.go:29.2,29.55 1 0 +tunnel_pls/internal/http/stream/reader.go:32.81,34.16 2 0 +tunnel_pls/internal/http/stream/reader.go:34.16,36.3 1 0 +tunnel_pls/internal/http/stream/reader.go:38.2,38.57 1 0 +tunnel_pls/internal/http/stream/reader.go:38.57,40.3 1 0 +tunnel_pls/internal/http/stream/reader.go:42.2,44.31 3 0 +tunnel_pls/internal/http/stream/reader.go:47.63,50.2 2 0 +tunnel_pls/internal/http/stream/stream.go:41.72,48.2 1 0 +tunnel_pls/internal/http/stream/stream.go:50.39,52.2 1 0 +tunnel_pls/internal/http/stream/stream.go:54.73,56.2 1 0 +tunnel_pls/internal/http/stream/stream.go:58.71,60.2 1 0 +tunnel_pls/internal/http/stream/stream.go:62.63,64.2 1 0 +tunnel_pls/internal/http/stream/stream.go:66.69,68.2 1 0 +tunnel_pls/internal/http/stream/stream.go:70.71,72.2 1 0 +tunnel_pls/internal/http/stream/stream.go:74.31,76.2 1 0 +tunnel_pls/internal/http/stream/stream.go:78.36,79.67 1 0 +tunnel_pls/internal/http/stream/stream.go:79.67,81.3 1 0 +tunnel_pls/internal/http/stream/stream.go:82.2,82.19 1 0 +tunnel_pls/internal/http/stream/stream.go:85.75,86.44 1 0 +tunnel_pls/internal/http/stream/stream.go:86.44,87.48 1 0 +tunnel_pls/internal/http/stream/stream.go:87.48,90.4 2 0 +tunnel_pls/internal/http/stream/stream.go:92.2,92.12 1 0 +tunnel_pls/internal/http/stream/stream.go:95.95,96.45 1 0 +tunnel_pls/internal/http/stream/stream.go:96.45,97.60 1 0 +tunnel_pls/internal/http/stream/stream.go:97.60,100.4 2 0 +tunnel_pls/internal/http/stream/stream.go:102.2,102.12 1 0 +tunnel_pls/internal/http/stream/writer.go:8.46,9.33 1 0 +tunnel_pls/internal/http/stream/writer.go:9.33,11.3 1 0 +tunnel_pls/internal/http/stream/writer.go:13.2,13.26 1 0 +tunnel_pls/internal/http/stream/writer.go:13.26,15.3 1 0 +tunnel_pls/internal/http/stream/writer.go:17.2,20.24 3 0 +tunnel_pls/internal/http/stream/writer.go:20.24,22.3 1 0 +tunnel_pls/internal/http/stream/writer.go:24.2,24.52 1 0 +tunnel_pls/internal/http/stream/writer.go:27.54,29.2 1 0 +tunnel_pls/internal/http/stream/writer.go:31.82,34.31 2 0 +tunnel_pls/internal/http/stream/writer.go:34.31,36.3 1 0 +tunnel_pls/internal/http/stream/writer.go:38.2,38.69 1 0 +tunnel_pls/internal/http/stream/writer.go:38.69,40.3 1 0 +tunnel_pls/internal/http/stream/writer.go:42.2,43.20 2 0 +tunnel_pls/internal/http/stream/writer.go:46.47,50.16 4 0 +tunnel_pls/internal/http/stream/writer.go:50.16,52.3 1 0 +tunnel_pls/internal/http/stream/writer.go:53.2,53.20 1 0 +tunnel_pls/internal/http/stream/writer.go:56.72,58.16 2 0 +tunnel_pls/internal/http/stream/writer.go:58.16,60.3 1 0 +tunnel_pls/internal/http/stream/writer.go:62.2,62.69 1 0 +tunnel_pls/internal/http/stream/writer.go:62.69,64.3 1 0 +tunnel_pls/internal/http/stream/writer.go:66.2,69.68 3 0 +tunnel_pls/internal/http/stream/writer.go:69.68,71.3 1 0 +tunnel_pls/internal/http/stream/writer.go:73.2,73.12 1 0 +tunnel_pls/internal/http/stream/writer.go:76.67,77.51 1 0 +tunnel_pls/internal/http/stream/writer.go:77.51,79.3 1 0 +tunnel_pls/internal/http/stream/writer.go:81.2,81.23 1 0 +tunnel_pls/internal/http/stream/writer.go:81.23,82.54 1 0 +tunnel_pls/internal/http/stream/writer.go:82.54,84.4 1 0 +tunnel_pls/internal/http/stream/writer.go:87.2,87.12 1 0 +tunnel_pls/internal/registry/registry.go:46.29,51.2 1 1 +tunnel_pls/internal/registry/registry.go:53.62,58.9 4 1 +tunnel_pls/internal/registry/registry.go:58.9,60.3 1 1 +tunnel_pls/internal/registry/registry.go:62.2,63.9 2 1 +tunnel_pls/internal/registry/registry.go:63.9,65.3 1 1 +tunnel_pls/internal/registry/registry.go:66.2,66.20 1 1 +tunnel_pls/internal/registry/registry.go:69.83,74.9 4 1 +tunnel_pls/internal/registry/registry.go:74.9,76.3 1 1 +tunnel_pls/internal/registry/registry.go:77.2,77.20 1 1 +tunnel_pls/internal/registry/registry.go:80.66,81.32 1 1 +tunnel_pls/internal/registry/registry.go:81.32,83.3 1 1 +tunnel_pls/internal/registry/registry.go:85.2,85.41 1 1 +tunnel_pls/internal/registry/registry.go:85.41,87.3 1 1 +tunnel_pls/internal/registry/registry.go:89.2,89.32 1 1 +tunnel_pls/internal/registry/registry.go:89.32,91.3 1 1 +tunnel_pls/internal/registry/registry.go:93.2,93.29 1 1 +tunnel_pls/internal/registry/registry.go:93.29,95.3 1 1 +tunnel_pls/internal/registry/registry.go:97.2,100.66 3 1 +tunnel_pls/internal/registry/registry.go:100.66,102.3 1 1 +tunnel_pls/internal/registry/registry.go:103.2,104.9 2 1 +tunnel_pls/internal/registry/registry.go:104.9,106.3 1 1 +tunnel_pls/internal/registry/registry.go:108.2,114.27 5 1 +tunnel_pls/internal/registry/registry.go:114.27,116.3 1 0 +tunnel_pls/internal/registry/registry.go:117.2,118.12 2 1 +tunnel_pls/internal/registry/registry.go:121.74,125.43 3 1 +tunnel_pls/internal/registry/registry.go:125.43,127.3 1 1 +tunnel_pls/internal/registry/registry.go:129.2,130.29 2 1 +tunnel_pls/internal/registry/registry.go:130.29,132.3 1 1 +tunnel_pls/internal/registry/registry.go:134.2,136.13 3 1 +tunnel_pls/internal/registry/registry.go:139.65,144.17 4 1 +tunnel_pls/internal/registry/registry.go:144.17,146.3 1 1 +tunnel_pls/internal/registry/registry.go:148.2,149.22 2 1 +tunnel_pls/internal/registry/registry.go:149.22,151.3 1 1 +tunnel_pls/internal/registry/registry.go:152.2,152.17 1 1 +tunnel_pls/internal/registry/registry.go:155.36,160.9 4 1 +tunnel_pls/internal/registry/registry.go:160.9,162.3 1 1 +tunnel_pls/internal/registry/registry.go:164.2,165.32 2 1 +tunnel_pls/internal/registry/registry.go:165.32,167.3 1 1 +tunnel_pls/internal/registry/registry.go:168.2,168.26 1 1 +tunnel_pls/internal/registry/registry.go:171.36,172.60 1 1 +tunnel_pls/internal/registry/registry.go:172.60,174.3 1 1 +tunnel_pls/internal/registry/registry.go:176.2,176.48 1 1 +tunnel_pls/internal/registry/registry.go:176.48,178.3 1 1 +tunnel_pls/internal/registry/registry.go:180.2,180.25 1 1 +tunnel_pls/internal/registry/registry.go:180.25,181.32 1 1 +tunnel_pls/internal/registry/registry.go:181.32,183.4 1 1 +tunnel_pls/internal/registry/registry.go:186.2,186.13 1 1 +tunnel_pls/internal/registry/registry.go:189.35,191.2 1 1 +tunnel_pls/internal/registry/registry.go:193.40,196.2 2 1 +tunnel_pls/session/lifecycle/lifecycle.go:36.145,48.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:61.50,63.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:65.35,67.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:69.53,71.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:72.43,74.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:75.59,77.66 2 0 +tunnel_pls/session/lifecycle/lifecycle.go:77.66,79.3 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:82.56,83.14 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:83.14,85.3 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:86.2,86.12 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:89.35,93.49 3 0 +tunnel_pls/session/lifecycle/lifecycle.go:93.49,95.3 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:97.2,97.46 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:97.46,99.3 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:101.2,108.39 4 0 +tunnel_pls/session/lifecycle/lifecycle.go:108.39,109.88 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:109.88,111.4 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:112.3,112.45 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:112.45,114.4 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:117.2,117.29 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:120.37,122.2 1 0 +tunnel_pls/session/lifecycle/lifecycle.go:124.43,126.2 1 0 +tunnel_pls/session/interaction/coming_soon.go:11.71,14.2 2 0 +tunnel_pls/session/interaction/coming_soon.go:16.41,21.15 4 0 +tunnel_pls/session/interaction/coming_soon.go:21.15,24.3 2 0 +tunnel_pls/session/interaction/coming_soon.go:24.8,27.3 2 0 +tunnel_pls/session/interaction/coming_soon.go:29.2,57.41 8 0 +tunnel_pls/session/interaction/coming_soon.go:57.41,59.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:59.8,61.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:62.2,66.41 4 0 +tunnel_pls/session/interaction/coming_soon.go:66.41,68.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:68.8,70.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:71.2,75.41 4 0 +tunnel_pls/session/interaction/coming_soon.go:75.41,77.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:77.8,79.3 1 0 +tunnel_pls/session/interaction/coming_soon.go:80.2,82.19 2 0 +tunnel_pls/session/interaction/commands.go:13.69,16.9 2 0 +tunnel_pls/session/interaction/commands.go:17.39,19.56 2 0 +tunnel_pls/session/interaction/commands.go:20.31,22.26 2 0 +tunnel_pls/session/interaction/commands.go:22.26,24.27 2 0 +tunnel_pls/session/interaction/commands.go:24.27,30.5 5 0 +tunnel_pls/session/interaction/commands.go:30.10,30.41 1 0 +tunnel_pls/session/interaction/commands.go:30.41,34.5 3 0 +tunnel_pls/session/interaction/commands.go:35.4,36.17 2 0 +tunnel_pls/session/interaction/commands.go:38.29,40.56 2 0 +tunnel_pls/session/interaction/commands.go:42.2,43.15 2 0 +tunnel_pls/session/interaction/commands.go:46.39,64.41 7 0 +tunnel_pls/session/interaction/commands.go:64.41,66.3 1 0 +tunnel_pls/session/interaction/commands.go:66.8,68.3 1 0 +tunnel_pls/session/interaction/commands.go:69.2,75.15 6 0 +tunnel_pls/session/interaction/commands.go:75.15,77.3 1 0 +tunnel_pls/session/interaction/commands.go:77.8,79.3 1 0 +tunnel_pls/session/interaction/commands.go:80.2,82.19 2 0 +tunnel_pls/session/interaction/dashboard.go:13.70,14.9 1 0 +tunnel_pls/session/interaction/dashboard.go:15.39,17.66 2 0 +tunnel_pls/session/interaction/dashboard.go:18.42,20.56 2 0 +tunnel_pls/session/interaction/dashboard.go:22.2,22.15 1 0 +tunnel_pls/session/interaction/dashboard.go:25.40,54.15 9 0 +tunnel_pls/session/interaction/dashboard.go:54.15,56.3 1 0 +tunnel_pls/session/interaction/dashboard.go:56.8,58.3 1 0 +tunnel_pls/session/interaction/dashboard.go:60.2,66.41 3 0 +tunnel_pls/session/interaction/dashboard.go:66.41,68.3 1 0 +tunnel_pls/session/interaction/dashboard.go:68.8,68.22 1 0 +tunnel_pls/session/interaction/dashboard.go:68.22,72.3 1 0 +tunnel_pls/session/interaction/dashboard.go:72.8,80.3 1 0 +tunnel_pls/session/interaction/dashboard.go:82.2,85.42 3 0 +tunnel_pls/session/interaction/dashboard.go:85.42,89.3 3 0 +tunnel_pls/session/interaction/dashboard.go:89.8,91.3 1 0 +tunnel_pls/session/interaction/dashboard.go:93.2,96.15 4 0 +tunnel_pls/session/interaction/dashboard.go:96.15,99.3 2 0 +tunnel_pls/session/interaction/dashboard.go:99.8,102.3 2 0 +tunnel_pls/session/interaction/dashboard.go:104.2,126.41 7 0 +tunnel_pls/session/interaction/dashboard.go:126.41,131.3 1 0 +tunnel_pls/session/interaction/dashboard.go:131.8,136.3 1 0 +tunnel_pls/session/interaction/dashboard.go:138.2,142.41 4 0 +tunnel_pls/session/interaction/dashboard.go:142.41,144.3 1 0 +tunnel_pls/session/interaction/dashboard.go:144.8,144.22 1 0 +tunnel_pls/session/interaction/dashboard.go:144.22,146.3 1 0 +tunnel_pls/session/interaction/dashboard.go:146.8,148.3 1 0 +tunnel_pls/session/interaction/dashboard.go:149.2,153.15 4 0 +tunnel_pls/session/interaction/dashboard.go:153.15,155.3 1 0 +tunnel_pls/session/interaction/dashboard.go:155.8,157.3 1 0 +tunnel_pls/session/interaction/dashboard.go:159.2,165.41 4 0 +tunnel_pls/session/interaction/dashboard.go:165.41,168.3 2 0 +tunnel_pls/session/interaction/dashboard.go:168.8,171.3 2 0 +tunnel_pls/session/interaction/dashboard.go:173.2,177.42 4 0 +tunnel_pls/session/interaction/dashboard.go:177.42,183.3 3 0 +tunnel_pls/session/interaction/dashboard.go:185.2,185.19 1 0 +tunnel_pls/session/interaction/interaction.go:55.56,57.2 1 0 +tunnel_pls/session/interaction/interaction.go:59.52,61.2 1 0 +tunnel_pls/session/interaction/interaction.go:63.50,64.22 1 0 +tunnel_pls/session/interaction/interaction.go:64.22,67.3 2 0 +tunnel_pls/session/interaction/interaction.go:68.2,68.12 1 0 +tunnel_pls/session/interaction/interaction.go:70.39,71.22 1 0 +tunnel_pls/session/interaction/interaction.go:71.22,76.3 1 0 +tunnel_pls/session/interaction/interaction.go:79.148,93.2 2 0 +tunnel_pls/session/interaction/interaction.go:95.55,97.2 1 0 +tunnel_pls/session/interaction/interaction.go:99.30,100.21 1 0 +tunnel_pls/session/interaction/interaction.go:100.21,102.3 1 0 +tunnel_pls/session/interaction/interaction.go:103.2,103.22 1 0 +tunnel_pls/session/interaction/interaction.go:103.22,106.3 2 0 +tunnel_pls/session/interaction/interaction.go:109.58,111.27 1 0 +tunnel_pls/session/interaction/interaction.go:112.15,114.56 2 0 +tunnel_pls/session/interaction/interaction.go:116.25,122.21 5 0 +tunnel_pls/session/interaction/interaction.go:122.21,124.4 1 0 +tunnel_pls/session/interaction/interaction.go:124.9,126.4 1 0 +tunnel_pls/session/interaction/interaction.go:127.3,127.16 1 0 +tunnel_pls/session/interaction/interaction.go:129.19,131.66 2 0 +tunnel_pls/session/interaction/interaction.go:133.18,134.26 1 0 +tunnel_pls/session/interaction/interaction.go:134.26,136.4 1 0 +tunnel_pls/session/interaction/interaction.go:138.3,138.20 1 0 +tunnel_pls/session/interaction/interaction.go:138.20,140.4 1 0 +tunnel_pls/session/interaction/interaction.go:142.3,142.24 1 0 +tunnel_pls/session/interaction/interaction.go:142.24,144.4 1 0 +tunnel_pls/session/interaction/interaction.go:146.3,146.32 1 0 +tunnel_pls/session/interaction/interaction.go:149.2,149.15 1 0 +tunnel_pls/session/interaction/interaction.go:152.32,153.22 1 0 +tunnel_pls/session/interaction/interaction.go:153.22,155.3 1 0 +tunnel_pls/session/interaction/interaction.go:158.31,159.16 1 0 +tunnel_pls/session/interaction/interaction.go:159.16,161.3 1 0 +tunnel_pls/session/interaction/interaction.go:163.2,163.25 1 0 +tunnel_pls/session/interaction/interaction.go:163.25,165.3 1 0 +tunnel_pls/session/interaction/interaction.go:167.2,167.19 1 0 +tunnel_pls/session/interaction/interaction.go:167.19,169.3 1 0 +tunnel_pls/session/interaction/interaction.go:171.2,171.23 1 0 +tunnel_pls/session/interaction/interaction.go:171.23,173.3 1 0 +tunnel_pls/session/interaction/interaction.go:175.2,175.26 1 0 +tunnel_pls/session/interaction/interaction.go:178.31,179.45 1 0 +tunnel_pls/session/interaction/interaction.go:179.45,181.3 1 0 +tunnel_pls/session/interaction/interaction.go:182.2,185.27 3 0 +tunnel_pls/session/interaction/interaction.go:185.27,187.3 1 0 +tunnel_pls/session/interaction/interaction.go:189.2,249.16 19 0 +tunnel_pls/session/interaction/interaction.go:249.16,251.3 1 0 +tunnel_pls/session/interaction/interaction.go:252.2,254.24 3 0 +tunnel_pls/session/interaction/interaction.go:254.24,255.39 1 0 +tunnel_pls/session/interaction/interaction.go:255.39,257.4 1 0 +tunnel_pls/session/interaction/model.go:20.43,20.60 1 0 +tunnel_pls/session/interaction/model.go:21.43,21.60 1 0 +tunnel_pls/session/interaction/model.go:22.43,22.60 1 0 +tunnel_pls/session/interaction/model.go:43.39,44.42 1 0 +tunnel_pls/session/interaction/model.go:44.42,46.3 1 0 +tunnel_pls/session/interaction/model.go:47.2,47.53 1 0 +tunnel_pls/session/interaction/model.go:58.32,60.2 1 0 +tunnel_pls/session/interaction/model.go:62.75,64.22 2 0 +tunnel_pls/session/interaction/model.go:64.22,66.3 1 0 +tunnel_pls/session/interaction/model.go:67.2,67.22 1 0 +tunnel_pls/session/interaction/model.go:67.22,69.3 1 0 +tunnel_pls/session/interaction/model.go:70.2,70.14 1 0 +tunnel_pls/session/interaction/model.go:73.60,75.2 1 0 +tunnel_pls/session/interaction/model.go:77.53,78.25 1 0 +tunnel_pls/session/interaction/model.go:78.25,80.3 1 0 +tunnel_pls/session/interaction/model.go:81.2,81.19 1 0 +tunnel_pls/session/interaction/model.go:81.19,83.3 1 0 +tunnel_pls/session/interaction/model.go:84.2,84.32 1 0 +tunnel_pls/session/interaction/model.go:87.39,88.47 1 0 +tunnel_pls/session/interaction/model.go:88.47,90.3 1 0 +tunnel_pls/session/interaction/model.go:93.58,95.2 1 0 +tunnel_pls/session/interaction/slug.go:15.65,18.42 2 0 +tunnel_pls/session/interaction/slug.go:18.42,22.3 3 0 +tunnel_pls/session/interaction/slug.go:24.2,24.22 1 0 +tunnel_pls/session/interaction/slug.go:25.13,28.56 3 0 +tunnel_pls/session/interaction/slug.go:29.15,37.18 2 0 +tunnel_pls/session/interaction/slug.go:37.18,40.4 2 0 +tunnel_pls/session/interaction/slug.go:41.3,43.56 3 0 +tunnel_pls/session/interaction/slug.go:44.16,47.56 3 0 +tunnel_pls/session/interaction/slug.go:48.10,49.40 1 0 +tunnel_pls/session/interaction/slug.go:49.40,51.18 2 0 +tunnel_pls/session/interaction/slug.go:51.18,53.5 1 0 +tunnel_pls/session/interaction/slug.go:54.4,56.46 3 0 +tunnel_pls/session/interaction/slug.go:58.3,60.16 3 0 +tunnel_pls/session/interaction/slug.go:64.35,70.19 5 0 +tunnel_pls/session/interaction/slug.go:70.19,73.3 2 0 +tunnel_pls/session/interaction/slug.go:73.8,73.22 1 0 +tunnel_pls/session/interaction/slug.go:73.22,76.3 2 0 +tunnel_pls/session/interaction/slug.go:76.8,79.3 2 0 +tunnel_pls/session/interaction/slug.go:81.2,125.19 10 0 +tunnel_pls/session/interaction/slug.go:125.19,127.3 1 0 +tunnel_pls/session/interaction/slug.go:127.8,129.3 1 0 +tunnel_pls/session/interaction/slug.go:130.2,133.42 3 0 +tunnel_pls/session/interaction/slug.go:133.42,147.20 4 0 +tunnel_pls/session/interaction/slug.go:147.20,149.4 1 0 +tunnel_pls/session/interaction/slug.go:149.9,151.4 1 0 +tunnel_pls/session/interaction/slug.go:152.3,156.20 4 0 +tunnel_pls/session/interaction/slug.go:156.20,158.4 1 0 +tunnel_pls/session/interaction/slug.go:158.9,160.4 1 0 +tunnel_pls/session/interaction/slug.go:161.3,162.20 2 0 +tunnel_pls/session/interaction/slug.go:165.2,166.19 2 0 +tunnel_pls/session/interaction/slug.go:166.19,168.3 1 0 +tunnel_pls/session/interaction/slug.go:168.8,168.22 1 0 +tunnel_pls/session/interaction/slug.go:168.22,170.3 1 0 +tunnel_pls/session/interaction/slug.go:170.8,172.3 1 0 +tunnel_pls/session/interaction/slug.go:173.2,177.19 4 0 +tunnel_pls/session/interaction/slug.go:177.19,179.3 1 0 +tunnel_pls/session/interaction/slug.go:179.8,181.3 1 0 +tunnel_pls/session/interaction/slug.go:182.2,185.23 3 0 +tunnel_pls/session/interaction/slug.go:185.23,196.3 5 0 +tunnel_pls/session/interaction/slug.go:196.8,199.3 2 0 +tunnel_pls/session/interaction/slug.go:201.2,204.39 3 0 +tunnel_pls/session/interaction/slug.go:204.39,206.3 1 0 +tunnel_pls/session/interaction/slug.go:208.2,216.19 5 0 +tunnel_pls/session/interaction/slug.go:216.19,218.3 1 0 +tunnel_pls/session/interaction/slug.go:218.8,220.3 1 0 +tunnel_pls/session/interaction/slug.go:221.2,223.19 2 0 +tunnel_pls/session/slug/slug.go:12.17,16.2 1 0 +tunnel_pls/session/slug/slug.go:18.32,20.2 1 0 +tunnel_pls/session/slug/slug.go:22.33,24.2 1 0 +tunnel_pls/internal/version/version.go:11.26,13.2 1 0 +tunnel_pls/internal/version/version.go:15.31,17.2 1 0 +tunnel_pls/session/session.go:52.201,68.2 5 0 +tunnel_pls/session/session.go:70.51,72.2 1 0 +tunnel_pls/session/session.go:74.57,76.2 1 0 +tunnel_pls/session/session.go:78.51,80.2 1 0 +tunnel_pls/session/session.go:82.36,84.2 1 0 +tunnel_pls/session/session.go:86.42,92.9 3 0 +tunnel_pls/session/session.go:92.9,94.3 1 0 +tunnel_pls/session/session.go:96.2,102.3 1 0 +tunnel_pls/session/session.go:105.33,106.45 1 0 +tunnel_pls/session/session.go:106.45,108.3 1 0 +tunnel_pls/session/session.go:110.2,111.21 2 0 +tunnel_pls/session/session.go:111.21,113.3 1 0 +tunnel_pls/session/session.go:115.2,115.34 1 0 +tunnel_pls/session/session.go:115.34,117.3 1 0 +tunnel_pls/session/session.go:119.2,119.55 1 0 +tunnel_pls/session/session.go:119.55,121.3 1 0 +tunnel_pls/session/session.go:122.2,124.30 2 0 +tunnel_pls/session/session.go:127.44,128.9 1 0 +tunnel_pls/session/session.go:129.34,130.10 1 0 +tunnel_pls/session/session.go:130.10,133.4 2 0 +tunnel_pls/session/session.go:134.3,134.41 1 0 +tunnel_pls/session/session.go:135.44,137.13 2 0 +tunnel_pls/session/session.go:141.70,143.16 2 0 +tunnel_pls/session/session.go:143.16,146.3 2 0 +tunnel_pls/session/session.go:148.2,148.12 1 0 +tunnel_pls/session/session.go:148.12,150.17 2 0 +tunnel_pls/session/session.go:150.17,152.4 1 0 +tunnel_pls/session/session.go:155.2,159.12 4 0 +tunnel_pls/session/session.go:162.55,164.16 2 0 +tunnel_pls/session/session.go:164.16,166.3 1 0 +tunnel_pls/session/session.go:167.2,167.43 1 0 +tunnel_pls/session/session.go:167.43,169.3 1 0 +tunnel_pls/session/session.go:170.2,170.44 1 0 +tunnel_pls/session/session.go:173.51,177.2 1 0 +tunnel_pls/session/session.go:179.45,180.117 1 0 +tunnel_pls/session/session.go:180.117,182.3 1 0 +tunnel_pls/session/session.go:184.2,184.44 1 0 +tunnel_pls/session/session.go:184.44,187.3 2 0 +tunnel_pls/session/session.go:188.2,188.12 1 0 +tunnel_pls/session/session.go:191.54,192.9 1 0 +tunnel_pls/session/session.go:193.33,194.10 1 0 +tunnel_pls/session/session.go:194.10,197.4 2 0 +tunnel_pls/session/session.go:198.3,198.34 1 0 +tunnel_pls/session/session.go:198.34,200.4 1 0 +tunnel_pls/session/session.go:201.3,201.47 1 0 +tunnel_pls/session/session.go:201.47,203.4 1 0 +tunnel_pls/session/session.go:204.3,205.13 2 0 +tunnel_pls/session/session.go:206.44,208.13 2 0 +tunnel_pls/session/session.go:212.62,214.17 2 0 +tunnel_pls/session/session.go:214.17,217.3 2 0 +tunnel_pls/session/session.go:219.2,223.29 4 0 +tunnel_pls/session/session.go:226.80,227.33 1 0 +tunnel_pls/session/session.go:227.33,228.19 1 0 +tunnel_pls/session/session.go:229.27,231.18 2 0 +tunnel_pls/session/session.go:231.18,233.5 1 0 +tunnel_pls/session/session.go:234.24,235.52 1 0 +tunnel_pls/session/session.go:235.52,237.5 1 0 +tunnel_pls/session/session.go:238.11,241.18 3 0 +tunnel_pls/session/session.go:241.18,243.5 1 0 +tunnel_pls/session/session.go:246.2,246.12 1 0 +tunnel_pls/session/session.go:249.105,251.16 2 0 +tunnel_pls/session/session.go:251.16,253.3 1 0 +tunnel_pls/session/session.go:255.2,256.84 2 0 +tunnel_pls/session/session.go:256.84,258.3 1 0 +tunnel_pls/session/session.go:260.2,260.27 1 0 +tunnel_pls/session/session.go:260.27,262.3 1 0 +tunnel_pls/session/session.go:264.2,265.25 2 0 +tunnel_pls/session/session.go:265.25,267.3 1 0 +tunnel_pls/session/session.go:269.2,269.15 1 0 +tunnel_pls/session/session.go:269.15,271.10 2 0 +tunnel_pls/session/session.go:271.10,273.4 1 0 +tunnel_pls/session/session.go:274.3,274.34 1 0 +tunnel_pls/session/session.go:277.2,277.27 1 0 +tunnel_pls/session/session.go:280.120,282.16 2 0 +tunnel_pls/session/session.go:282.16,284.3 1 0 +tunnel_pls/session/session.go:285.2,285.21 1 0 +tunnel_pls/session/session.go:285.21,286.42 1 0 +tunnel_pls/session/session.go:286.42,288.4 1 0 +tunnel_pls/session/session.go:290.2,290.46 1 0 +tunnel_pls/session/session.go:290.46,292.3 1 0 +tunnel_pls/session/session.go:293.2,293.44 1 0 +tunnel_pls/session/session.go:293.44,295.3 1 0 +tunnel_pls/session/session.go:296.2,297.29 2 0 +tunnel_pls/session/session.go:300.87,303.16 3 0 +tunnel_pls/session/session.go:303.16,305.3 1 0 +tunnel_pls/session/session.go:307.2,308.16 2 0 +tunnel_pls/session/session.go:308.16,310.3 1 0 +tunnel_pls/session/session.go:311.2,311.12 1 0 +tunnel_pls/session/session.go:314.146,316.16 2 0 +tunnel_pls/session/session.go:316.16,318.3 1 0 +tunnel_pls/session/session.go:320.2,325.21 5 0 +tunnel_pls/session/session.go:325.21,327.3 1 0 +tunnel_pls/session/session.go:329.2,329.12 1 0 +tunnel_pls/session/session.go:332.62,336.16 3 0 +tunnel_pls/session/session.go:336.16,338.3 1 0 +tunnel_pls/session/session.go:340.2,340.14 1 0 +tunnel_pls/session/session.go:341.15,342.40 1 0 +tunnel_pls/session/session.go:343.10,344.48 1 0 +tunnel_pls/session/session.go:348.80,350.16 2 0 +tunnel_pls/session/session.go:350.16,352.3 1 0 +tunnel_pls/session/session.go:353.2,354.34 2 0 +tunnel_pls/session/session.go:354.34,356.3 1 0 +tunnel_pls/session/session.go:358.2,359.16 2 0 +tunnel_pls/session/session.go:359.16,361.3 1 0 +tunnel_pls/session/session.go:362.2,362.12 1 0 +tunnel_pls/session/session.go:365.92,366.71 1 0 +tunnel_pls/session/session.go:366.71,368.3 1 0 +tunnel_pls/session/session.go:370.2,372.16 3 0 +tunnel_pls/session/session.go:372.16,374.3 1 0 +tunnel_pls/session/session.go:376.2,377.34 2 0 +tunnel_pls/session/session.go:377.34,379.3 1 0 +tunnel_pls/session/session.go:381.2,382.16 2 0 +tunnel_pls/session/session.go:382.16,384.3 1 0 +tunnel_pls/session/session.go:386.2,386.12 1 0 +tunnel_pls/session/session.go:386.12,388.17 2 0 +tunnel_pls/session/session.go:388.17,390.4 1 0 +tunnel_pls/session/session.go:393.2,393.12 1 0 +tunnel_pls/session/session.go:396.54,398.71 2 0 +tunnel_pls/session/session.go:398.71,400.3 1 0 +tunnel_pls/session/session.go:401.2,402.49 2 0 +tunnel_pls/session/session.go:402.49,404.3 1 0 +tunnel_pls/session/session.go:405.2,405.30 1 0 +tunnel_pls/session/session.go:408.38,409.31 1 0 +tunnel_pls/session/session.go:409.31,411.3 1 0 +tunnel_pls/session/session.go:412.2,412.30 1 0 +tunnel_pls/session/session.go:412.30,414.3 1 0 +tunnel_pls/session/session.go:415.2,415.41 1 0 +tunnel_pls/session/session.go:415.41,416.16 1 0 +tunnel_pls/session/session.go:416.16,418.4 1 0 +tunnel_pls/session/session.go:420.2,420.14 1 0 +tunnel_pls/internal/transport/http.go:15.104,20.2 1 0 +tunnel_pls/internal/transport/http.go:22.54,24.2 1 0 +tunnel_pls/internal/transport/http.go:26.58,28.6 2 0 +tunnel_pls/internal/transport/http.go:28.6,30.17 2 0 +tunnel_pls/internal/transport/http.go:30.17,31.37 1 0 +tunnel_pls/internal/transport/http.go:31.37,33.5 1 0 +tunnel_pls/internal/transport/http.go:34.4,35.12 2 0 +tunnel_pls/internal/transport/http.go:38.3,38.37 1 0 +tunnel_pls/internal/transport/httphandler.go:28.102,34.2 1 0 +tunnel_pls/internal/transport/httphandler.go:36.83,42.16 2 0 +tunnel_pls/internal/transport/httphandler.go:42.16,44.3 1 0 +tunnel_pls/internal/transport/httphandler.go:45.2,45.12 1 0 +tunnel_pls/internal/transport/httphandler.go:48.56,49.82 1 0 +tunnel_pls/internal/transport/httphandler.go:49.82,51.3 1 0 +tunnel_pls/internal/transport/httphandler.go:52.2,52.12 1 0 +tunnel_pls/internal/transport/httphandler.go:55.59,60.16 4 0 +tunnel_pls/internal/transport/httphandler.go:60.16,63.3 2 0 +tunnel_pls/internal/transport/httphandler.go:65.2,66.16 2 0 +tunnel_pls/internal/transport/httphandler.go:66.16,69.3 2 0 +tunnel_pls/internal/transport/httphandler.go:71.2,71.35 1 0 +tunnel_pls/internal/transport/httphandler.go:71.35,74.3 2 0 +tunnel_pls/internal/transport/httphandler.go:76.2,76.38 1 0 +tunnel_pls/internal/transport/httphandler.go:76.38,78.3 1 0 +tunnel_pls/internal/transport/httphandler.go:80.2,81.16 2 0 +tunnel_pls/internal/transport/httphandler.go:81.16,84.3 2 0 +tunnel_pls/internal/transport/httphandler.go:86.2,87.29 2 0 +tunnel_pls/internal/transport/httphandler.go:87.29,89.17 2 0 +tunnel_pls/internal/transport/httphandler.go:89.17,91.4 1 0 +tunnel_pls/internal/transport/httphandler.go:93.2,93.42 1 0 +tunnel_pls/internal/transport/httphandler.go:96.55,98.50 2 0 +tunnel_pls/internal/transport/httphandler.go:98.50,100.3 1 0 +tunnel_pls/internal/transport/httphandler.go:103.80,105.19 2 0 +tunnel_pls/internal/transport/httphandler.go:105.19,107.3 1 0 +tunnel_pls/internal/transport/httphandler.go:108.2,108.21 1 0 +tunnel_pls/internal/transport/httphandler.go:111.61,113.2 1 0 +tunnel_pls/internal/transport/httphandler.go:115.75,116.20 1 0 +tunnel_pls/internal/transport/httphandler.go:116.20,118.3 1 0 +tunnel_pls/internal/transport/httphandler.go:120.2,129.16 2 0 +tunnel_pls/internal/transport/httphandler.go:129.16,131.3 1 0 +tunnel_pls/internal/transport/httphandler.go:132.2,132.13 1 0 +tunnel_pls/internal/transport/httphandler.go:135.74,140.16 2 0 +tunnel_pls/internal/transport/httphandler.go:140.16,142.3 1 0 +tunnel_pls/internal/transport/httphandler.go:143.2,143.24 1 0 +tunnel_pls/internal/transport/httphandler.go:146.121,148.16 2 0 +tunnel_pls/internal/transport/httphandler.go:148.16,152.3 3 0 +tunnel_pls/internal/transport/httphandler.go:154.2,154.15 1 0 +tunnel_pls/internal/transport/httphandler.go:154.15,156.44 2 0 +tunnel_pls/internal/transport/httphandler.go:156.44,158.4 1 0 +tunnel_pls/internal/transport/httphandler.go:161.2,163.74 2 0 +tunnel_pls/internal/transport/httphandler.go:163.74,166.3 2 0 +tunnel_pls/internal/transport/httphandler.go:167.2,167.54 1 0 +tunnel_pls/internal/transport/httphandler.go:170.111,181.12 4 0 +tunnel_pls/internal/transport/httphandler.go:181.12,183.10 2 0 +tunnel_pls/internal/transport/httphandler.go:184.56,184.56 0 0 +tunnel_pls/internal/transport/httphandler.go:185.11,186.42 1 0 +tunnel_pls/internal/transport/httphandler.go:190.2,190.9 1 0 +tunnel_pls/internal/transport/httphandler.go:191.30,192.24 1 0 +tunnel_pls/internal/transport/httphandler.go:192.24,194.4 1 0 +tunnel_pls/internal/transport/httphandler.go:195.3,196.29 2 0 +tunnel_pls/internal/transport/httphandler.go:197.37,198.68 1 0 +tunnel_pls/internal/transport/httphandler.go:202.92,203.20 1 0 +tunnel_pls/internal/transport/httphandler.go:203.20,204.41 1 0 +tunnel_pls/internal/transport/httphandler.go:204.41,206.4 1 0 +tunnel_pls/internal/transport/httphandler.go:207.3,207.31 1 0 +tunnel_pls/internal/transport/httphandler.go:211.57,217.2 4 0 +tunnel_pls/internal/transport/httphandler.go:219.123,222.67 2 0 +tunnel_pls/internal/transport/httphandler.go:222.67,224.3 1 0 +tunnel_pls/internal/transport/httphandler.go:226.2,226.68 1 0 +tunnel_pls/internal/transport/httphandler.go:226.68,228.3 1 0 +tunnel_pls/internal/transport/httphandler.go:230.2,230.12 1 0 +tunnel_pls/internal/transport/https.go:18.128,25.2 1 0 +tunnel_pls/internal/transport/https.go:27.49,29.2 1 0 +tunnel_pls/internal/transport/https.go:31.53,33.6 2 0 +tunnel_pls/internal/transport/https.go:33.6,35.17 2 0 +tunnel_pls/internal/transport/https.go:35.17,36.37 1 0 +tunnel_pls/internal/transport/https.go:36.37,38.5 1 0 +tunnel_pls/internal/transport/https.go:39.4,40.12 2 0 +tunnel_pls/internal/transport/https.go:43.3,43.40 1 0 +tunnel_pls/internal/transport/tcp.go:24.63,29.2 1 0 +tunnel_pls/internal/transport/tcp.go:31.47,33.2 1 0 +tunnel_pls/internal/transport/tcp.go:35.51,36.6 1 0 +tunnel_pls/internal/transport/tcp.go:36.6,38.17 2 0 +tunnel_pls/internal/transport/tcp.go:38.17,39.37 1 0 +tunnel_pls/internal/transport/tcp.go:39.37,41.5 1 0 +tunnel_pls/internal/transport/tcp.go:42.4,43.12 2 0 +tunnel_pls/internal/transport/tcp.go:45.3,45.24 1 0 +tunnel_pls/internal/transport/tcp.go:49.41,50.15 1 0 +tunnel_pls/internal/transport/tcp.go:50.15,52.17 2 0 +tunnel_pls/internal/transport/tcp.go:52.17,54.4 1 0 +tunnel_pls/internal/transport/tcp.go:56.2,58.16 3 0 +tunnel_pls/internal/transport/tcp.go:58.16,62.3 2 0 +tunnel_pls/internal/transport/tcp.go:64.2,65.46 2 0 +tunnel_pls/internal/transport/tls.go:46.62,49.27 2 0 +tunnel_pls/internal/transport/tls.go:49.27,61.34 5 0 +tunnel_pls/internal/transport/tls.go:61.34,63.45 2 0 +tunnel_pls/internal/transport/tls.go:63.45,66.5 2 0 +tunnel_pls/internal/transport/tls.go:67.4,68.25 2 0 +tunnel_pls/internal/transport/tls.go:69.9,71.45 2 0 +tunnel_pls/internal/transport/tls.go:71.45,74.5 2 0 +tunnel_pls/internal/transport/tls.go:75.4,75.26 1 0 +tunnel_pls/internal/transport/tls.go:78.3,78.24 1 0 +tunnel_pls/internal/transport/tls.go:81.2,81.20 1 0 +tunnel_pls/internal/transport/tls.go:81.20,83.3 1 0 +tunnel_pls/internal/transport/tls.go:85.2,85.45 1 0 +tunnel_pls/internal/transport/tls.go:88.53,89.56 1 0 +tunnel_pls/internal/transport/tls.go:89.56,92.3 2 0 +tunnel_pls/internal/transport/tls.go:93.2,93.55 1 0 +tunnel_pls/internal/transport/tls.go:93.55,96.3 2 0 +tunnel_pls/internal/transport/tls.go:98.2,98.61 1 0 +tunnel_pls/internal/transport/tls.go:101.56,103.16 2 0 +tunnel_pls/internal/transport/tls.go:103.16,106.3 2 0 +tunnel_pls/internal/transport/tls.go:108.2,109.18 2 0 +tunnel_pls/internal/transport/tls.go:109.18,112.3 2 0 +tunnel_pls/internal/transport/tls.go:114.2,115.16 2 0 +tunnel_pls/internal/transport/tls.go:115.16,118.3 2 0 +tunnel_pls/internal/transport/tls.go:120.2,120.37 1 0 +tunnel_pls/internal/transport/tls.go:120.37,123.3 2 0 +tunnel_pls/internal/transport/tls.go:125.2,125.62 1 0 +tunnel_pls/internal/transport/tls.go:125.62,128.3 2 0 +tunnel_pls/internal/transport/tls.go:130.2,131.35 2 0 +tunnel_pls/internal/transport/tls.go:131.35,133.3 1 0 +tunnel_pls/internal/transport/tls.go:134.2,140.32 5 0 +tunnel_pls/internal/transport/tls.go:140.32,141.18 1 0 +tunnel_pls/internal/transport/tls.go:141.18,143.4 1 0 +tunnel_pls/internal/transport/tls.go:144.3,144.26 1 0 +tunnel_pls/internal/transport/tls.go:144.26,146.4 1 0 +tunnel_pls/internal/transport/tls.go:149.2,149.14 1 0 +tunnel_pls/internal/transport/tls.go:149.14,151.3 1 0 +tunnel_pls/internal/transport/tls.go:152.2,152.18 1 0 +tunnel_pls/internal/transport/tls.go:152.18,154.3 1 0 +tunnel_pls/internal/transport/tls.go:156.2,156.31 1 0 +tunnel_pls/internal/transport/tls.go:159.45,161.16 2 0 +tunnel_pls/internal/transport/tls.go:161.16,163.3 1 0 +tunnel_pls/internal/transport/tls.go:165.2,170.12 5 0 +tunnel_pls/internal/transport/tls.go:173.42,174.12 1 0 +tunnel_pls/internal/transport/tls.go:174.12,177.52 2 0 +tunnel_pls/internal/transport/tls.go:177.52,179.4 1 0 +tunnel_pls/internal/transport/tls.go:180.3,180.51 1 0 +tunnel_pls/internal/transport/tls.go:180.51,182.4 1 0 +tunnel_pls/internal/transport/tls.go:184.3,187.22 3 0 +tunnel_pls/internal/transport/tls.go:187.22,191.39 3 0 +tunnel_pls/internal/transport/tls.go:191.39,192.13 1 0 +tunnel_pls/internal/transport/tls.go:195.4,195.84 1 0 +tunnel_pls/internal/transport/tls.go:195.84,198.62 2 0 +tunnel_pls/internal/transport/tls.go:198.62,201.47 2 0 +tunnel_pls/internal/transport/tls.go:201.47,203.15 2 0 +tunnel_pls/internal/transport/tls.go:205.6,206.12 2 0 +tunnel_pls/internal/transport/tls.go:209.5,209.46 1 0 +tunnel_pls/internal/transport/tls.go:209.46,211.14 2 0 +tunnel_pls/internal/transport/tls.go:214.5,216.53 3 0 +tunnel_pls/internal/transport/tls.go:222.45,223.58 1 0 +tunnel_pls/internal/transport/tls.go:223.58,225.3 1 0 +tunnel_pls/internal/transport/tls.go:227.2,227.34 1 0 +tunnel_pls/internal/transport/tls.go:227.34,229.3 1 0 +tunnel_pls/internal/transport/tls.go:231.2,238.81 3 0 +tunnel_pls/internal/transport/tls.go:238.81,240.4 1 0 +tunnel_pls/internal/transport/tls.go:243.2,257.29 3 0 +tunnel_pls/internal/transport/tls.go:257.29,260.3 2 0 +tunnel_pls/internal/transport/tls.go:260.8,263.3 2 0 +tunnel_pls/internal/transport/tls.go:265.2,272.55 6 0 +tunnel_pls/internal/transport/tls.go:272.55,274.3 1 0 +tunnel_pls/internal/transport/tls.go:276.2,277.12 2 0 +tunnel_pls/internal/transport/tls.go:280.50,294.2 1 0 +tunnel_pls/internal/transport/tls.go:296.92,297.21 1 0 +tunnel_pls/internal/transport/tls.go:297.21,299.3 1 0 +tunnel_pls/internal/transport/tls.go:301.2,304.24 3 0 +tunnel_pls/internal/transport/tls.go:304.24,306.3 1 0 +tunnel_pls/internal/transport/tls.go:308.2,308.25 1 0 +tunnel_pls/server/server.go:33.178,35.16 2 0 +tunnel_pls/server/server.go:35.16,37.3 1 0 +tunnel_pls/server/server.go:39.2,47.8 1 0 +tunnel_pls/server/server.go:50.26,52.6 2 0 +tunnel_pls/server/server.go:52.6,54.17 2 0 +tunnel_pls/server/server.go:54.17,55.37 1 0 +tunnel_pls/server/server.go:55.37,58.5 2 0 +tunnel_pls/server/server.go:59.4,60.12 2 0 +tunnel_pls/server/server.go:63.3,63.30 1 0 +tunnel_pls/server/server.go:67.32,69.2 1 0 +tunnel_pls/server/server.go:71.50,73.16 2 0 +tunnel_pls/server/server.go:73.16,76.17 3 0 +tunnel_pls/server/server.go:76.17,79.4 2 0 +tunnel_pls/server/server.go:80.3,80.9 1 0 +tunnel_pls/server/server.go:83.2,83.38 1 0 +tunnel_pls/server/server.go:83.38,85.51 2 0 +tunnel_pls/server/server.go:85.51,87.4 1 0 +tunnel_pls/server/server.go:90.2,91.25 2 0 +tunnel_pls/server/server.go:91.25,96.3 4 0 +tunnel_pls/server/server.go:97.2,100.16 4 0 +tunnel_pls/server/server.go:100.16,103.3 2 0 +tunnel_pls/server/server.go:104.2,104.8 1 0 +tunnel_pls/session/forwarder/forwarder.go:43.73,51.28 1 0 +tunnel_pls/session/forwarder/forwarder.go:51.28,54.5 2 0 +tunnel_pls/session/forwarder/forwarder.go:59.93,63.2 3 0 +tunnel_pls/session/forwarder/forwarder.go:65.100,73.12 3 0 +tunnel_pls/session/forwarder/forwarder.go:73.12,75.10 2 0 +tunnel_pls/session/forwarder/forwarder.go:76.56,76.56 0 0 +tunnel_pls/session/forwarder/forwarder.go:77.11,78.22 1 0 +tunnel_pls/session/forwarder/forwarder.go:78.22,80.19 2 0 +tunnel_pls/session/forwarder/forwarder.go:80.19,83.6 2 0 +tunnel_pls/session/forwarder/forwarder.go:84.5,84.33 1 0 +tunnel_pls/session/forwarder/forwarder.go:89.2,89.9 1 0 +tunnel_pls/session/forwarder/forwarder.go:90.30,91.49 1 0 +tunnel_pls/session/forwarder/forwarder.go:92.37,93.73 1 0 +tunnel_pls/session/forwarder/forwarder.go:97.37,98.55 1 0 +tunnel_pls/session/forwarder/forwarder.go:98.55,100.3 1 0 +tunnel_pls/session/forwarder/forwarder.go:101.2,101.37 1 0 +tunnel_pls/session/forwarder/forwarder.go:101.37,103.3 1 0 +tunnel_pls/session/forwarder/forwarder.go:104.2,104.12 1 0 +tunnel_pls/session/forwarder/forwarder.go:107.88,110.77 3 0 +tunnel_pls/session/forwarder/forwarder.go:110.77,112.3 1 0 +tunnel_pls/session/forwarder/forwarder.go:114.2,114.67 1 0 +tunnel_pls/session/forwarder/forwarder.go:114.67,116.3 1 0 +tunnel_pls/session/forwarder/forwarder.go:117.2,117.29 1 0 +tunnel_pls/session/forwarder/forwarder.go:120.74,121.15 1 0 +tunnel_pls/session/forwarder/forwarder.go:121.15,123.17 2 0 +tunnel_pls/session/forwarder/forwarder.go:123.17,125.4 1 0 +tunnel_pls/session/forwarder/forwarder.go:128.2,131.12 3 0 +tunnel_pls/session/forwarder/forwarder.go:131.12,134.17 3 0 +tunnel_pls/session/forwarder/forwarder.go:134.17,137.4 2 0 +tunnel_pls/session/forwarder/forwarder.go:140.2,140.12 1 0 +tunnel_pls/session/forwarder/forwarder.go:140.12,143.17 3 0 +tunnel_pls/session/forwarder/forwarder.go:143.17,146.4 2 0 +tunnel_pls/session/forwarder/forwarder.go:149.2,149.11 1 0 +tunnel_pls/session/forwarder/forwarder.go:152.58,154.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:156.51,158.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:160.44,162.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:164.51,166.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:168.56,170.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:172.45,174.2 1 0 +tunnel_pls/session/forwarder/forwarder.go:176.60,178.16 2 0 +tunnel_pls/session/forwarder/forwarder.go:178.16,181.3 2 0 +tunnel_pls/session/forwarder/forwarder.go:184.35,185.25 1 0 +tunnel_pls/session/forwarder/forwarder.go:185.25,187.3 1 0 +tunnel_pls/session/forwarder/forwarder.go:188.2,188.12 1 0 +tunnel_pls/session/forwarder/forwarder.go:191.73,198.16 5 0 +tunnel_pls/session/forwarder/forwarder.go:198.16,201.3 2 0 +tunnel_pls/session/forwarder/forwarder.go:203.2,205.16 3 0 +tunnel_pls/session/forwarder/forwarder.go:205.16,208.3 2 0 +tunnel_pls/session/forwarder/forwarder.go:210.2,210.20 1 0 +tunnel_pls/session/forwarder/forwarder.go:213.46,215.16 2 0 +tunnel_pls/session/forwarder/forwarder.go:215.16,218.3 2 0 +tunnel_pls/session/forwarder/forwarder.go:219.2,220.27 2 0 +tunnel_pls/session/forwarder/forwarder.go:223.55,225.16 2 0 +tunnel_pls/session/forwarder/forwarder.go:225.16,228.3 2 0 +tunnel_pls/session/forwarder/forwarder.go:229.2,229.25 1 0 diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go new file mode 100644 index 0000000..d4734ed --- /dev/null +++ b/internal/registry/registry_test.go @@ -0,0 +1,632 @@ +package registry + +import ( + "errors" + "sync" + "testing" + "time" + "tunnel_pls/internal/port" + "tunnel_pls/session/forwarder" + "tunnel_pls/session/interaction" + "tunnel_pls/session/lifecycle" + "tunnel_pls/session/slug" + "tunnel_pls/types" + + "golang.org/x/crypto/ssh" +) + +type mockSession struct{ user string } + +func (m *mockSession) Lifecycle() lifecycle.Lifecycle { return &mockLifecycle{user: m.user} } +func (m *mockSession) Interaction() interaction.Interaction { + return nil +} +func (m *mockSession) Forwarder() forwarder.Forwarder { + return nil +} +func (m *mockSession) Slug() slug.Slug { + return &mockSlug{} +} +func (m *mockSession) Detail() *types.Detail { + return nil +} + +type mockLifecycle struct{ user string } + +func (ml *mockLifecycle) Connection() ssh.Conn { return nil } +func (ml *mockLifecycle) PortRegistry() port.Port { return nil } +func (ml *mockLifecycle) SetChannel(channel ssh.Channel) { _ = channel } +func (ml *mockLifecycle) SetStatus(status types.SessionStatus) { _ = status } +func (ml *mockLifecycle) IsActive() bool { return false } +func (ml *mockLifecycle) StartedAt() time.Time { return time.Time{} } +func (ml *mockLifecycle) Close() error { return nil } +func (ml *mockLifecycle) User() string { return ml.user } + +type mockSlug struct{} + +func (ms *mockSlug) Set(slug string) { _ = slug } +func (ms *mockSlug) String() string { return "" } + +func TestNewRegistry(t *testing.T) { + r := NewRegistry() + if r == nil { + t.Fatal("NewRegistry returned nil") + } +} + +func TestRegistry_Get(t *testing.T) { + tests := []struct { + name string + setupFunc func(r *registry) + key types.SessionKey + wantErr error + wantResult bool + }{ + { + name: "session found", + setupFunc: func(r *registry) { + user := "user1" + key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + session := &mockSession{user: user} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser[user] = map[types.SessionKey]Session{ + key: session, + } + r.slugIndex[key] = user + }, + key: types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}, + wantErr: nil, + wantResult: true, + }, + { + name: "session not found in slugIndex", + setupFunc: func(r *registry) {}, + key: types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP}, + wantErr: ErrSessionNotFound, + }, + { + name: "session not found in byUser", + setupFunc: func(r *registry) { + r.mu.Lock() + defer r.mu.Unlock() + r.slugIndex[types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}] = "invalid_user" + }, + key: types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}, + wantErr: ErrSessionNotFound, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[types.SessionKey]Session), + slugIndex: make(map[types.SessionKey]string), + mu: sync.RWMutex{}, + } + tt.setupFunc(r) + + session, err := r.Get(tt.key) + + if !errors.Is(err, tt.wantErr) { + t.Fatalf("expected error %v, got %v", tt.wantErr, err) + } + + if (session != nil) != tt.wantResult { + t.Fatalf("expected session existence to be %v, got %v", tt.wantResult, session != nil) + } + }) + } +} + +func TestRegistry_GetWithUser(t *testing.T) { + tests := []struct { + name string + setupFunc func(r *registry) + user string + key types.SessionKey + wantErr error + wantResult bool + }{ + { + name: "session found", + setupFunc: func(r *registry) { + user := "user1" + key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + session := &mockSession{user: user} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser[user] = map[types.SessionKey]Session{ + key: session, + } + r.slugIndex[key] = user + }, + user: "user1", + key: types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}, + wantErr: nil, + wantResult: true, + }, + { + name: "session not found in slugIndex", + setupFunc: func(r *registry) {}, + user: "user1", + key: types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP}, + wantErr: ErrSessionNotFound, + }, + { + name: "session not found in byUser", + setupFunc: func(r *registry) { + r.mu.Lock() + defer r.mu.Unlock() + r.slugIndex[types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}] = "invalid_user" + }, + user: "user1", + key: types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}, + wantErr: ErrSessionNotFound, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[types.SessionKey]Session), + slugIndex: make(map[types.SessionKey]string), + mu: sync.RWMutex{}, + } + tt.setupFunc(r) + + session, err := r.GetWithUser(tt.user, tt.key) + + if !errors.Is(err, tt.wantErr) { + t.Fatalf("expected error %v, got %v", tt.wantErr, err) + } + + if (session != nil) != tt.wantResult { + t.Fatalf("expected session existence to be %v, got %v", tt.wantResult, session != nil) + } + }) + } +} + +func TestRegistry_Update(t *testing.T) { + tests := []struct { + name string + user string + setupFunc func(r *registry) (oldKey, newKey types.SessionKey) + wantErr error + }{ + { + name: "change slug success", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + } + r.slugIndex[oldKey] = "user1" + + return oldKey, newKey + }, + wantErr: nil, + }, + { + name: "change slug to already used slug", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + newKey: session, + } + r.slugIndex[oldKey] = "user1" + r.slugIndex[newKey] = "user1" + + return oldKey, newKey + }, + wantErr: ErrSlugInUse, + }, + { + name: "change slug to forbidden slug", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "ping", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + } + r.slugIndex[oldKey] = "user1" + + return oldKey, newKey + }, + wantErr: ErrForbiddenSlug, + }, + { + name: "change slug to invalid slug", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test2-", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + } + r.slugIndex[oldKey] = "user1" + + return oldKey, newKey + }, + wantErr: ErrInvalidSlug, + }, + { + name: "change slug but session not found", + user: "user2", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test4", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}: session, + } + r.slugIndex[types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}] = "user1" + + return oldKey, newKey + }, + wantErr: ErrSessionNotFound, + }, + { + name: "change slug but session is not in the map", + user: "user2", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test4", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}: session, + } + r.slugIndex[types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP}] = "user1" + + return oldKey, newKey + }, + wantErr: ErrSessionNotFound, + }, + { + name: "change slug with same slug", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeTCP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + } + r.slugIndex[oldKey] = "user1" + + return oldKey, newKey + }, + wantErr: ErrSlugUnchanged, + }, + { + name: "tcp tunnel cannot change slug", + user: "user1", + setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { + oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeTCP} + newKey := oldKey + session := &mockSession{user: "user1"} + + r.mu.Lock() + defer r.mu.Unlock() + r.byUser["user1"] = map[types.SessionKey]Session{ + oldKey: session, + } + r.slugIndex[oldKey] = "user1" + + return oldKey, newKey + }, + wantErr: ErrSlugChangeNotAllowed, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + r := ®istry{ + byUser: make(map[string]map[types.SessionKey]Session), + slugIndex: make(map[types.SessionKey]string), + mu: sync.RWMutex{}, + } + + oldKey, newKey := tt.setupFunc(r) + + err := r.Update(tt.user, oldKey, newKey) + if !errors.Is(err, tt.wantErr) { + t.Fatalf("expected error %v, got %v", tt.wantErr, err) + } + + if err == nil { + r.mu.RLock() + defer r.mu.RUnlock() + if _, ok := r.byUser[tt.user][newKey]; !ok { + t.Errorf("newKey not found in registry") + } + if _, ok := r.byUser[tt.user][oldKey]; ok { + t.Errorf("oldKey still exists in registry") + } + } + }) + } +} + +func TestRegistry_Register(t *testing.T) { + tests := []struct { + name string + user string + setupFunc func(r *registry) Key + wantOK bool + }{ + { + name: "register new key successfully", + user: "user1", + setupFunc: func(r *registry) Key { + key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + return key + }, + wantOK: true, + }, + { + name: "register already existing key fails", + user: "user1", + setupFunc: func(r *registry) Key { + key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + + r.mu.Lock() + r.byUser["user1"] = map[Key]Session{key: session} + r.slugIndex[key] = "user1" + r.mu.Unlock() + + return key + }, + wantOK: false, + }, + { + name: "register multiple keys for same user", + user: "user1", + setupFunc: func(r *registry) Key { + firstKey := types.SessionKey{Id: "first", Type: types.TunnelTypeHTTP} + session := &mockSession{user: "user1"} + r.mu.Lock() + r.byUser["user1"] = map[Key]Session{firstKey: session} + r.slugIndex[firstKey] = "user1" + r.mu.Unlock() + + return types.SessionKey{Id: "second", Type: types.TunnelTypeHTTP} + }, + wantOK: true, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + mu: sync.RWMutex{}, + } + + key := tt.setupFunc(r) + session := &mockSession{user: tt.user} + + ok := r.Register(key, session) + if ok != tt.wantOK { + t.Fatalf("expected success %v, got %v", tt.wantOK, ok) + } + + if ok { + r.mu.RLock() + defer r.mu.RUnlock() + if r.byUser[tt.user][key] != session { + t.Errorf("session not stored in byUser") + } + if r.slugIndex[key] != tt.user { + t.Errorf("slugIndex not updated") + } + } + }) + } +} + +func TestRegistry_GetAllSessionFromUser(t *testing.T) { + t.Run("user has no sessions", func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + } + sessions := r.GetAllSessionFromUser("user1") + if len(sessions) != 0 { + t.Errorf("expected 0 sessions, got %d", len(sessions)) + } + }) + + t.Run("user has multiple sessions", func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + mu: sync.RWMutex{}, + } + + user := "user1" + key1 := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} + key2 := types.SessionKey{Id: "b", Type: types.TunnelTypeTCP} + session1 := &mockSession{user: user} + session2 := &mockSession{user: user} + + r.mu.Lock() + r.byUser[user] = map[Key]Session{ + key1: session1, + key2: session2, + } + r.mu.Unlock() + + sessions := r.GetAllSessionFromUser(user) + if len(sessions) != 2 { + t.Errorf("expected 2 sessions, got %d", len(sessions)) + } + + found := map[Session]bool{} + for _, s := range sessions { + found[s] = true + } + if !found[session1] || !found[session2] { + t.Errorf("returned sessions do not match expected") + } + }) +} + +func TestRegistry_Remove(t *testing.T) { + t.Run("remove existing key", func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + mu: sync.RWMutex{}, + } + + user := "user1" + key := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} + session := &mockSession{user: user} + + r.mu.Lock() + r.byUser[user] = map[Key]Session{key: session} + r.slugIndex[key] = user + r.mu.Unlock() + + r.Remove(key) + + if _, ok := r.byUser[user][key]; ok { + t.Errorf("expected key to be removed from byUser") + } + if _, ok := r.slugIndex[key]; ok { + t.Errorf("expected key to be removed from slugIndex") + } + if _, ok := r.byUser[user]; ok { + t.Errorf("expected user to be removed from byUser map") + } + }) + + t.Run("remove non-existing key", func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + } + r.Remove(types.SessionKey{Id: "nonexist", Type: types.TunnelTypeHTTP}) + }) +} + +func TestIsValidSlug(t *testing.T) { + tests := []struct { + slug string + want bool + }{ + {"abc", true}, + {"abc-123", true}, + {"a", false}, + {"verybigdihsixsevenlabubu", false}, + {"-iamsigma", false}, + {"ligma-", false}, + {"invalid$", false}, + {"valid-slug1", true}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.slug, func(t *testing.T) { + got := isValidSlug(tt.slug) + if got != tt.want { + t.Errorf("isValidSlug(%q) = %v; want %v", tt.slug, got, tt.want) + } + }) + } +} + +func TestIsValidSlugChar(t *testing.T) { + tests := []struct { + char byte + want bool + }{ + {'a', true}, + {'z', true}, + {'0', true}, + {'9', true}, + {'-', true}, + {'A', false}, + {'$', false}, + } + + for _, tt := range tests { + tt := tt + t.Run(string(tt.char), func(t *testing.T) { + got := isValidSlugChar(tt.char) + if got != tt.want { + t.Errorf("isValidSlugChar(%q) = %v; want %v", tt.char, got, tt.want) + } + }) + } +} + +func TestIsForbiddenSlug(t *testing.T) { + forbiddenSlugs = map[string]struct{}{ + "admin": {}, + "root": {}, + } + + tests := []struct { + slug string + want bool + }{ + {"admin", true}, + {"root", true}, + {"user", false}, + {"guest", false}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.slug, func(t *testing.T) { + got := isForbiddenSlug(tt.slug) + if got != tt.want { + t.Errorf("isForbiddenSlug(%q) = %v; want %v", tt.slug, got, tt.want) + } + }) + } +} diff --git a/sonar-project.properties b/sonar-project.properties index 277a293..1aad585 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1 +1,3 @@ -sonar.projectKey=tunnel-please \ No newline at end of file +sonar.projectKey=tunnel-please +sonar.go.coverage.reportPaths=coverage +sonar.tests.inclusions=**/*_test.go \ No newline at end of file From 7e635721fb74b322e72222c0f7f1793bee89b7b3 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 01:07:33 +0700 Subject: [PATCH 02/47] ci: automate Go tests and Sonar coverage reporting --- .gitea/workflows/sonarqube.yml | 12 + coverage | 1006 -------------------------------- sonar-project.properties | 2 +- 3 files changed, 13 insertions(+), 1007 deletions(-) delete mode 100644 coverage diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index 9c672ac..4a00cc5 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -13,6 +13,18 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: '1.25.5' + + - name: Install dependencies + run: go mod tidy + + - name: Run tests with coverage + run: go test ./... -coverprofile=coverage + - name: SonarQube Scan uses: SonarSource/sonarqube-scan-action@v7.0.0 env: diff --git a/coverage b/coverage deleted file mode 100644 index cddf4d2..0000000 --- a/coverage +++ /dev/null @@ -1,1006 +0,0 @@ -mode: set -tunnel_pls/main.go:27.13,28.75 1 0 -tunnel_pls/main.go:28.75,31.3 2 0 -tunnel_pls/main.go:33.2,39.16 5 0 -tunnel_pls/main.go:39.16,42.3 2 0 -tunnel_pls/main.go:44.2,50.64 3 0 -tunnel_pls/main.go:50.64,52.3 1 0 -tunnel_pls/main.go:54.2,55.16 2 0 -tunnel_pls/main.go:55.16,57.3 1 0 -tunnel_pls/main.go:59.2,60.16 2 0 -tunnel_pls/main.go:60.16,62.3 1 0 -tunnel_pls/main.go:64.2,76.41 9 0 -tunnel_pls/main.go:76.41,80.17 3 0 -tunnel_pls/main.go:80.17,82.4 1 0 -tunnel_pls/main.go:84.3,85.64 2 0 -tunnel_pls/main.go:85.64,88.4 2 0 -tunnel_pls/main.go:89.3,91.13 2 0 -tunnel_pls/main.go:91.13,92.90 1 0 -tunnel_pls/main.go:92.90,94.5 1 0 -tunnel_pls/main.go:98.2,98.12 1 0 -tunnel_pls/main.go:98.12,102.17 4 0 -tunnel_pls/main.go:102.17,105.4 2 0 -tunnel_pls/main.go:106.3,107.17 2 0 -tunnel_pls/main.go:107.17,110.4 2 0 -tunnel_pls/main.go:113.2,113.23 1 0 -tunnel_pls/main.go:113.23,114.13 1 0 -tunnel_pls/main.go:114.13,119.18 5 0 -tunnel_pls/main.go:119.18,122.5 2 0 -tunnel_pls/main.go:123.4,124.18 2 0 -tunnel_pls/main.go:124.18,127.5 2 0 -tunnel_pls/main.go:131.2,133.16 3 0 -tunnel_pls/main.go:133.16,136.3 2 0 -tunnel_pls/main.go:138.2,139.12 2 0 -tunnel_pls/main.go:139.12,141.17 2 0 -tunnel_pls/main.go:141.17,144.4 2 0 -tunnel_pls/main.go:145.3,145.14 1 0 -tunnel_pls/main.go:149.2,149.25 1 0 -tunnel_pls/main.go:149.25,150.13 1 0 -tunnel_pls/main.go:150.13,153.61 3 0 -tunnel_pls/main.go:153.61,155.5 1 0 -tunnel_pls/main.go:159.2,159.9 1 0 -tunnel_pls/main.go:160.23,161.39 1 0 -tunnel_pls/main.go:162.29,163.55 1 0 -tunnel_pls/main.go:166.2,168.16 2 0 -tunnel_pls/main.go:168.16,169.36 1 0 -tunnel_pls/main.go:169.36,171.4 1 0 -tunnel_pls/main.go:174.2,174.23 1 0 -tunnel_pls/main.go:174.23,175.43 1 0 -tunnel_pls/main.go:175.43,177.4 1 0 -tunnel_pls/internal/port/port.go:22.17,27.2 1 0 -tunnel_pls/internal/port/port.go:29.59,33.25 3 0 -tunnel_pls/internal/port/port.go:33.25,35.3 1 0 -tunnel_pls/internal/port/port.go:36.2,36.52 1 0 -tunnel_pls/internal/port/port.go:36.52,37.44 1 0 -tunnel_pls/internal/port/port.go:37.44,40.4 2 0 -tunnel_pls/internal/port/port.go:42.2,42.49 1 0 -tunnel_pls/internal/port/port.go:42.49,44.3 1 0 -tunnel_pls/internal/port/port.go:45.2,45.12 1 0 -tunnel_pls/internal/port/port.go:48.45,52.39 3 0 -tunnel_pls/internal/port/port.go:52.39,53.23 1 0 -tunnel_pls/internal/port/port.go:53.23,55.4 1 0 -tunnel_pls/internal/port/port.go:57.2,57.17 1 0 -tunnel_pls/internal/port/port.go:60.61,66.2 4 0 -tunnel_pls/internal/port/port.go:68.51,74.22 4 0 -tunnel_pls/internal/port/port.go:74.22,76.3 1 0 -tunnel_pls/internal/port/port.go:78.2,78.13 1 0 -tunnel_pls/internal/port/port.go:78.13,81.3 2 0 -tunnel_pls/internal/port/port.go:83.2,84.13 2 0 -tunnel_pls/internal/config/config.go:33.33,34.38 1 0 -tunnel_pls/internal/config/config.go:34.38,36.3 1 0 -tunnel_pls/internal/config/config.go:38.2,39.16 2 0 -tunnel_pls/internal/config/config.go:39.16,41.3 1 0 -tunnel_pls/internal/config/config.go:43.2,43.17 1 0 -tunnel_pls/internal/config/config.go:46.45,46.64 1 0 -tunnel_pls/internal/config/config.go:47.45,47.65 1 0 -tunnel_pls/internal/config/config.go:48.45,48.66 1 0 -tunnel_pls/internal/config/config.go:49.45,49.67 1 0 -tunnel_pls/internal/config/config.go:50.45,50.68 1 0 -tunnel_pls/internal/config/config.go:51.45,51.69 1 0 -tunnel_pls/internal/config/config.go:52.45,52.67 1 0 -tunnel_pls/internal/config/config.go:53.45,53.68 1 0 -tunnel_pls/internal/config/config.go:54.45,54.69 1 0 -tunnel_pls/internal/config/config.go:55.45,55.75 1 0 -tunnel_pls/internal/config/config.go:56.45,56.73 1 0 -tunnel_pls/internal/config/config.go:57.45,57.68 1 0 -tunnel_pls/internal/config/config.go:58.45,58.70 1 0 -tunnel_pls/internal/config/config.go:59.45,59.67 1 0 -tunnel_pls/internal/config/config.go:60.45,60.62 1 0 -tunnel_pls/internal/config/config.go:61.45,61.69 1 0 -tunnel_pls/internal/config/config.go:62.45,62.66 1 0 -tunnel_pls/internal/config/config.go:63.45,63.67 1 0 -tunnel_pls/internal/config/loader.go:42.31,44.16 2 0 -tunnel_pls/internal/config/loader.go:44.16,46.3 1 0 -tunnel_pls/internal/config/loader.go:48.2,61.33 10 0 -tunnel_pls/internal/config/loader.go:61.33,63.3 1 0 -tunnel_pls/internal/config/loader.go:65.2,66.16 2 0 -tunnel_pls/internal/config/loader.go:66.16,68.3 1 0 -tunnel_pls/internal/config/loader.go:70.2,79.53 7 0 -tunnel_pls/internal/config/loader.go:79.53,81.3 1 0 -tunnel_pls/internal/config/loader.go:83.2,102.8 1 0 -tunnel_pls/internal/config/loader.go:105.26,106.43 1 0 -tunnel_pls/internal/config/loader.go:106.43,108.3 1 0 -tunnel_pls/internal/config/loader.go:109.2,109.12 1 0 -tunnel_pls/internal/config/loader.go:112.44,113.55 1 0 -tunnel_pls/internal/config/loader.go:114.20,115.41 1 0 -tunnel_pls/internal/config/loader.go:116.14,117.35 1 0 -tunnel_pls/internal/config/loader.go:118.10,119.45 1 0 -tunnel_pls/internal/config/loader.go:123.50,125.15 2 0 -tunnel_pls/internal/config/loader.go:125.15,127.3 1 0 -tunnel_pls/internal/config/loader.go:129.2,130.21 2 0 -tunnel_pls/internal/config/loader.go:130.21,132.3 1 0 -tunnel_pls/internal/config/loader.go:134.2,135.16 2 0 -tunnel_pls/internal/config/loader.go:135.16,137.3 1 0 -tunnel_pls/internal/config/loader.go:139.2,140.16 2 0 -tunnel_pls/internal/config/loader.go:140.16,142.3 1 0 -tunnel_pls/internal/config/loader.go:144.2,144.40 1 0 -tunnel_pls/internal/config/loader.go:147.28,150.49 3 0 -tunnel_pls/internal/config/loader.go:150.49,153.3 2 0 -tunnel_pls/internal/config/loader.go:154.2,154.13 1 0 -tunnel_pls/internal/config/loader.go:157.37,158.34 1 0 -tunnel_pls/internal/config/loader.go:158.34,160.3 1 0 -tunnel_pls/internal/config/loader.go:161.2,161.12 1 0 -tunnel_pls/internal/config/loader.go:164.44,166.15 2 0 -tunnel_pls/internal/config/loader.go:166.15,168.3 1 0 -tunnel_pls/internal/config/loader.go:169.2,169.22 1 0 -tunnel_pls/internal/grpc/client/client.go:41.99,62.16 7 0 -tunnel_pls/internal/grpc/client/client.go:62.16,64.3 1 0 -tunnel_pls/internal/grpc/client/client.go:66.2,76.8 3 0 -tunnel_pls/internal/grpc/client/client.go:79.89,86.23 3 0 -tunnel_pls/internal/grpc/client/client.go:86.23,87.19 1 0 -tunnel_pls/internal/grpc/client/client.go:87.19,89.4 1 0 -tunnel_pls/internal/grpc/client/client.go:90.3,90.10 1 0 -tunnel_pls/internal/grpc/client/client.go:91.30,92.14 1 0 -tunnel_pls/internal/grpc/client/client.go:93.21,94.20 1 0 -tunnel_pls/internal/grpc/client/client.go:97.2,97.24 1 0 -tunnel_pls/internal/grpc/client/client.go:97.24,99.27 2 0 -tunnel_pls/internal/grpc/client/client.go:99.27,101.4 1 0 -tunnel_pls/internal/grpc/client/client.go:104.2,104.6 1 0 -tunnel_pls/internal/grpc/client/client.go:104.6,106.17 2 0 -tunnel_pls/internal/grpc/client/client.go:106.17,107.98 1 0 -tunnel_pls/internal/grpc/client/client.go:107.98,109.5 1 0 -tunnel_pls/internal/grpc/client/client.go:110.4,110.78 1 0 -tunnel_pls/internal/grpc/client/client.go:110.78,112.5 1 0 -tunnel_pls/internal/grpc/client/client.go:113.4,113.32 1 0 -tunnel_pls/internal/grpc/client/client.go:113.32,115.5 1 0 -tunnel_pls/internal/grpc/client/client.go:116.4,118.12 3 0 -tunnel_pls/internal/grpc/client/client.go:121.3,131.17 2 0 -tunnel_pls/internal/grpc/client/client.go:131.17,133.32 2 0 -tunnel_pls/internal/grpc/client/client.go:133.32,134.33 1 0 -tunnel_pls/internal/grpc/client/client.go:134.33,136.6 1 0 -tunnel_pls/internal/grpc/client/client.go:137.5,138.13 2 0 -tunnel_pls/internal/grpc/client/client.go:140.4,140.14 1 0 -tunnel_pls/internal/grpc/client/client.go:142.3,145.56 3 0 -tunnel_pls/internal/grpc/client/client.go:145.56,146.98 1 0 -tunnel_pls/internal/grpc/client/client.go:146.98,148.5 1 0 -tunnel_pls/internal/grpc/client/client.go:149.4,149.32 1 0 -tunnel_pls/internal/grpc/client/client.go:149.32,151.33 2 0 -tunnel_pls/internal/grpc/client/client.go:151.33,153.6 1 0 -tunnel_pls/internal/grpc/client/client.go:154.5,155.13 2 0 -tunnel_pls/internal/grpc/client/client.go:157.4,157.14 1 0 -tunnel_pls/internal/grpc/client/client.go:162.105,165.6 2 0 -tunnel_pls/internal/grpc/client/client.go:165.6,167.17 2 0 -tunnel_pls/internal/grpc/client/client.go:167.17,169.4 1 0 -tunnel_pls/internal/grpc/client/client.go:171.3,172.10 2 0 -tunnel_pls/internal/grpc/client/client.go:172.10,174.12 2 0 -tunnel_pls/internal/grpc/client/client.go:177.3,177.38 1 0 -tunnel_pls/internal/grpc/client/client.go:177.38,179.4 1 0 -tunnel_pls/internal/grpc/client/client.go:183.140,185.68 1 0 -tunnel_pls/internal/grpc/client/client.go:185.68,185.113 1 0 -tunnel_pls/internal/grpc/client/client.go:186.68,186.114 1 0 -tunnel_pls/internal/grpc/client/client.go:187.68,187.119 1 0 -tunnel_pls/internal/grpc/client/client.go:191.122,198.16 6 0 -tunnel_pls/internal/grpc/client/client.go:198.16,205.3 1 0 -tunnel_pls/internal/grpc/client/client.go:207.2,207.172 1 0 -tunnel_pls/internal/grpc/client/client.go:207.172,214.3 1 0 -tunnel_pls/internal/grpc/client/client.go:216.2,222.36 2 0 -tunnel_pls/internal/grpc/client/client.go:225.123,229.31 3 0 -tunnel_pls/internal/grpc/client/client.go:229.31,239.3 2 0 -tunnel_pls/internal/grpc/client/client.go:241.2,246.34 1 0 -tunnel_pls/internal/grpc/client/client.go:249.128,255.16 5 0 -tunnel_pls/internal/grpc/client/client.go:255.16,262.3 1 0 -tunnel_pls/internal/grpc/client/client.go:264.2,265.16 2 0 -tunnel_pls/internal/grpc/client/client.go:265.16,272.3 1 0 -tunnel_pls/internal/grpc/client/client.go:274.2,274.55 1 0 -tunnel_pls/internal/grpc/client/client.go:274.55,281.3 1 0 -tunnel_pls/internal/grpc/client/client.go:283.2,288.42 1 0 -tunnel_pls/internal/grpc/client/client.go:291.129,292.45 1 0 -tunnel_pls/internal/grpc/client/client.go:292.45,293.31 1 0 -tunnel_pls/internal/grpc/client/client.go:293.31,295.4 1 0 -tunnel_pls/internal/grpc/client/client.go:296.3,296.37 1 0 -tunnel_pls/internal/grpc/client/client.go:298.2,298.12 1 0 -tunnel_pls/internal/grpc/client/client.go:301.82,302.11 1 0 -tunnel_pls/internal/grpc/client/client.go:303.29,304.35 1 0 -tunnel_pls/internal/grpc/client/client.go:305.28,306.34 1 0 -tunnel_pls/internal/grpc/client/client.go:307.10,308.77 1 0 -tunnel_pls/internal/grpc/client/client.go:312.48,314.2 1 0 -tunnel_pls/internal/grpc/client/client.go:316.109,318.16 2 0 -tunnel_pls/internal/grpc/client/client.go:318.16,320.3 1 0 -tunnel_pls/internal/grpc/client/client.go:322.2,322.82 1 0 -tunnel_pls/internal/grpc/client/client.go:322.82,324.3 1 0 -tunnel_pls/internal/grpc/client/client.go:325.2,325.35 1 0 -tunnel_pls/internal/grpc/client/client.go:328.63,333.16 3 0 -tunnel_pls/internal/grpc/client/client.go:333.16,335.3 1 0 -tunnel_pls/internal/grpc/client/client.go:336.2,336.63 1 0 -tunnel_pls/internal/grpc/client/client.go:336.63,338.3 1 0 -tunnel_pls/internal/grpc/client/client.go:339.2,339.12 1 0 -tunnel_pls/internal/grpc/client/client.go:342.32,343.19 1 0 -tunnel_pls/internal/grpc/client/client.go:343.19,347.3 3 0 -tunnel_pls/internal/grpc/client/client.go:348.2,348.12 1 0 -tunnel_pls/internal/grpc/client/client.go:351.52,352.15 1 0 -tunnel_pls/internal/grpc/client/client.go:352.15,354.3 1 0 -tunnel_pls/internal/grpc/client/client.go:355.2,355.16 1 0 -tunnel_pls/internal/grpc/client/client.go:355.16,357.3 1 0 -tunnel_pls/internal/grpc/client/client.go:358.2,358.28 1 0 -tunnel_pls/internal/grpc/client/client.go:358.28,360.3 1 0 -tunnel_pls/internal/grpc/client/client.go:361.2,361.26 1 0 -tunnel_pls/internal/grpc/client/client.go:362.65,363.14 1 0 -tunnel_pls/internal/grpc/client/client.go:364.10,365.15 1 0 -tunnel_pls/internal/http/header/parser.go:11.4,12.25 1 0 -tunnel_pls/internal/http/header/parser.go:12.25,14.20 2 0 -tunnel_pls/internal/http/header/parser.go:14.20,16.4 1 0 -tunnel_pls/internal/http/header/parser.go:18.3,20.21 2 0 -tunnel_pls/internal/http/header/parser.go:20.21,21.9 1 0 -tunnel_pls/internal/http/header/parser.go:24.3,25.21 2 0 -tunnel_pls/internal/http/header/parser.go:25.21,29.4 3 0 -tunnel_pls/internal/http/header/parser.go:31.3,31.32 1 0 -tunnel_pls/internal/http/header/parser.go:31.32,32.9 1 0 -tunnel_pls/internal/http/header/parser.go:35.3,35.36 1 0 -tunnel_pls/internal/http/header/parser.go:39.70,45.19 3 0 -tunnel_pls/internal/http/header/parser.go:45.19,47.3 1 0 -tunnel_pls/internal/http/header/parser.go:49.2,53.16 5 0 -tunnel_pls/internal/http/header/parser.go:53.16,55.3 1 0 -tunnel_pls/internal/http/header/parser.go:57.2,61.20 3 0 -tunnel_pls/internal/http/header/parser.go:64.81,66.22 2 0 -tunnel_pls/internal/http/header/parser.go:66.22,68.3 1 0 -tunnel_pls/internal/http/header/parser.go:70.2,71.23 2 0 -tunnel_pls/internal/http/header/parser.go:71.23,73.3 1 0 -tunnel_pls/internal/http/header/parser.go:74.2,80.35 5 0 -tunnel_pls/internal/http/header/parser.go:83.70,89.16 3 0 -tunnel_pls/internal/http/header/parser.go:89.16,91.3 1 0 -tunnel_pls/internal/http/header/parser.go:93.2,98.16 5 0 -tunnel_pls/internal/http/header/parser.go:98.16,100.3 1 0 -tunnel_pls/internal/http/header/parser.go:102.2,102.6 1 0 -tunnel_pls/internal/http/header/parser.go:102.6,104.17 2 0 -tunnel_pls/internal/http/header/parser.go:104.17,106.4 1 0 -tunnel_pls/internal/http/header/parser.go:108.3,110.26 2 0 -tunnel_pls/internal/http/header/parser.go:110.26,111.9 1 0 -tunnel_pls/internal/http/header/parser.go:114.3,115.21 2 0 -tunnel_pls/internal/http/header/parser.go:115.21,116.12 1 0 -tunnel_pls/internal/http/header/parser.go:119.3,122.46 3 0 -tunnel_pls/internal/http/header/parser.go:125.2,125.20 1 0 -tunnel_pls/internal/http/header/parser.go:128.67,130.32 2 0 -tunnel_pls/internal/http/header/parser.go:130.32,132.3 1 0 -tunnel_pls/internal/http/header/parser.go:133.2,139.32 5 0 -tunnel_pls/internal/http/header/parser.go:139.32,144.3 4 0 -tunnel_pls/internal/http/header/parser.go:146.2,147.12 2 0 -tunnel_pls/internal/http/header/request.go:8.55,9.23 1 0 -tunnel_pls/internal/http/header/request.go:10.14,11.34 1 0 -tunnel_pls/internal/http/header/request.go:12.21,13.35 1 0 -tunnel_pls/internal/http/header/request.go:14.10,15.52 1 0 -tunnel_pls/internal/http/header/request.go:19.52,21.9 2 0 -tunnel_pls/internal/http/header/request.go:21.9,23.3 1 0 -tunnel_pls/internal/http/header/request.go:24.2,24.12 1 0 -tunnel_pls/internal/http/header/request.go:27.57,29.2 1 0 -tunnel_pls/internal/http/header/request.go:31.46,33.2 1 0 -tunnel_pls/internal/http/header/request.go:35.43,37.2 1 0 -tunnel_pls/internal/http/header/request.go:39.41,41.2 1 0 -tunnel_pls/internal/http/header/request.go:43.44,45.2 1 0 -tunnel_pls/internal/http/header/request.go:47.45,49.2 1 0 -tunnel_pls/internal/http/header/response.go:8.61,15.19 3 0 -tunnel_pls/internal/http/header/response.go:15.19,17.3 1 0 -tunnel_pls/internal/http/header/response.go:19.2,23.20 4 0 -tunnel_pls/internal/http/header/response.go:26.54,28.2 1 0 -tunnel_pls/internal/http/header/response.go:30.59,32.2 1 0 -tunnel_pls/internal/http/header/response.go:34.48,36.2 1 0 -tunnel_pls/internal/http/header/response.go:38.47,40.2 1 0 -tunnel_pls/internal/random/random.go:5.55,9.40 3 0 -tunnel_pls/internal/random/random.go:9.40,11.3 1 0 -tunnel_pls/internal/random/random.go:13.2,13.19 1 0 -tunnel_pls/internal/random/random.go:13.19,15.3 1 0 -tunnel_pls/internal/random/random.go:17.2,17.23 1 0 -tunnel_pls/internal/key/key.go:15.53,16.44 1 0 -tunnel_pls/internal/key/key.go:16.44,19.3 2 0 -tunnel_pls/internal/key/key.go:21.2,24.16 3 0 -tunnel_pls/internal/key/key.go:24.16,26.3 1 0 -tunnel_pls/internal/key/key.go:28.2,34.47 3 0 -tunnel_pls/internal/key/key.go:34.47,36.3 1 0 -tunnel_pls/internal/key/key.go:38.2,39.16 2 0 -tunnel_pls/internal/key/key.go:39.16,41.3 1 0 -tunnel_pls/internal/key/key.go:42.2,44.66 2 0 -tunnel_pls/internal/key/key.go:44.66,46.3 1 0 -tunnel_pls/internal/key/key.go:48.2,49.16 2 0 -tunnel_pls/internal/key/key.go:49.16,51.3 1 0 -tunnel_pls/internal/key/key.go:53.2,55.16 3 0 -tunnel_pls/internal/key/key.go:55.16,57.3 1 0 -tunnel_pls/internal/key/key.go:58.2,61.16 3 0 -tunnel_pls/internal/key/key.go:61.16,63.3 1 0 -tunnel_pls/internal/key/key.go:65.2,66.12 2 0 -tunnel_pls/internal/middleware/forwardedfor.go:12.51,14.2 1 0 -tunnel_pls/internal/middleware/forwardedfor.go:16.74,18.16 2 0 -tunnel_pls/internal/middleware/forwardedfor.go:18.16,20.3 1 0 -tunnel_pls/internal/middleware/forwardedfor.go:21.2,22.12 2 0 -tunnel_pls/internal/middleware/tunnelfingerprint.go:9.48,11.2 1 0 -tunnel_pls/internal/middleware/tunnelfingerprint.go:13.93,16.2 2 0 -tunnel_pls/internal/http/stream/parser.go:5.73,9.2 3 0 -tunnel_pls/internal/http/stream/parser.go:11.36,15.81 3 0 -tunnel_pls/internal/http/stream/parser.go:15.81,17.3 1 0 -tunnel_pls/internal/http/stream/parser.go:19.2,19.33 1 0 -tunnel_pls/internal/http/stream/parser.go:19.33,20.21 1 0 -tunnel_pls/internal/http/stream/parser.go:20.21,21.9 1 0 -tunnel_pls/internal/http/stream/parser.go:23.3,24.20 2 0 -tunnel_pls/internal/http/stream/parser.go:24.20,26.4 1 0 -tunnel_pls/internal/http/stream/parser.go:28.2,28.13 1 0 -tunnel_pls/internal/http/stream/reader.go:8.45,11.29 3 0 -tunnel_pls/internal/http/stream/reader.go:11.29,13.3 1 0 -tunnel_pls/internal/http/stream/reader.go:15.2,18.24 3 0 -tunnel_pls/internal/http/stream/reader.go:18.24,20.3 1 0 -tunnel_pls/internal/http/stream/reader.go:22.2,24.31 2 0 -tunnel_pls/internal/http/stream/reader.go:24.31,27.3 2 0 -tunnel_pls/internal/http/stream/reader.go:29.2,29.55 1 0 -tunnel_pls/internal/http/stream/reader.go:32.81,34.16 2 0 -tunnel_pls/internal/http/stream/reader.go:34.16,36.3 1 0 -tunnel_pls/internal/http/stream/reader.go:38.2,38.57 1 0 -tunnel_pls/internal/http/stream/reader.go:38.57,40.3 1 0 -tunnel_pls/internal/http/stream/reader.go:42.2,44.31 3 0 -tunnel_pls/internal/http/stream/reader.go:47.63,50.2 2 0 -tunnel_pls/internal/http/stream/stream.go:41.72,48.2 1 0 -tunnel_pls/internal/http/stream/stream.go:50.39,52.2 1 0 -tunnel_pls/internal/http/stream/stream.go:54.73,56.2 1 0 -tunnel_pls/internal/http/stream/stream.go:58.71,60.2 1 0 -tunnel_pls/internal/http/stream/stream.go:62.63,64.2 1 0 -tunnel_pls/internal/http/stream/stream.go:66.69,68.2 1 0 -tunnel_pls/internal/http/stream/stream.go:70.71,72.2 1 0 -tunnel_pls/internal/http/stream/stream.go:74.31,76.2 1 0 -tunnel_pls/internal/http/stream/stream.go:78.36,79.67 1 0 -tunnel_pls/internal/http/stream/stream.go:79.67,81.3 1 0 -tunnel_pls/internal/http/stream/stream.go:82.2,82.19 1 0 -tunnel_pls/internal/http/stream/stream.go:85.75,86.44 1 0 -tunnel_pls/internal/http/stream/stream.go:86.44,87.48 1 0 -tunnel_pls/internal/http/stream/stream.go:87.48,90.4 2 0 -tunnel_pls/internal/http/stream/stream.go:92.2,92.12 1 0 -tunnel_pls/internal/http/stream/stream.go:95.95,96.45 1 0 -tunnel_pls/internal/http/stream/stream.go:96.45,97.60 1 0 -tunnel_pls/internal/http/stream/stream.go:97.60,100.4 2 0 -tunnel_pls/internal/http/stream/stream.go:102.2,102.12 1 0 -tunnel_pls/internal/http/stream/writer.go:8.46,9.33 1 0 -tunnel_pls/internal/http/stream/writer.go:9.33,11.3 1 0 -tunnel_pls/internal/http/stream/writer.go:13.2,13.26 1 0 -tunnel_pls/internal/http/stream/writer.go:13.26,15.3 1 0 -tunnel_pls/internal/http/stream/writer.go:17.2,20.24 3 0 -tunnel_pls/internal/http/stream/writer.go:20.24,22.3 1 0 -tunnel_pls/internal/http/stream/writer.go:24.2,24.52 1 0 -tunnel_pls/internal/http/stream/writer.go:27.54,29.2 1 0 -tunnel_pls/internal/http/stream/writer.go:31.82,34.31 2 0 -tunnel_pls/internal/http/stream/writer.go:34.31,36.3 1 0 -tunnel_pls/internal/http/stream/writer.go:38.2,38.69 1 0 -tunnel_pls/internal/http/stream/writer.go:38.69,40.3 1 0 -tunnel_pls/internal/http/stream/writer.go:42.2,43.20 2 0 -tunnel_pls/internal/http/stream/writer.go:46.47,50.16 4 0 -tunnel_pls/internal/http/stream/writer.go:50.16,52.3 1 0 -tunnel_pls/internal/http/stream/writer.go:53.2,53.20 1 0 -tunnel_pls/internal/http/stream/writer.go:56.72,58.16 2 0 -tunnel_pls/internal/http/stream/writer.go:58.16,60.3 1 0 -tunnel_pls/internal/http/stream/writer.go:62.2,62.69 1 0 -tunnel_pls/internal/http/stream/writer.go:62.69,64.3 1 0 -tunnel_pls/internal/http/stream/writer.go:66.2,69.68 3 0 -tunnel_pls/internal/http/stream/writer.go:69.68,71.3 1 0 -tunnel_pls/internal/http/stream/writer.go:73.2,73.12 1 0 -tunnel_pls/internal/http/stream/writer.go:76.67,77.51 1 0 -tunnel_pls/internal/http/stream/writer.go:77.51,79.3 1 0 -tunnel_pls/internal/http/stream/writer.go:81.2,81.23 1 0 -tunnel_pls/internal/http/stream/writer.go:81.23,82.54 1 0 -tunnel_pls/internal/http/stream/writer.go:82.54,84.4 1 0 -tunnel_pls/internal/http/stream/writer.go:87.2,87.12 1 0 -tunnel_pls/internal/registry/registry.go:46.29,51.2 1 1 -tunnel_pls/internal/registry/registry.go:53.62,58.9 4 1 -tunnel_pls/internal/registry/registry.go:58.9,60.3 1 1 -tunnel_pls/internal/registry/registry.go:62.2,63.9 2 1 -tunnel_pls/internal/registry/registry.go:63.9,65.3 1 1 -tunnel_pls/internal/registry/registry.go:66.2,66.20 1 1 -tunnel_pls/internal/registry/registry.go:69.83,74.9 4 1 -tunnel_pls/internal/registry/registry.go:74.9,76.3 1 1 -tunnel_pls/internal/registry/registry.go:77.2,77.20 1 1 -tunnel_pls/internal/registry/registry.go:80.66,81.32 1 1 -tunnel_pls/internal/registry/registry.go:81.32,83.3 1 1 -tunnel_pls/internal/registry/registry.go:85.2,85.41 1 1 -tunnel_pls/internal/registry/registry.go:85.41,87.3 1 1 -tunnel_pls/internal/registry/registry.go:89.2,89.32 1 1 -tunnel_pls/internal/registry/registry.go:89.32,91.3 1 1 -tunnel_pls/internal/registry/registry.go:93.2,93.29 1 1 -tunnel_pls/internal/registry/registry.go:93.29,95.3 1 1 -tunnel_pls/internal/registry/registry.go:97.2,100.66 3 1 -tunnel_pls/internal/registry/registry.go:100.66,102.3 1 1 -tunnel_pls/internal/registry/registry.go:103.2,104.9 2 1 -tunnel_pls/internal/registry/registry.go:104.9,106.3 1 1 -tunnel_pls/internal/registry/registry.go:108.2,114.27 5 1 -tunnel_pls/internal/registry/registry.go:114.27,116.3 1 0 -tunnel_pls/internal/registry/registry.go:117.2,118.12 2 1 -tunnel_pls/internal/registry/registry.go:121.74,125.43 3 1 -tunnel_pls/internal/registry/registry.go:125.43,127.3 1 1 -tunnel_pls/internal/registry/registry.go:129.2,130.29 2 1 -tunnel_pls/internal/registry/registry.go:130.29,132.3 1 1 -tunnel_pls/internal/registry/registry.go:134.2,136.13 3 1 -tunnel_pls/internal/registry/registry.go:139.65,144.17 4 1 -tunnel_pls/internal/registry/registry.go:144.17,146.3 1 1 -tunnel_pls/internal/registry/registry.go:148.2,149.22 2 1 -tunnel_pls/internal/registry/registry.go:149.22,151.3 1 1 -tunnel_pls/internal/registry/registry.go:152.2,152.17 1 1 -tunnel_pls/internal/registry/registry.go:155.36,160.9 4 1 -tunnel_pls/internal/registry/registry.go:160.9,162.3 1 1 -tunnel_pls/internal/registry/registry.go:164.2,165.32 2 1 -tunnel_pls/internal/registry/registry.go:165.32,167.3 1 1 -tunnel_pls/internal/registry/registry.go:168.2,168.26 1 1 -tunnel_pls/internal/registry/registry.go:171.36,172.60 1 1 -tunnel_pls/internal/registry/registry.go:172.60,174.3 1 1 -tunnel_pls/internal/registry/registry.go:176.2,176.48 1 1 -tunnel_pls/internal/registry/registry.go:176.48,178.3 1 1 -tunnel_pls/internal/registry/registry.go:180.2,180.25 1 1 -tunnel_pls/internal/registry/registry.go:180.25,181.32 1 1 -tunnel_pls/internal/registry/registry.go:181.32,183.4 1 1 -tunnel_pls/internal/registry/registry.go:186.2,186.13 1 1 -tunnel_pls/internal/registry/registry.go:189.35,191.2 1 1 -tunnel_pls/internal/registry/registry.go:193.40,196.2 2 1 -tunnel_pls/session/lifecycle/lifecycle.go:36.145,48.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:61.50,63.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:65.35,67.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:69.53,71.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:72.43,74.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:75.59,77.66 2 0 -tunnel_pls/session/lifecycle/lifecycle.go:77.66,79.3 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:82.56,83.14 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:83.14,85.3 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:86.2,86.12 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:89.35,93.49 3 0 -tunnel_pls/session/lifecycle/lifecycle.go:93.49,95.3 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:97.2,97.46 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:97.46,99.3 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:101.2,108.39 4 0 -tunnel_pls/session/lifecycle/lifecycle.go:108.39,109.88 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:109.88,111.4 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:112.3,112.45 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:112.45,114.4 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:117.2,117.29 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:120.37,122.2 1 0 -tunnel_pls/session/lifecycle/lifecycle.go:124.43,126.2 1 0 -tunnel_pls/session/interaction/coming_soon.go:11.71,14.2 2 0 -tunnel_pls/session/interaction/coming_soon.go:16.41,21.15 4 0 -tunnel_pls/session/interaction/coming_soon.go:21.15,24.3 2 0 -tunnel_pls/session/interaction/coming_soon.go:24.8,27.3 2 0 -tunnel_pls/session/interaction/coming_soon.go:29.2,57.41 8 0 -tunnel_pls/session/interaction/coming_soon.go:57.41,59.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:59.8,61.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:62.2,66.41 4 0 -tunnel_pls/session/interaction/coming_soon.go:66.41,68.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:68.8,70.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:71.2,75.41 4 0 -tunnel_pls/session/interaction/coming_soon.go:75.41,77.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:77.8,79.3 1 0 -tunnel_pls/session/interaction/coming_soon.go:80.2,82.19 2 0 -tunnel_pls/session/interaction/commands.go:13.69,16.9 2 0 -tunnel_pls/session/interaction/commands.go:17.39,19.56 2 0 -tunnel_pls/session/interaction/commands.go:20.31,22.26 2 0 -tunnel_pls/session/interaction/commands.go:22.26,24.27 2 0 -tunnel_pls/session/interaction/commands.go:24.27,30.5 5 0 -tunnel_pls/session/interaction/commands.go:30.10,30.41 1 0 -tunnel_pls/session/interaction/commands.go:30.41,34.5 3 0 -tunnel_pls/session/interaction/commands.go:35.4,36.17 2 0 -tunnel_pls/session/interaction/commands.go:38.29,40.56 2 0 -tunnel_pls/session/interaction/commands.go:42.2,43.15 2 0 -tunnel_pls/session/interaction/commands.go:46.39,64.41 7 0 -tunnel_pls/session/interaction/commands.go:64.41,66.3 1 0 -tunnel_pls/session/interaction/commands.go:66.8,68.3 1 0 -tunnel_pls/session/interaction/commands.go:69.2,75.15 6 0 -tunnel_pls/session/interaction/commands.go:75.15,77.3 1 0 -tunnel_pls/session/interaction/commands.go:77.8,79.3 1 0 -tunnel_pls/session/interaction/commands.go:80.2,82.19 2 0 -tunnel_pls/session/interaction/dashboard.go:13.70,14.9 1 0 -tunnel_pls/session/interaction/dashboard.go:15.39,17.66 2 0 -tunnel_pls/session/interaction/dashboard.go:18.42,20.56 2 0 -tunnel_pls/session/interaction/dashboard.go:22.2,22.15 1 0 -tunnel_pls/session/interaction/dashboard.go:25.40,54.15 9 0 -tunnel_pls/session/interaction/dashboard.go:54.15,56.3 1 0 -tunnel_pls/session/interaction/dashboard.go:56.8,58.3 1 0 -tunnel_pls/session/interaction/dashboard.go:60.2,66.41 3 0 -tunnel_pls/session/interaction/dashboard.go:66.41,68.3 1 0 -tunnel_pls/session/interaction/dashboard.go:68.8,68.22 1 0 -tunnel_pls/session/interaction/dashboard.go:68.22,72.3 1 0 -tunnel_pls/session/interaction/dashboard.go:72.8,80.3 1 0 -tunnel_pls/session/interaction/dashboard.go:82.2,85.42 3 0 -tunnel_pls/session/interaction/dashboard.go:85.42,89.3 3 0 -tunnel_pls/session/interaction/dashboard.go:89.8,91.3 1 0 -tunnel_pls/session/interaction/dashboard.go:93.2,96.15 4 0 -tunnel_pls/session/interaction/dashboard.go:96.15,99.3 2 0 -tunnel_pls/session/interaction/dashboard.go:99.8,102.3 2 0 -tunnel_pls/session/interaction/dashboard.go:104.2,126.41 7 0 -tunnel_pls/session/interaction/dashboard.go:126.41,131.3 1 0 -tunnel_pls/session/interaction/dashboard.go:131.8,136.3 1 0 -tunnel_pls/session/interaction/dashboard.go:138.2,142.41 4 0 -tunnel_pls/session/interaction/dashboard.go:142.41,144.3 1 0 -tunnel_pls/session/interaction/dashboard.go:144.8,144.22 1 0 -tunnel_pls/session/interaction/dashboard.go:144.22,146.3 1 0 -tunnel_pls/session/interaction/dashboard.go:146.8,148.3 1 0 -tunnel_pls/session/interaction/dashboard.go:149.2,153.15 4 0 -tunnel_pls/session/interaction/dashboard.go:153.15,155.3 1 0 -tunnel_pls/session/interaction/dashboard.go:155.8,157.3 1 0 -tunnel_pls/session/interaction/dashboard.go:159.2,165.41 4 0 -tunnel_pls/session/interaction/dashboard.go:165.41,168.3 2 0 -tunnel_pls/session/interaction/dashboard.go:168.8,171.3 2 0 -tunnel_pls/session/interaction/dashboard.go:173.2,177.42 4 0 -tunnel_pls/session/interaction/dashboard.go:177.42,183.3 3 0 -tunnel_pls/session/interaction/dashboard.go:185.2,185.19 1 0 -tunnel_pls/session/interaction/interaction.go:55.56,57.2 1 0 -tunnel_pls/session/interaction/interaction.go:59.52,61.2 1 0 -tunnel_pls/session/interaction/interaction.go:63.50,64.22 1 0 -tunnel_pls/session/interaction/interaction.go:64.22,67.3 2 0 -tunnel_pls/session/interaction/interaction.go:68.2,68.12 1 0 -tunnel_pls/session/interaction/interaction.go:70.39,71.22 1 0 -tunnel_pls/session/interaction/interaction.go:71.22,76.3 1 0 -tunnel_pls/session/interaction/interaction.go:79.148,93.2 2 0 -tunnel_pls/session/interaction/interaction.go:95.55,97.2 1 0 -tunnel_pls/session/interaction/interaction.go:99.30,100.21 1 0 -tunnel_pls/session/interaction/interaction.go:100.21,102.3 1 0 -tunnel_pls/session/interaction/interaction.go:103.2,103.22 1 0 -tunnel_pls/session/interaction/interaction.go:103.22,106.3 2 0 -tunnel_pls/session/interaction/interaction.go:109.58,111.27 1 0 -tunnel_pls/session/interaction/interaction.go:112.15,114.56 2 0 -tunnel_pls/session/interaction/interaction.go:116.25,122.21 5 0 -tunnel_pls/session/interaction/interaction.go:122.21,124.4 1 0 -tunnel_pls/session/interaction/interaction.go:124.9,126.4 1 0 -tunnel_pls/session/interaction/interaction.go:127.3,127.16 1 0 -tunnel_pls/session/interaction/interaction.go:129.19,131.66 2 0 -tunnel_pls/session/interaction/interaction.go:133.18,134.26 1 0 -tunnel_pls/session/interaction/interaction.go:134.26,136.4 1 0 -tunnel_pls/session/interaction/interaction.go:138.3,138.20 1 0 -tunnel_pls/session/interaction/interaction.go:138.20,140.4 1 0 -tunnel_pls/session/interaction/interaction.go:142.3,142.24 1 0 -tunnel_pls/session/interaction/interaction.go:142.24,144.4 1 0 -tunnel_pls/session/interaction/interaction.go:146.3,146.32 1 0 -tunnel_pls/session/interaction/interaction.go:149.2,149.15 1 0 -tunnel_pls/session/interaction/interaction.go:152.32,153.22 1 0 -tunnel_pls/session/interaction/interaction.go:153.22,155.3 1 0 -tunnel_pls/session/interaction/interaction.go:158.31,159.16 1 0 -tunnel_pls/session/interaction/interaction.go:159.16,161.3 1 0 -tunnel_pls/session/interaction/interaction.go:163.2,163.25 1 0 -tunnel_pls/session/interaction/interaction.go:163.25,165.3 1 0 -tunnel_pls/session/interaction/interaction.go:167.2,167.19 1 0 -tunnel_pls/session/interaction/interaction.go:167.19,169.3 1 0 -tunnel_pls/session/interaction/interaction.go:171.2,171.23 1 0 -tunnel_pls/session/interaction/interaction.go:171.23,173.3 1 0 -tunnel_pls/session/interaction/interaction.go:175.2,175.26 1 0 -tunnel_pls/session/interaction/interaction.go:178.31,179.45 1 0 -tunnel_pls/session/interaction/interaction.go:179.45,181.3 1 0 -tunnel_pls/session/interaction/interaction.go:182.2,185.27 3 0 -tunnel_pls/session/interaction/interaction.go:185.27,187.3 1 0 -tunnel_pls/session/interaction/interaction.go:189.2,249.16 19 0 -tunnel_pls/session/interaction/interaction.go:249.16,251.3 1 0 -tunnel_pls/session/interaction/interaction.go:252.2,254.24 3 0 -tunnel_pls/session/interaction/interaction.go:254.24,255.39 1 0 -tunnel_pls/session/interaction/interaction.go:255.39,257.4 1 0 -tunnel_pls/session/interaction/model.go:20.43,20.60 1 0 -tunnel_pls/session/interaction/model.go:21.43,21.60 1 0 -tunnel_pls/session/interaction/model.go:22.43,22.60 1 0 -tunnel_pls/session/interaction/model.go:43.39,44.42 1 0 -tunnel_pls/session/interaction/model.go:44.42,46.3 1 0 -tunnel_pls/session/interaction/model.go:47.2,47.53 1 0 -tunnel_pls/session/interaction/model.go:58.32,60.2 1 0 -tunnel_pls/session/interaction/model.go:62.75,64.22 2 0 -tunnel_pls/session/interaction/model.go:64.22,66.3 1 0 -tunnel_pls/session/interaction/model.go:67.2,67.22 1 0 -tunnel_pls/session/interaction/model.go:67.22,69.3 1 0 -tunnel_pls/session/interaction/model.go:70.2,70.14 1 0 -tunnel_pls/session/interaction/model.go:73.60,75.2 1 0 -tunnel_pls/session/interaction/model.go:77.53,78.25 1 0 -tunnel_pls/session/interaction/model.go:78.25,80.3 1 0 -tunnel_pls/session/interaction/model.go:81.2,81.19 1 0 -tunnel_pls/session/interaction/model.go:81.19,83.3 1 0 -tunnel_pls/session/interaction/model.go:84.2,84.32 1 0 -tunnel_pls/session/interaction/model.go:87.39,88.47 1 0 -tunnel_pls/session/interaction/model.go:88.47,90.3 1 0 -tunnel_pls/session/interaction/model.go:93.58,95.2 1 0 -tunnel_pls/session/interaction/slug.go:15.65,18.42 2 0 -tunnel_pls/session/interaction/slug.go:18.42,22.3 3 0 -tunnel_pls/session/interaction/slug.go:24.2,24.22 1 0 -tunnel_pls/session/interaction/slug.go:25.13,28.56 3 0 -tunnel_pls/session/interaction/slug.go:29.15,37.18 2 0 -tunnel_pls/session/interaction/slug.go:37.18,40.4 2 0 -tunnel_pls/session/interaction/slug.go:41.3,43.56 3 0 -tunnel_pls/session/interaction/slug.go:44.16,47.56 3 0 -tunnel_pls/session/interaction/slug.go:48.10,49.40 1 0 -tunnel_pls/session/interaction/slug.go:49.40,51.18 2 0 -tunnel_pls/session/interaction/slug.go:51.18,53.5 1 0 -tunnel_pls/session/interaction/slug.go:54.4,56.46 3 0 -tunnel_pls/session/interaction/slug.go:58.3,60.16 3 0 -tunnel_pls/session/interaction/slug.go:64.35,70.19 5 0 -tunnel_pls/session/interaction/slug.go:70.19,73.3 2 0 -tunnel_pls/session/interaction/slug.go:73.8,73.22 1 0 -tunnel_pls/session/interaction/slug.go:73.22,76.3 2 0 -tunnel_pls/session/interaction/slug.go:76.8,79.3 2 0 -tunnel_pls/session/interaction/slug.go:81.2,125.19 10 0 -tunnel_pls/session/interaction/slug.go:125.19,127.3 1 0 -tunnel_pls/session/interaction/slug.go:127.8,129.3 1 0 -tunnel_pls/session/interaction/slug.go:130.2,133.42 3 0 -tunnel_pls/session/interaction/slug.go:133.42,147.20 4 0 -tunnel_pls/session/interaction/slug.go:147.20,149.4 1 0 -tunnel_pls/session/interaction/slug.go:149.9,151.4 1 0 -tunnel_pls/session/interaction/slug.go:152.3,156.20 4 0 -tunnel_pls/session/interaction/slug.go:156.20,158.4 1 0 -tunnel_pls/session/interaction/slug.go:158.9,160.4 1 0 -tunnel_pls/session/interaction/slug.go:161.3,162.20 2 0 -tunnel_pls/session/interaction/slug.go:165.2,166.19 2 0 -tunnel_pls/session/interaction/slug.go:166.19,168.3 1 0 -tunnel_pls/session/interaction/slug.go:168.8,168.22 1 0 -tunnel_pls/session/interaction/slug.go:168.22,170.3 1 0 -tunnel_pls/session/interaction/slug.go:170.8,172.3 1 0 -tunnel_pls/session/interaction/slug.go:173.2,177.19 4 0 -tunnel_pls/session/interaction/slug.go:177.19,179.3 1 0 -tunnel_pls/session/interaction/slug.go:179.8,181.3 1 0 -tunnel_pls/session/interaction/slug.go:182.2,185.23 3 0 -tunnel_pls/session/interaction/slug.go:185.23,196.3 5 0 -tunnel_pls/session/interaction/slug.go:196.8,199.3 2 0 -tunnel_pls/session/interaction/slug.go:201.2,204.39 3 0 -tunnel_pls/session/interaction/slug.go:204.39,206.3 1 0 -tunnel_pls/session/interaction/slug.go:208.2,216.19 5 0 -tunnel_pls/session/interaction/slug.go:216.19,218.3 1 0 -tunnel_pls/session/interaction/slug.go:218.8,220.3 1 0 -tunnel_pls/session/interaction/slug.go:221.2,223.19 2 0 -tunnel_pls/session/slug/slug.go:12.17,16.2 1 0 -tunnel_pls/session/slug/slug.go:18.32,20.2 1 0 -tunnel_pls/session/slug/slug.go:22.33,24.2 1 0 -tunnel_pls/internal/version/version.go:11.26,13.2 1 0 -tunnel_pls/internal/version/version.go:15.31,17.2 1 0 -tunnel_pls/session/session.go:52.201,68.2 5 0 -tunnel_pls/session/session.go:70.51,72.2 1 0 -tunnel_pls/session/session.go:74.57,76.2 1 0 -tunnel_pls/session/session.go:78.51,80.2 1 0 -tunnel_pls/session/session.go:82.36,84.2 1 0 -tunnel_pls/session/session.go:86.42,92.9 3 0 -tunnel_pls/session/session.go:92.9,94.3 1 0 -tunnel_pls/session/session.go:96.2,102.3 1 0 -tunnel_pls/session/session.go:105.33,106.45 1 0 -tunnel_pls/session/session.go:106.45,108.3 1 0 -tunnel_pls/session/session.go:110.2,111.21 2 0 -tunnel_pls/session/session.go:111.21,113.3 1 0 -tunnel_pls/session/session.go:115.2,115.34 1 0 -tunnel_pls/session/session.go:115.34,117.3 1 0 -tunnel_pls/session/session.go:119.2,119.55 1 0 -tunnel_pls/session/session.go:119.55,121.3 1 0 -tunnel_pls/session/session.go:122.2,124.30 2 0 -tunnel_pls/session/session.go:127.44,128.9 1 0 -tunnel_pls/session/session.go:129.34,130.10 1 0 -tunnel_pls/session/session.go:130.10,133.4 2 0 -tunnel_pls/session/session.go:134.3,134.41 1 0 -tunnel_pls/session/session.go:135.44,137.13 2 0 -tunnel_pls/session/session.go:141.70,143.16 2 0 -tunnel_pls/session/session.go:143.16,146.3 2 0 -tunnel_pls/session/session.go:148.2,148.12 1 0 -tunnel_pls/session/session.go:148.12,150.17 2 0 -tunnel_pls/session/session.go:150.17,152.4 1 0 -tunnel_pls/session/session.go:155.2,159.12 4 0 -tunnel_pls/session/session.go:162.55,164.16 2 0 -tunnel_pls/session/session.go:164.16,166.3 1 0 -tunnel_pls/session/session.go:167.2,167.43 1 0 -tunnel_pls/session/session.go:167.43,169.3 1 0 -tunnel_pls/session/session.go:170.2,170.44 1 0 -tunnel_pls/session/session.go:173.51,177.2 1 0 -tunnel_pls/session/session.go:179.45,180.117 1 0 -tunnel_pls/session/session.go:180.117,182.3 1 0 -tunnel_pls/session/session.go:184.2,184.44 1 0 -tunnel_pls/session/session.go:184.44,187.3 2 0 -tunnel_pls/session/session.go:188.2,188.12 1 0 -tunnel_pls/session/session.go:191.54,192.9 1 0 -tunnel_pls/session/session.go:193.33,194.10 1 0 -tunnel_pls/session/session.go:194.10,197.4 2 0 -tunnel_pls/session/session.go:198.3,198.34 1 0 -tunnel_pls/session/session.go:198.34,200.4 1 0 -tunnel_pls/session/session.go:201.3,201.47 1 0 -tunnel_pls/session/session.go:201.47,203.4 1 0 -tunnel_pls/session/session.go:204.3,205.13 2 0 -tunnel_pls/session/session.go:206.44,208.13 2 0 -tunnel_pls/session/session.go:212.62,214.17 2 0 -tunnel_pls/session/session.go:214.17,217.3 2 0 -tunnel_pls/session/session.go:219.2,223.29 4 0 -tunnel_pls/session/session.go:226.80,227.33 1 0 -tunnel_pls/session/session.go:227.33,228.19 1 0 -tunnel_pls/session/session.go:229.27,231.18 2 0 -tunnel_pls/session/session.go:231.18,233.5 1 0 -tunnel_pls/session/session.go:234.24,235.52 1 0 -tunnel_pls/session/session.go:235.52,237.5 1 0 -tunnel_pls/session/session.go:238.11,241.18 3 0 -tunnel_pls/session/session.go:241.18,243.5 1 0 -tunnel_pls/session/session.go:246.2,246.12 1 0 -tunnel_pls/session/session.go:249.105,251.16 2 0 -tunnel_pls/session/session.go:251.16,253.3 1 0 -tunnel_pls/session/session.go:255.2,256.84 2 0 -tunnel_pls/session/session.go:256.84,258.3 1 0 -tunnel_pls/session/session.go:260.2,260.27 1 0 -tunnel_pls/session/session.go:260.27,262.3 1 0 -tunnel_pls/session/session.go:264.2,265.25 2 0 -tunnel_pls/session/session.go:265.25,267.3 1 0 -tunnel_pls/session/session.go:269.2,269.15 1 0 -tunnel_pls/session/session.go:269.15,271.10 2 0 -tunnel_pls/session/session.go:271.10,273.4 1 0 -tunnel_pls/session/session.go:274.3,274.34 1 0 -tunnel_pls/session/session.go:277.2,277.27 1 0 -tunnel_pls/session/session.go:280.120,282.16 2 0 -tunnel_pls/session/session.go:282.16,284.3 1 0 -tunnel_pls/session/session.go:285.2,285.21 1 0 -tunnel_pls/session/session.go:285.21,286.42 1 0 -tunnel_pls/session/session.go:286.42,288.4 1 0 -tunnel_pls/session/session.go:290.2,290.46 1 0 -tunnel_pls/session/session.go:290.46,292.3 1 0 -tunnel_pls/session/session.go:293.2,293.44 1 0 -tunnel_pls/session/session.go:293.44,295.3 1 0 -tunnel_pls/session/session.go:296.2,297.29 2 0 -tunnel_pls/session/session.go:300.87,303.16 3 0 -tunnel_pls/session/session.go:303.16,305.3 1 0 -tunnel_pls/session/session.go:307.2,308.16 2 0 -tunnel_pls/session/session.go:308.16,310.3 1 0 -tunnel_pls/session/session.go:311.2,311.12 1 0 -tunnel_pls/session/session.go:314.146,316.16 2 0 -tunnel_pls/session/session.go:316.16,318.3 1 0 -tunnel_pls/session/session.go:320.2,325.21 5 0 -tunnel_pls/session/session.go:325.21,327.3 1 0 -tunnel_pls/session/session.go:329.2,329.12 1 0 -tunnel_pls/session/session.go:332.62,336.16 3 0 -tunnel_pls/session/session.go:336.16,338.3 1 0 -tunnel_pls/session/session.go:340.2,340.14 1 0 -tunnel_pls/session/session.go:341.15,342.40 1 0 -tunnel_pls/session/session.go:343.10,344.48 1 0 -tunnel_pls/session/session.go:348.80,350.16 2 0 -tunnel_pls/session/session.go:350.16,352.3 1 0 -tunnel_pls/session/session.go:353.2,354.34 2 0 -tunnel_pls/session/session.go:354.34,356.3 1 0 -tunnel_pls/session/session.go:358.2,359.16 2 0 -tunnel_pls/session/session.go:359.16,361.3 1 0 -tunnel_pls/session/session.go:362.2,362.12 1 0 -tunnel_pls/session/session.go:365.92,366.71 1 0 -tunnel_pls/session/session.go:366.71,368.3 1 0 -tunnel_pls/session/session.go:370.2,372.16 3 0 -tunnel_pls/session/session.go:372.16,374.3 1 0 -tunnel_pls/session/session.go:376.2,377.34 2 0 -tunnel_pls/session/session.go:377.34,379.3 1 0 -tunnel_pls/session/session.go:381.2,382.16 2 0 -tunnel_pls/session/session.go:382.16,384.3 1 0 -tunnel_pls/session/session.go:386.2,386.12 1 0 -tunnel_pls/session/session.go:386.12,388.17 2 0 -tunnel_pls/session/session.go:388.17,390.4 1 0 -tunnel_pls/session/session.go:393.2,393.12 1 0 -tunnel_pls/session/session.go:396.54,398.71 2 0 -tunnel_pls/session/session.go:398.71,400.3 1 0 -tunnel_pls/session/session.go:401.2,402.49 2 0 -tunnel_pls/session/session.go:402.49,404.3 1 0 -tunnel_pls/session/session.go:405.2,405.30 1 0 -tunnel_pls/session/session.go:408.38,409.31 1 0 -tunnel_pls/session/session.go:409.31,411.3 1 0 -tunnel_pls/session/session.go:412.2,412.30 1 0 -tunnel_pls/session/session.go:412.30,414.3 1 0 -tunnel_pls/session/session.go:415.2,415.41 1 0 -tunnel_pls/session/session.go:415.41,416.16 1 0 -tunnel_pls/session/session.go:416.16,418.4 1 0 -tunnel_pls/session/session.go:420.2,420.14 1 0 -tunnel_pls/internal/transport/http.go:15.104,20.2 1 0 -tunnel_pls/internal/transport/http.go:22.54,24.2 1 0 -tunnel_pls/internal/transport/http.go:26.58,28.6 2 0 -tunnel_pls/internal/transport/http.go:28.6,30.17 2 0 -tunnel_pls/internal/transport/http.go:30.17,31.37 1 0 -tunnel_pls/internal/transport/http.go:31.37,33.5 1 0 -tunnel_pls/internal/transport/http.go:34.4,35.12 2 0 -tunnel_pls/internal/transport/http.go:38.3,38.37 1 0 -tunnel_pls/internal/transport/httphandler.go:28.102,34.2 1 0 -tunnel_pls/internal/transport/httphandler.go:36.83,42.16 2 0 -tunnel_pls/internal/transport/httphandler.go:42.16,44.3 1 0 -tunnel_pls/internal/transport/httphandler.go:45.2,45.12 1 0 -tunnel_pls/internal/transport/httphandler.go:48.56,49.82 1 0 -tunnel_pls/internal/transport/httphandler.go:49.82,51.3 1 0 -tunnel_pls/internal/transport/httphandler.go:52.2,52.12 1 0 -tunnel_pls/internal/transport/httphandler.go:55.59,60.16 4 0 -tunnel_pls/internal/transport/httphandler.go:60.16,63.3 2 0 -tunnel_pls/internal/transport/httphandler.go:65.2,66.16 2 0 -tunnel_pls/internal/transport/httphandler.go:66.16,69.3 2 0 -tunnel_pls/internal/transport/httphandler.go:71.2,71.35 1 0 -tunnel_pls/internal/transport/httphandler.go:71.35,74.3 2 0 -tunnel_pls/internal/transport/httphandler.go:76.2,76.38 1 0 -tunnel_pls/internal/transport/httphandler.go:76.38,78.3 1 0 -tunnel_pls/internal/transport/httphandler.go:80.2,81.16 2 0 -tunnel_pls/internal/transport/httphandler.go:81.16,84.3 2 0 -tunnel_pls/internal/transport/httphandler.go:86.2,87.29 2 0 -tunnel_pls/internal/transport/httphandler.go:87.29,89.17 2 0 -tunnel_pls/internal/transport/httphandler.go:89.17,91.4 1 0 -tunnel_pls/internal/transport/httphandler.go:93.2,93.42 1 0 -tunnel_pls/internal/transport/httphandler.go:96.55,98.50 2 0 -tunnel_pls/internal/transport/httphandler.go:98.50,100.3 1 0 -tunnel_pls/internal/transport/httphandler.go:103.80,105.19 2 0 -tunnel_pls/internal/transport/httphandler.go:105.19,107.3 1 0 -tunnel_pls/internal/transport/httphandler.go:108.2,108.21 1 0 -tunnel_pls/internal/transport/httphandler.go:111.61,113.2 1 0 -tunnel_pls/internal/transport/httphandler.go:115.75,116.20 1 0 -tunnel_pls/internal/transport/httphandler.go:116.20,118.3 1 0 -tunnel_pls/internal/transport/httphandler.go:120.2,129.16 2 0 -tunnel_pls/internal/transport/httphandler.go:129.16,131.3 1 0 -tunnel_pls/internal/transport/httphandler.go:132.2,132.13 1 0 -tunnel_pls/internal/transport/httphandler.go:135.74,140.16 2 0 -tunnel_pls/internal/transport/httphandler.go:140.16,142.3 1 0 -tunnel_pls/internal/transport/httphandler.go:143.2,143.24 1 0 -tunnel_pls/internal/transport/httphandler.go:146.121,148.16 2 0 -tunnel_pls/internal/transport/httphandler.go:148.16,152.3 3 0 -tunnel_pls/internal/transport/httphandler.go:154.2,154.15 1 0 -tunnel_pls/internal/transport/httphandler.go:154.15,156.44 2 0 -tunnel_pls/internal/transport/httphandler.go:156.44,158.4 1 0 -tunnel_pls/internal/transport/httphandler.go:161.2,163.74 2 0 -tunnel_pls/internal/transport/httphandler.go:163.74,166.3 2 0 -tunnel_pls/internal/transport/httphandler.go:167.2,167.54 1 0 -tunnel_pls/internal/transport/httphandler.go:170.111,181.12 4 0 -tunnel_pls/internal/transport/httphandler.go:181.12,183.10 2 0 -tunnel_pls/internal/transport/httphandler.go:184.56,184.56 0 0 -tunnel_pls/internal/transport/httphandler.go:185.11,186.42 1 0 -tunnel_pls/internal/transport/httphandler.go:190.2,190.9 1 0 -tunnel_pls/internal/transport/httphandler.go:191.30,192.24 1 0 -tunnel_pls/internal/transport/httphandler.go:192.24,194.4 1 0 -tunnel_pls/internal/transport/httphandler.go:195.3,196.29 2 0 -tunnel_pls/internal/transport/httphandler.go:197.37,198.68 1 0 -tunnel_pls/internal/transport/httphandler.go:202.92,203.20 1 0 -tunnel_pls/internal/transport/httphandler.go:203.20,204.41 1 0 -tunnel_pls/internal/transport/httphandler.go:204.41,206.4 1 0 -tunnel_pls/internal/transport/httphandler.go:207.3,207.31 1 0 -tunnel_pls/internal/transport/httphandler.go:211.57,217.2 4 0 -tunnel_pls/internal/transport/httphandler.go:219.123,222.67 2 0 -tunnel_pls/internal/transport/httphandler.go:222.67,224.3 1 0 -tunnel_pls/internal/transport/httphandler.go:226.2,226.68 1 0 -tunnel_pls/internal/transport/httphandler.go:226.68,228.3 1 0 -tunnel_pls/internal/transport/httphandler.go:230.2,230.12 1 0 -tunnel_pls/internal/transport/https.go:18.128,25.2 1 0 -tunnel_pls/internal/transport/https.go:27.49,29.2 1 0 -tunnel_pls/internal/transport/https.go:31.53,33.6 2 0 -tunnel_pls/internal/transport/https.go:33.6,35.17 2 0 -tunnel_pls/internal/transport/https.go:35.17,36.37 1 0 -tunnel_pls/internal/transport/https.go:36.37,38.5 1 0 -tunnel_pls/internal/transport/https.go:39.4,40.12 2 0 -tunnel_pls/internal/transport/https.go:43.3,43.40 1 0 -tunnel_pls/internal/transport/tcp.go:24.63,29.2 1 0 -tunnel_pls/internal/transport/tcp.go:31.47,33.2 1 0 -tunnel_pls/internal/transport/tcp.go:35.51,36.6 1 0 -tunnel_pls/internal/transport/tcp.go:36.6,38.17 2 0 -tunnel_pls/internal/transport/tcp.go:38.17,39.37 1 0 -tunnel_pls/internal/transport/tcp.go:39.37,41.5 1 0 -tunnel_pls/internal/transport/tcp.go:42.4,43.12 2 0 -tunnel_pls/internal/transport/tcp.go:45.3,45.24 1 0 -tunnel_pls/internal/transport/tcp.go:49.41,50.15 1 0 -tunnel_pls/internal/transport/tcp.go:50.15,52.17 2 0 -tunnel_pls/internal/transport/tcp.go:52.17,54.4 1 0 -tunnel_pls/internal/transport/tcp.go:56.2,58.16 3 0 -tunnel_pls/internal/transport/tcp.go:58.16,62.3 2 0 -tunnel_pls/internal/transport/tcp.go:64.2,65.46 2 0 -tunnel_pls/internal/transport/tls.go:46.62,49.27 2 0 -tunnel_pls/internal/transport/tls.go:49.27,61.34 5 0 -tunnel_pls/internal/transport/tls.go:61.34,63.45 2 0 -tunnel_pls/internal/transport/tls.go:63.45,66.5 2 0 -tunnel_pls/internal/transport/tls.go:67.4,68.25 2 0 -tunnel_pls/internal/transport/tls.go:69.9,71.45 2 0 -tunnel_pls/internal/transport/tls.go:71.45,74.5 2 0 -tunnel_pls/internal/transport/tls.go:75.4,75.26 1 0 -tunnel_pls/internal/transport/tls.go:78.3,78.24 1 0 -tunnel_pls/internal/transport/tls.go:81.2,81.20 1 0 -tunnel_pls/internal/transport/tls.go:81.20,83.3 1 0 -tunnel_pls/internal/transport/tls.go:85.2,85.45 1 0 -tunnel_pls/internal/transport/tls.go:88.53,89.56 1 0 -tunnel_pls/internal/transport/tls.go:89.56,92.3 2 0 -tunnel_pls/internal/transport/tls.go:93.2,93.55 1 0 -tunnel_pls/internal/transport/tls.go:93.55,96.3 2 0 -tunnel_pls/internal/transport/tls.go:98.2,98.61 1 0 -tunnel_pls/internal/transport/tls.go:101.56,103.16 2 0 -tunnel_pls/internal/transport/tls.go:103.16,106.3 2 0 -tunnel_pls/internal/transport/tls.go:108.2,109.18 2 0 -tunnel_pls/internal/transport/tls.go:109.18,112.3 2 0 -tunnel_pls/internal/transport/tls.go:114.2,115.16 2 0 -tunnel_pls/internal/transport/tls.go:115.16,118.3 2 0 -tunnel_pls/internal/transport/tls.go:120.2,120.37 1 0 -tunnel_pls/internal/transport/tls.go:120.37,123.3 2 0 -tunnel_pls/internal/transport/tls.go:125.2,125.62 1 0 -tunnel_pls/internal/transport/tls.go:125.62,128.3 2 0 -tunnel_pls/internal/transport/tls.go:130.2,131.35 2 0 -tunnel_pls/internal/transport/tls.go:131.35,133.3 1 0 -tunnel_pls/internal/transport/tls.go:134.2,140.32 5 0 -tunnel_pls/internal/transport/tls.go:140.32,141.18 1 0 -tunnel_pls/internal/transport/tls.go:141.18,143.4 1 0 -tunnel_pls/internal/transport/tls.go:144.3,144.26 1 0 -tunnel_pls/internal/transport/tls.go:144.26,146.4 1 0 -tunnel_pls/internal/transport/tls.go:149.2,149.14 1 0 -tunnel_pls/internal/transport/tls.go:149.14,151.3 1 0 -tunnel_pls/internal/transport/tls.go:152.2,152.18 1 0 -tunnel_pls/internal/transport/tls.go:152.18,154.3 1 0 -tunnel_pls/internal/transport/tls.go:156.2,156.31 1 0 -tunnel_pls/internal/transport/tls.go:159.45,161.16 2 0 -tunnel_pls/internal/transport/tls.go:161.16,163.3 1 0 -tunnel_pls/internal/transport/tls.go:165.2,170.12 5 0 -tunnel_pls/internal/transport/tls.go:173.42,174.12 1 0 -tunnel_pls/internal/transport/tls.go:174.12,177.52 2 0 -tunnel_pls/internal/transport/tls.go:177.52,179.4 1 0 -tunnel_pls/internal/transport/tls.go:180.3,180.51 1 0 -tunnel_pls/internal/transport/tls.go:180.51,182.4 1 0 -tunnel_pls/internal/transport/tls.go:184.3,187.22 3 0 -tunnel_pls/internal/transport/tls.go:187.22,191.39 3 0 -tunnel_pls/internal/transport/tls.go:191.39,192.13 1 0 -tunnel_pls/internal/transport/tls.go:195.4,195.84 1 0 -tunnel_pls/internal/transport/tls.go:195.84,198.62 2 0 -tunnel_pls/internal/transport/tls.go:198.62,201.47 2 0 -tunnel_pls/internal/transport/tls.go:201.47,203.15 2 0 -tunnel_pls/internal/transport/tls.go:205.6,206.12 2 0 -tunnel_pls/internal/transport/tls.go:209.5,209.46 1 0 -tunnel_pls/internal/transport/tls.go:209.46,211.14 2 0 -tunnel_pls/internal/transport/tls.go:214.5,216.53 3 0 -tunnel_pls/internal/transport/tls.go:222.45,223.58 1 0 -tunnel_pls/internal/transport/tls.go:223.58,225.3 1 0 -tunnel_pls/internal/transport/tls.go:227.2,227.34 1 0 -tunnel_pls/internal/transport/tls.go:227.34,229.3 1 0 -tunnel_pls/internal/transport/tls.go:231.2,238.81 3 0 -tunnel_pls/internal/transport/tls.go:238.81,240.4 1 0 -tunnel_pls/internal/transport/tls.go:243.2,257.29 3 0 -tunnel_pls/internal/transport/tls.go:257.29,260.3 2 0 -tunnel_pls/internal/transport/tls.go:260.8,263.3 2 0 -tunnel_pls/internal/transport/tls.go:265.2,272.55 6 0 -tunnel_pls/internal/transport/tls.go:272.55,274.3 1 0 -tunnel_pls/internal/transport/tls.go:276.2,277.12 2 0 -tunnel_pls/internal/transport/tls.go:280.50,294.2 1 0 -tunnel_pls/internal/transport/tls.go:296.92,297.21 1 0 -tunnel_pls/internal/transport/tls.go:297.21,299.3 1 0 -tunnel_pls/internal/transport/tls.go:301.2,304.24 3 0 -tunnel_pls/internal/transport/tls.go:304.24,306.3 1 0 -tunnel_pls/internal/transport/tls.go:308.2,308.25 1 0 -tunnel_pls/server/server.go:33.178,35.16 2 0 -tunnel_pls/server/server.go:35.16,37.3 1 0 -tunnel_pls/server/server.go:39.2,47.8 1 0 -tunnel_pls/server/server.go:50.26,52.6 2 0 -tunnel_pls/server/server.go:52.6,54.17 2 0 -tunnel_pls/server/server.go:54.17,55.37 1 0 -tunnel_pls/server/server.go:55.37,58.5 2 0 -tunnel_pls/server/server.go:59.4,60.12 2 0 -tunnel_pls/server/server.go:63.3,63.30 1 0 -tunnel_pls/server/server.go:67.32,69.2 1 0 -tunnel_pls/server/server.go:71.50,73.16 2 0 -tunnel_pls/server/server.go:73.16,76.17 3 0 -tunnel_pls/server/server.go:76.17,79.4 2 0 -tunnel_pls/server/server.go:80.3,80.9 1 0 -tunnel_pls/server/server.go:83.2,83.38 1 0 -tunnel_pls/server/server.go:83.38,85.51 2 0 -tunnel_pls/server/server.go:85.51,87.4 1 0 -tunnel_pls/server/server.go:90.2,91.25 2 0 -tunnel_pls/server/server.go:91.25,96.3 4 0 -tunnel_pls/server/server.go:97.2,100.16 4 0 -tunnel_pls/server/server.go:100.16,103.3 2 0 -tunnel_pls/server/server.go:104.2,104.8 1 0 -tunnel_pls/session/forwarder/forwarder.go:43.73,51.28 1 0 -tunnel_pls/session/forwarder/forwarder.go:51.28,54.5 2 0 -tunnel_pls/session/forwarder/forwarder.go:59.93,63.2 3 0 -tunnel_pls/session/forwarder/forwarder.go:65.100,73.12 3 0 -tunnel_pls/session/forwarder/forwarder.go:73.12,75.10 2 0 -tunnel_pls/session/forwarder/forwarder.go:76.56,76.56 0 0 -tunnel_pls/session/forwarder/forwarder.go:77.11,78.22 1 0 -tunnel_pls/session/forwarder/forwarder.go:78.22,80.19 2 0 -tunnel_pls/session/forwarder/forwarder.go:80.19,83.6 2 0 -tunnel_pls/session/forwarder/forwarder.go:84.5,84.33 1 0 -tunnel_pls/session/forwarder/forwarder.go:89.2,89.9 1 0 -tunnel_pls/session/forwarder/forwarder.go:90.30,91.49 1 0 -tunnel_pls/session/forwarder/forwarder.go:92.37,93.73 1 0 -tunnel_pls/session/forwarder/forwarder.go:97.37,98.55 1 0 -tunnel_pls/session/forwarder/forwarder.go:98.55,100.3 1 0 -tunnel_pls/session/forwarder/forwarder.go:101.2,101.37 1 0 -tunnel_pls/session/forwarder/forwarder.go:101.37,103.3 1 0 -tunnel_pls/session/forwarder/forwarder.go:104.2,104.12 1 0 -tunnel_pls/session/forwarder/forwarder.go:107.88,110.77 3 0 -tunnel_pls/session/forwarder/forwarder.go:110.77,112.3 1 0 -tunnel_pls/session/forwarder/forwarder.go:114.2,114.67 1 0 -tunnel_pls/session/forwarder/forwarder.go:114.67,116.3 1 0 -tunnel_pls/session/forwarder/forwarder.go:117.2,117.29 1 0 -tunnel_pls/session/forwarder/forwarder.go:120.74,121.15 1 0 -tunnel_pls/session/forwarder/forwarder.go:121.15,123.17 2 0 -tunnel_pls/session/forwarder/forwarder.go:123.17,125.4 1 0 -tunnel_pls/session/forwarder/forwarder.go:128.2,131.12 3 0 -tunnel_pls/session/forwarder/forwarder.go:131.12,134.17 3 0 -tunnel_pls/session/forwarder/forwarder.go:134.17,137.4 2 0 -tunnel_pls/session/forwarder/forwarder.go:140.2,140.12 1 0 -tunnel_pls/session/forwarder/forwarder.go:140.12,143.17 3 0 -tunnel_pls/session/forwarder/forwarder.go:143.17,146.4 2 0 -tunnel_pls/session/forwarder/forwarder.go:149.2,149.11 1 0 -tunnel_pls/session/forwarder/forwarder.go:152.58,154.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:156.51,158.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:160.44,162.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:164.51,166.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:168.56,170.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:172.45,174.2 1 0 -tunnel_pls/session/forwarder/forwarder.go:176.60,178.16 2 0 -tunnel_pls/session/forwarder/forwarder.go:178.16,181.3 2 0 -tunnel_pls/session/forwarder/forwarder.go:184.35,185.25 1 0 -tunnel_pls/session/forwarder/forwarder.go:185.25,187.3 1 0 -tunnel_pls/session/forwarder/forwarder.go:188.2,188.12 1 0 -tunnel_pls/session/forwarder/forwarder.go:191.73,198.16 5 0 -tunnel_pls/session/forwarder/forwarder.go:198.16,201.3 2 0 -tunnel_pls/session/forwarder/forwarder.go:203.2,205.16 3 0 -tunnel_pls/session/forwarder/forwarder.go:205.16,208.3 2 0 -tunnel_pls/session/forwarder/forwarder.go:210.2,210.20 1 0 -tunnel_pls/session/forwarder/forwarder.go:213.46,215.16 2 0 -tunnel_pls/session/forwarder/forwarder.go:215.16,218.3 2 0 -tunnel_pls/session/forwarder/forwarder.go:219.2,220.27 2 0 -tunnel_pls/session/forwarder/forwarder.go:223.55,225.16 2 0 -tunnel_pls/session/forwarder/forwarder.go:225.16,228.3 2 0 -tunnel_pls/session/forwarder/forwarder.go:229.2,229.25 1 0 diff --git a/sonar-project.properties b/sonar-project.properties index 1aad585..626044d 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,3 +1,3 @@ sonar.projectKey=tunnel-please sonar.go.coverage.reportPaths=coverage -sonar.tests.inclusions=**/*_test.go \ No newline at end of file +sonar.test.inclusions=**/*_test.go \ No newline at end of file From 50b4127cb37e83e17f4ba3542df2dbbd1957ed54 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 12:30:20 +0700 Subject: [PATCH 03/47] test(middleware): add unit tests for middleware behavior - remove redundant check on registry.Update and check if slug exist before locking the mutex - Update SonarQube action to not use Go cache when setting up Go --- .gitea/workflows/sonarqube.yml | 1 + internal/middleware/forwardedfor_test.go | 130 ++++++++++++++++++ internal/middleware/tunnelfingerprint_test.go | 76 ++++++++++ internal/registry/registry.go | 10 +- 4 files changed, 211 insertions(+), 6 deletions(-) create mode 100644 internal/middleware/forwardedfor_test.go create mode 100644 internal/middleware/tunnelfingerprint_test.go diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index 4a00cc5..dc03a14 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -18,6 +18,7 @@ jobs: uses: actions/setup-go@v6 with: go-version: '1.25.5' + cache: false - name: Install dependencies run: go mod tidy diff --git a/internal/middleware/forwardedfor_test.go b/internal/middleware/forwardedfor_test.go new file mode 100644 index 0000000..ef6a536 --- /dev/null +++ b/internal/middleware/forwardedfor_test.go @@ -0,0 +1,130 @@ +package middleware + +import ( + "net" + "testing" +) + +type mockRequestHeader struct { + headers map[string]string +} + +func (m *mockRequestHeader) Value(key string) string { + return m.headers[key] +} + +func (m *mockRequestHeader) Set(key string, value string) { + m.headers[key] = value +} + +func (m *mockRequestHeader) Remove(key string) { + delete(m.headers, key) +} + +func (m *mockRequestHeader) Finalize() []byte { + return []byte{} +} + +func (m *mockRequestHeader) Method() string { + return "" +} + +func (m *mockRequestHeader) Path() string { + return "" +} + +func (m *mockRequestHeader) Version() string { + return "" +} + +func TestForwardedFor_HandleRequest(t *testing.T) { + tests := []struct { + name string + addr net.Addr + expectedHost string + expectError bool + }{ + { + name: "valid IPv4 address", + addr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 8080}, + expectedHost: "192.168.1.100", + expectError: false, + }, + { + name: "valid IPv6 address", + addr: &net.TCPAddr{IP: net.ParseIP("2001:db8::ff00:42:8329"), Port: 8080}, + expectedHost: "2001:db8::ff00:42:8329", + expectError: false, + }, + { + name: "invalid address format", + addr: &net.UnixAddr{Name: "/tmp/socket", Net: "unix"}, + expectedHost: "", + expectError: true, + }, + { + name: "valid IPv4 address with port", + addr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 1234}, + expectedHost: "127.0.0.1", + expectError: false, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + ff := NewForwardedFor(tc.addr) + reqHeader := &mockRequestHeader{headers: make(map[string]string)} + + err := ff.HandleRequest(reqHeader) + + if tc.expectError { + if err == nil { + t.Fatalf("expected error but got none") + } + } else { + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + host := reqHeader.Value("X-Forwarded-For") + if host != tc.expectedHost { + t.Errorf("expected X-Forwarded-For header to be '%s', got '%s'", tc.expectedHost, host) + } + } + }) + } +} + +func TestNewForwardedFor(t *testing.T) { + tests := []struct { + name string + addr net.Addr + expectAddr net.Addr + }{ + { + name: "IPv4 address", + addr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8080}, + expectAddr: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8080}, + }, + { + name: "IPv6 address", + addr: &net.TCPAddr{IP: net.ParseIP("2001:db8::ff00:42:8329"), Port: 0}, + expectAddr: &net.TCPAddr{IP: net.ParseIP("2001:db8::ff00:42:8329"), Port: 0}, + }, + { + name: "Unix address", + addr: &net.UnixAddr{Name: "/tmp/socket", Net: "unix"}, + expectAddr: &net.UnixAddr{Name: "/tmp/socket", Net: "unix"}, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + ff := NewForwardedFor(tc.addr) + + if ff.addr.String() != tc.expectAddr.String() { + t.Errorf("expected addr to be '%v', got '%v'", tc.expectAddr, ff.addr) + } + }) + } +} diff --git a/internal/middleware/tunnelfingerprint_test.go b/internal/middleware/tunnelfingerprint_test.go new file mode 100644 index 0000000..4753ac0 --- /dev/null +++ b/internal/middleware/tunnelfingerprint_test.go @@ -0,0 +1,76 @@ +package middleware + +import ( + "errors" + "testing" +) + +type mockResponseHeader struct { + headers map[string]string +} + +func (m *mockResponseHeader) Value(key string) string { + return m.headers[key] +} + +func (m *mockResponseHeader) Set(key string, value string) { + m.headers[key] = value +} + +func (m *mockResponseHeader) Remove(key string) { + delete(m.headers, key) +} + +func (m *mockResponseHeader) Finalize() []byte { + return nil +} + +func TestTunnelFingerprintHandleResponse(t *testing.T) { + tests := []struct { + name string + initialState map[string]string + expected map[string]string + body []byte + wantErr error + }{ + { + name: "Sets Server Header", + initialState: map[string]string{}, + expected: map[string]string{"Server": "Tunnel Please"}, + body: []byte("Sample body"), + wantErr: nil, + }, + { + name: "Overwrites Server Header", + initialState: map[string]string{"Server": "Old Value"}, + expected: map[string]string{"Server": "Tunnel Please"}, + body: nil, + wantErr: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockHeader := &mockResponseHeader{headers: tt.initialState} + tunnelFingerprint := NewTunnelFingerprint() + + err := tunnelFingerprint.HandleResponse(mockHeader, tt.body) + if !errors.Is(err, tt.wantErr) { + t.Fatalf("unexpected error, got: %v, want: %v", err, tt.wantErr) + } + + for key, expectedValue := range tt.expected { + if val := mockHeader.Value(key); val != expectedValue { + t.Errorf("header[%q] = %q; want %q", key, val, expectedValue) + } + } + }) + } +} + +func TestNewTunnelFingerprint(t *testing.T) { + instance := NewTunnelFingerprint() + if instance == nil { + t.Errorf("NewTunnelFingerprint() = nil; want non-nil instance") + } +} diff --git a/internal/registry/registry.go b/internal/registry/registry.go index 89cac48..e12ea0b 100644 --- a/internal/registry/registry.go +++ b/internal/registry/registry.go @@ -94,12 +94,13 @@ func (r *registry) Update(user string, oldKey, newKey Key) error { return ErrInvalidSlug } - r.mu.Lock() - defer r.mu.Unlock() - if _, exists := r.slugIndex[newKey]; exists && newKey != oldKey { return ErrSlugInUse } + + r.mu.Lock() + defer r.mu.Unlock() + client, ok := r.byUser[user][oldKey] if !ok { return ErrSessionNotFound @@ -111,9 +112,6 @@ func (r *registry) Update(user string, oldKey, newKey Key) error { client.Slug().Set(newKey.Id) r.slugIndex[newKey] = user - if r.byUser[user] == nil { - r.byUser[user] = make(map[Key]Session) - } r.byUser[user][newKey] = client return nil } From a55ff5f6ab8308ac388c7904d9f8022666410095 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 12:39:46 +0700 Subject: [PATCH 04/47] test(port): add unit tests for port behavior --- internal/port/port_test.go | 114 +++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 internal/port/port_test.go diff --git a/internal/port/port_test.go b/internal/port/port_test.go new file mode 100644 index 0000000..b787f30 --- /dev/null +++ b/internal/port/port_test.go @@ -0,0 +1,114 @@ +package port + +import ( + "testing" +) + +func TestAddRange(t *testing.T) { + tests := []struct { + name string + startPort uint16 + endPort uint16 + wantErr bool + }{ + {"normal range", 1000, 1002, false}, + {"invalid range", 2000, 1999, true}, + {"single port range", 3000, 3000, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pm := New() + err := pm.AddRange(tt.startPort, tt.endPort) + if (err != nil) != tt.wantErr { + t.Errorf("AddRange() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestUnassigned(t *testing.T) { + pm := New() + _ = pm.AddRange(1000, 1002) + + tests := []struct { + name string + status map[uint16]bool + want uint16 + wantOk bool + }{ + {"all unassigned", map[uint16]bool{1000: false, 1001: false, 1002: false}, 1000, true}, + {"some assigned", map[uint16]bool{1000: true, 1001: false, 1002: true}, 1001, true}, + {"all assigned", map[uint16]bool{1000: true, 1001: true, 1002: true}, 0, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for k, v := range tt.status { + _ = pm.SetStatus(k, v) + } + got, gotOk := pm.Unassigned() + if got != tt.want || gotOk != tt.wantOk { + t.Errorf("Unassigned() got = %v, want %v, gotOk = %v, wantOk %v", got, tt.want, gotOk, tt.wantOk) + } + }) + } +} + +func TestSetStatus(t *testing.T) { + pm := New() + _ = pm.AddRange(1000, 1002) + + tests := []struct { + name string + port uint16 + assigned bool + }{ + {"assign port 1000", 1000, true}, + {"unassign port 1001", 1001, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := pm.SetStatus(tt.port, tt.assigned); err != nil { + t.Errorf("SetStatus() error = %v", err) + } + if status, _ := pm.(*port).ports[tt.port]; status != tt.assigned { + t.Errorf("SetStatus() failed, port %v has status %v, want %v", tt.port, status, tt.assigned) + } + }) + } +} + +func TestClaim(t *testing.T) { + pm := New() + _ = pm.AddRange(1000, 1002) + + tests := []struct { + name string + port uint16 + status bool + want bool + }{ + {"claim unassigned port", 1000, false, true}, + {"claim already assigned port", 1001, true, false}, + {"claim non-existent port", 5000, false, true}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if _, exists := pm.(*port).ports[tt.port]; exists { + _ = pm.SetStatus(tt.port, tt.status) + } + + got := pm.Claim(tt.port) + if got != tt.want { + t.Errorf("Claim() got = %v, want %v", got, tt.want) + } + + if finalState := pm.(*port).ports[tt.port]; finalState != true { + t.Errorf("Claim() did not update port %v status to 'assigned'", tt.port) + } + }) + } +} From e534972abc32ba07dd71d04ed4c3a1f476b86a44 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 13:27:25 +0700 Subject: [PATCH 05/47] test(random): add unit tests for random behavior - Added unit tests to cover random string generation and error handling. - Introduced Random interface and random struct for better abstraction. - Updated server, session, and interaction packages to require Random interface for dependency injection. --- internal/random/random.go | 29 ++++++++++++-- internal/random/random_test.go | 61 ++++++++++++++++++++++++++++++ main.go | 7 ++-- server/server.go | 7 +++- session/interaction/interaction.go | 6 ++- session/interaction/model.go | 2 + session/interaction/slug.go | 3 +- session/session.go | 8 ++-- 8 files changed, 109 insertions(+), 14 deletions(-) create mode 100644 internal/random/random_test.go diff --git a/internal/random/random.go b/internal/random/random.go index 929cc7b..cb793d4 100644 --- a/internal/random/random.go +++ b/internal/random/random.go @@ -1,12 +1,35 @@ package random -import "crypto/rand" +import ( + "crypto/rand" + "fmt" + "io" +) -func GenerateRandomString(length int) (string, error) { +var ( + ErrInvalidLength = fmt.Errorf("invalid length") +) + +type Random interface { + String(length int) (string, error) +} + +type random struct { + reader io.Reader +} + +func New() Random { + return &random{reader: rand.Reader} +} + +func (ran *random) String(length int) (string, error) { + if length < 0 { + return "", ErrInvalidLength + } const charset = "abcdefghijklmnopqrstuvwxyz0123456789" b := make([]byte, length) - if _, err := rand.Read(b); err != nil { + if _, err := ran.reader.Read(b); err != nil { return "", err } diff --git a/internal/random/random_test.go b/internal/random/random_test.go new file mode 100644 index 0000000..8c6787e --- /dev/null +++ b/internal/random/random_test.go @@ -0,0 +1,61 @@ +package random + +import ( + "errors" + "fmt" + "testing" +) + +type brainrotReader struct { + err error +} + +func (f *brainrotReader) Read(p []byte) (int, error) { + return 0, f.err +} + +func TestRandom_String(t *testing.T) { + tests := []struct { + name string + length int + wantErr bool + }{ + {"ValidLengthZero", 0, false}, + {"ValidPositiveLength", 10, false}, + {"NegativeLength", -1, true}, + {"VeryLargeLength", 1_000_000, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + randomizer := New() + + result, err := randomizer.String(tt.length) + if (err != nil) != tt.wantErr { + t.Errorf("String() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if !tt.wantErr && len(result) != tt.length { + t.Errorf("String() length = %v, want %v", len(result), tt.length) + } + }) + } +} + +func TestRandomWithFailingReader_String(t *testing.T) { + var randomizer Random + var errBrainrot = fmt.Errorf("you are not sigma enough") + randomizer = &random{reader: &brainrotReader{err: errBrainrot}} + t.Run("test failing reader", func(t *testing.T) { + result, err := randomizer.String(20) + if !errors.Is(err, errBrainrot) { + t.Errorf("String() error = %v, wantErr %v", err, errBrainrot) + return + } + + if result != "" { + t.Errorf("String() result = %v, want an empty string due to error", result) + } + }) +} diff --git a/main.go b/main.go index f897b46..d62f722 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ import ( "tunnel_pls/internal/grpc/client" "tunnel_pls/internal/key" "tunnel_pls/internal/port" + "tunnel_pls/internal/random" "tunnel_pls/internal/registry" "tunnel_pls/internal/transport" "tunnel_pls/internal/version" @@ -127,17 +128,17 @@ func main() { } }() } - + portManager := port.New() err = portManager.AddRange(conf.AllowedPortsStart(), conf.AllowedPortsEnd()) if err != nil { log.Fatalf("Failed to initialize port manager: %s", err) return } - + randomizer := random.New() var app server.Server go func() { - app, err = server.New(conf, sshConfig, sessionRegistry, grpcClient, portManager, conf.SSHPort()) + app, err = server.New(randomizer, conf, sshConfig, sessionRegistry, grpcClient, portManager, conf.SSHPort()) if err != nil { errChan <- fmt.Errorf("failed to start server: %s", err) return diff --git a/server/server.go b/server/server.go index f47c579..a1990b4 100644 --- a/server/server.go +++ b/server/server.go @@ -10,6 +10,7 @@ import ( "tunnel_pls/internal/config" "tunnel_pls/internal/grpc/client" "tunnel_pls/internal/port" + "tunnel_pls/internal/random" "tunnel_pls/internal/registry" "tunnel_pls/session" @@ -21,6 +22,7 @@ type Server interface { Close() error } type server struct { + randomizer random.Random config config.Config sshPort string sshListener net.Listener @@ -30,13 +32,14 @@ type server struct { portRegistry port.Port } -func New(config config.Config, sshConfig *ssh.ServerConfig, sessionRegistry registry.Registry, grpcClient client.Client, portRegistry port.Port, sshPort string) (Server, error) { +func New(randomizer random.Random, config config.Config, sshConfig *ssh.ServerConfig, sessionRegistry registry.Registry, grpcClient client.Client, portRegistry port.Port, sshPort string) (Server, error) { listener, err := net.Listen("tcp", fmt.Sprintf(":%s", sshPort)) if err != nil { return nil, err } return &server{ + randomizer: randomizer, config: config, sshPort: sshPort, sshListener: listener, @@ -95,7 +98,7 @@ func (s *server) handleConnection(conn net.Conn) { cancel() } log.Println("SSH connection established:", sshConn.User()) - sshSession := session.New(s.config, sshConn, forwardingReqs, chans, s.sessionRegistry, s.portRegistry, user) + sshSession := session.New(s.randomizer, s.config, sshConn, forwardingReqs, chans, s.sessionRegistry, s.portRegistry, user) err = sshSession.Start() if err != nil { log.Printf("SSH session ended with error: %v", err) diff --git a/session/interaction/interaction.go b/session/interaction/interaction.go index 5f68102..fe5b496 100644 --- a/session/interaction/interaction.go +++ b/session/interaction/interaction.go @@ -4,6 +4,7 @@ import ( "context" "log" "tunnel_pls/internal/config" + "tunnel_pls/internal/random" "tunnel_pls/session/slug" "tunnel_pls/types" @@ -39,6 +40,7 @@ type Forwarder interface { type CloseFunc func() error type interaction struct { + randomizer random.Random config config.Config channel ssh.Channel slug slug.Slug @@ -76,9 +78,10 @@ func (i *interaction) SetWH(w, h int) { } } -func New(config config.Config, slug slug.Slug, forwarder Forwarder, sessionRegistry SessionRegistry, user string, closeFunc CloseFunc) Interaction { +func New(randomizer random.Random, config config.Config, slug slug.Slug, forwarder Forwarder, sessionRegistry SessionRegistry, user string, closeFunc CloseFunc) Interaction { ctx, cancel := context.WithCancel(context.Background()) return &interaction{ + randomizer: randomizer, config: config, channel: nil, slug: slug, @@ -210,6 +213,7 @@ func (i *interaction) Start() { ti.Width = 50 m := &model{ + randomizer: i.randomizer, domain: i.config.Domain(), protocol: protocol, tunnelType: tunnelType, diff --git a/session/interaction/model.go b/session/interaction/model.go index 189b0a1..3002d16 100644 --- a/session/interaction/model.go +++ b/session/interaction/model.go @@ -3,6 +3,7 @@ package interaction import ( "fmt" "time" + "tunnel_pls/internal/random" "tunnel_pls/types" "github.com/charmbracelet/bubbles/help" @@ -22,6 +23,7 @@ func (i commandItem) Title() string { return i.name } func (i commandItem) Description() string { return i.desc } type model struct { + randomizer random.Random domain string protocol string tunnelType types.TunnelType diff --git a/session/interaction/slug.go b/session/interaction/slug.go index 2b871d4..647cd31 100644 --- a/session/interaction/slug.go +++ b/session/interaction/slug.go @@ -3,7 +3,6 @@ package interaction import ( "fmt" "strings" - "tunnel_pls/internal/random" "tunnel_pls/types" "github.com/charmbracelet/bubbles/key" @@ -47,7 +46,7 @@ func (m *model) slugUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { return m, tea.Batch(tea.ClearScreen, textinput.Blink) default: if key.Matches(msg, m.keymap.random) { - newSubdomain, err := random.GenerateRandomString(20) + newSubdomain, err := m.randomizer.String(20) if err != nil { return m, cmd } diff --git a/session/session.go b/session/session.go index b1895ab..cb7c04c 100644 --- a/session/session.go +++ b/session/session.go @@ -37,6 +37,7 @@ type Session interface { } type session struct { + randomizer random.Random config config.Config initialReq <-chan *ssh.Request sshChan <-chan ssh.NewChannel @@ -49,13 +50,14 @@ type session struct { var blockedReservedPorts = []uint16{1080, 1433, 1521, 1900, 2049, 3306, 3389, 5432, 5900, 6379, 8080, 8443, 9000, 9200, 27017} -func New(config config.Config, conn *ssh.ServerConn, initialReq <-chan *ssh.Request, sshChan <-chan ssh.NewChannel, sessionRegistry registry.Registry, portRegistry portUtil.Port, user string) Session { +func New(randomizer random.Random, config config.Config, conn *ssh.ServerConn, initialReq <-chan *ssh.Request, sshChan <-chan ssh.NewChannel, sessionRegistry registry.Registry, portRegistry portUtil.Port, user string) Session { slugManager := slug.New() forwarderManager := forwarder.New(config, slugManager, conn) lifecycleManager := lifecycle.New(conn, forwarderManager, slugManager, portRegistry, sessionRegistry, user) - interactionManager := interaction.New(config, slugManager, forwarderManager, sessionRegistry, user, lifecycleManager.Close) + interactionManager := interaction.New(randomizer, config, slugManager, forwarderManager, sessionRegistry, user, lifecycleManager.Close) return &session{ + randomizer: randomizer, config: config, initialReq: initialReq, sshChan: sshChan, @@ -346,7 +348,7 @@ func (s *session) HandleTCPIPForward(req *ssh.Request) error { } func (s *session) HandleHTTPForward(req *ssh.Request, portToBind uint16) error { - randomString, err := random.GenerateRandomString(20) + randomString, err := s.randomizer.String(20) if err != nil { return s.denyForwardingRequest(req, nil, nil, fmt.Sprintf("Failed to create slug: %s", err)) } From 29cabe42d33a3542550f895e83b259925d297378 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 19:22:35 +0700 Subject: [PATCH 06/47] test(transport): add unit tests for transport behavior using Testify --- go.mod | 5 + go.sum | 10 + internal/transport/http.go | 2 +- internal/transport/http_test.go | 112 ++++ internal/transport/httphandler.go | 37 +- internal/transport/httphandler_test.go | 755 +++++++++++++++++++++++++ internal/transport/https.go | 2 +- internal/transport/https_test.go | 100 ++++ internal/transport/tcp.go | 6 +- internal/transport/tcp_test.go | 146 +++++ internal/transport/tls_test.go | 178 ++++++ internal/transport/transport.go | 4 + internal/transport/transport_test.go | 15 + 13 files changed, 1346 insertions(+), 26 deletions(-) create mode 100644 internal/transport/http_test.go create mode 100644 internal/transport/httphandler_test.go create mode 100644 internal/transport/https_test.go create mode 100644 internal/transport/tcp_test.go create mode 100644 internal/transport/tls_test.go create mode 100644 internal/transport/transport_test.go diff --git a/go.mod b/go.mod index 958657e..214f1c5 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/joho/godotenv v1.5.1 github.com/libdns/cloudflare v0.2.2 github.com/muesli/termenv v0.16.0 + github.com/stretchr/testify v1.8.1 golang.org/x/crypto v0.47.0 google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 @@ -27,6 +28,7 @@ require ( github.com/clipperhouse/displaywidth v0.6.2 // indirect github.com/clipperhouse/stringish v0.1.1 // indirect github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/libdns/libdns v1.1.1 // indirect @@ -38,8 +40,10 @@ require ( github.com/miekg/dns v1.1.69 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/sahilm/fuzzy v0.1.1 // indirect + github.com/stretchr/objx v0.5.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/zeebo/blake3 v0.2.4 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -52,4 +56,5 @@ require ( golang.org/x/text v0.33.0 // indirect golang.org/x/tools v0.40.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 11912af..4356e9d 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,7 @@ github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfa github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= @@ -80,6 +81,12 @@ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= @@ -138,5 +145,8 @@ google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/transport/http.go b/internal/transport/http.go index dd091c3..8ea5c4d 100644 --- a/internal/transport/http.go +++ b/internal/transport/http.go @@ -35,6 +35,6 @@ func (ht *httpServer) Serve(listener net.Listener) error { continue } - go ht.handler.handler(conn, false) + go ht.handler.Handler(conn, false) } } diff --git a/internal/transport/http_test.go b/internal/transport/http_test.go new file mode 100644 index 0000000..348dbb0 --- /dev/null +++ b/internal/transport/http_test.go @@ -0,0 +1,112 @@ +package transport + +import ( + "errors" + "fmt" + "net" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +func TestNewHTTPServer(t *testing.T) { + msr := new(MockSessionRegistry) + domain := "example.com" + port := "8080" + redirectTLS := true + + srv := NewHTTPServer(domain, port, msr, redirectTLS) + assert.NotNil(t, srv) + + httpSrv, ok := srv.(*httpServer) + assert.True(t, ok) + assert.Equal(t, port, httpSrv.port) + assert.Equal(t, domain, httpSrv.handler.domain) + assert.Equal(t, msr, httpSrv.handler.sessionRegistry) + assert.Equal(t, redirectTLS, httpSrv.handler.redirectTLS) +} + +func TestHTTPServer_Listen(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPServer("example.com", "0", msr, false) + + listener, err := srv.Listen() + assert.NoError(t, err) + assert.NotNil(t, listener) + listener.Close() +} + +func TestHTTPServer_Serve(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPServer("example.com", "0", msr, false) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + + go func() { + time.Sleep(100 * time.Millisecond) + listener.Close() + }() + + err = srv.Serve(listener) + assert.True(t, errors.Is(err, net.ErrClosed)) +} + +func TestHTTPServer_Serve_AcceptError(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPServer("example.com", "0", msr, false) + + ml := new(mockListener) + ml.On("Accept").Return(nil, errors.New("accept error")).Once() + ml.On("Accept").Return(nil, net.ErrClosed).Once() + + err := srv.Serve(ml) + assert.True(t, errors.Is(err, net.ErrClosed)) + ml.AssertExpectations(t) +} + +func TestHTTPServer_Serve_Success(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPServer("example.com", "0", msr, false) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + port := listener.Addr().(*net.TCPAddr).Port + + go func() { + _ = srv.Serve(listener) + }() + + conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port)) + assert.NoError(t, err) + + _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) + + time.Sleep(100 * time.Millisecond) + conn.Close() + listener.Close() +} + +type mockListener struct { + mock.Mock +} + +func (m *mockListener) Accept() (net.Conn, error) { + args := m.Called() + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(net.Conn), args.Error(1) +} + +func (m *mockListener) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *mockListener) Addr() net.Addr { + args := m.Called() + return args.Get(0).(net.Addr) +} diff --git a/internal/transport/httphandler.go b/internal/transport/httphandler.go index 8bab4a0..800d2c8 100644 --- a/internal/transport/httphandler.go +++ b/internal/transport/httphandler.go @@ -19,6 +19,8 @@ import ( "golang.org/x/crypto/ssh" ) +var openChannelTimeout = 5 * time.Second + type httpHandler struct { domain string sessionRegistry registry.Registry @@ -52,7 +54,7 @@ func (hh *httpHandler) badRequest(conn net.Conn) error { return nil } -func (hh *httpHandler) handler(conn net.Conn, isTLS bool) { +func (hh *httpHandler) Handler(conn net.Conn, isTLS bool) { defer hh.closeConnection(conn) dstReader := bufio.NewReader(conn) @@ -69,7 +71,7 @@ func (hh *httpHandler) handler(conn net.Conn, isTLS bool) { } if hh.shouldRedirectToTLS(isTLS) { - _ = hh.redirect(conn, http.StatusMovedPermanently, fmt.Sprintf("Location: https://%s.%s/\r\n", slug, hh.domain)) + _ = hh.redirect(conn, http.StatusMovedPermanently, fmt.Sprintf("https://%s.%s/\r\n", slug, hh.domain)) return } @@ -77,7 +79,10 @@ func (hh *httpHandler) handler(conn net.Conn, isTLS bool) { return } - sshSession, err := hh.getSession(slug) + sshSession, err := hh.sessionRegistry.Get(types.SessionKey{ + Id: slug, + Type: types.TunnelTypeHTTP, + }) if err != nil { _ = hh.redirect(conn, http.StatusMovedPermanently, fmt.Sprintf("https://tunnl.live/tunnel-not-found?slug=%s\r\n", slug)) return @@ -102,7 +107,7 @@ func (hh *httpHandler) closeConnection(conn net.Conn) { func (hh *httpHandler) extractSlug(reqhf header.RequestHeader) (string, error) { host := strings.Split(reqhf.Value("Host"), ".") - if len(host) < 1 { + if len(host) <= 1 { return "", errors.New("invalid host") } return host[0], nil @@ -128,21 +133,11 @@ func (hh *httpHandler) handlePingRequest(slug string, conn net.Conn) bool { )) if err != nil { log.Println("Failed to write 200 OK:", err) + return true } return true } -func (hh *httpHandler) getSession(slug string) (registry.Session, error) { - sshSession, err := hh.sessionRegistry.Get(types.SessionKey{ - Id: slug, - Type: types.TunnelTypeHTTP, - }) - if err != nil { - return nil, err - } - return sshSession, nil -} - func (hh *httpHandler) forwardRequest(hw stream.HTTP, initialRequest header.RequestHeader, sshSession registry.Session) { channel, err := hh.openForwardedChannel(hw, sshSession) if err != nil { @@ -180,11 +175,7 @@ func (hh *httpHandler) openForwardedChannel(hw stream.HTTP, sshSession registry. go func() { channel, reqs, err := sshSession.Lifecycle().Connection().OpenChannel("forwarded-tcpip", payload) - select { - case resultChan <- channelResult{channel, reqs, err}: - default: - hh.cleanupUnusedChannel(channel, reqs) - } + resultChan <- channelResult{channel, reqs, err} }() select { @@ -194,7 +185,11 @@ func (hh *httpHandler) openForwardedChannel(hw stream.HTTP, sshSession registry. } go ssh.DiscardRequests(result.reqs) return result.channel, nil - case <-time.After(5 * time.Second): + case <-time.After(openChannelTimeout): + go func() { + result := <-resultChan + hh.cleanupUnusedChannel(result.channel, result.reqs) + }() return nil, errors.New("timeout opening forwarded-tcpip channel") } } diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go new file mode 100644 index 0000000..3159366 --- /dev/null +++ b/internal/transport/httphandler_test.go @@ -0,0 +1,755 @@ +package transport + +import ( + "bytes" + "fmt" + "io" + "net" + "strings" + "sync" + "testing" + "time" + "tunnel_pls/internal/port" + "tunnel_pls/internal/registry" + "tunnel_pls/session/forwarder" + "tunnel_pls/session/interaction" + "tunnel_pls/session/lifecycle" + "tunnel_pls/session/slug" + "tunnel_pls/types" + + "golang.org/x/crypto/ssh" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +type MockSessionRegistry struct { + mock.Mock +} + +func (m *MockSessionRegistry) Get(key registry.Key) (registry.Session, error) { + args := m.Called(key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *MockSessionRegistry) GetWithUser(user string, key registry.Key) (registry.Session, error) { + args := m.Called(user, key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *MockSessionRegistry) Update(user string, oldKey, newKey registry.Key) error { + args := m.Called(user, oldKey, newKey) + return args.Error(0) +} + +func (m *MockSessionRegistry) Register(key registry.Key, session registry.Session) bool { + args := m.Called(key, session) + return args.Bool(0) +} + +func (m *MockSessionRegistry) Remove(key registry.Key) { + m.Called(key) +} + +func (m *MockSessionRegistry) GetAllSessionFromUser(user string) []registry.Session { + args := m.Called(user) + return args.Get(0).([]registry.Session) +} + +func (m *MockSessionRegistry) Slug() slug.Slug { + args := m.Called() + return args.Get(0).(slug.Slug) +} + +type MockSession struct { + mock.Mock +} + +func (m *MockSession) Lifecycle() lifecycle.Lifecycle { + args := m.Called() + return args.Get(0).(lifecycle.Lifecycle) +} + +func (m *MockSession) Interaction() interaction.Interaction { + args := m.Called() + return args.Get(0).(interaction.Interaction) +} + +func (m *MockSession) Forwarder() forwarder.Forwarder { + args := m.Called() + return args.Get(0).(forwarder.Forwarder) +} + +func (m *MockSession) Slug() slug.Slug { + args := m.Called() + return args.Get(0).(slug.Slug) +} + +func (m *MockSession) Detail() *types.Detail { + args := m.Called() + return args.Get(0).(*types.Detail) +} + +type MockLifecycle struct { + mock.Mock +} + +func (m *MockLifecycle) Connection() ssh.Conn { + args := m.Called() + return args.Get(0).(ssh.Conn) +} + +func (m *MockLifecycle) PortRegistry() port.Port { + args := m.Called() + return args.Get(0).(port.Port) +} + +func (m *MockLifecycle) User() string { + args := m.Called() + return args.String(0) +} + +func (m *MockLifecycle) SetChannel(channel ssh.Channel) { + m.Called(channel) +} + +func (m *MockLifecycle) SetStatus(status types.SessionStatus) { + m.Called(status) +} + +func (m *MockLifecycle) IsActive() bool { + args := m.Called() + return args.Bool(0) +} + +func (m *MockLifecycle) StartedAt() time.Time { + args := m.Called() + return args.Get(0).(time.Time) +} + +func (m *MockLifecycle) Close() error { + args := m.Called() + return args.Error(0) +} + +type MockSSHConn struct { + ssh.Conn + mock.Mock +} + +func (m *MockSSHConn) OpenChannel(name string, data []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(name, data) + if args.Get(0) == nil { + return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) + } + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +type MockSSHChannel struct { + ssh.Channel + mock.Mock +} + +func (m *MockSSHChannel) Write(data []byte) (int, error) { + args := m.Called(data) + return args.Int(0), args.Error(1) +} + +func (m *MockSSHChannel) Close() error { + args := m.Called() + return args.Error(0) +} + +type MockForwarder struct { + mock.Mock +} + +func (m *MockForwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { + args := m.Called(origin) + return args.Get(0).([]byte) +} + +func (m *MockForwarder) WriteBadGatewayResponse(dst io.Writer) { + m.Called(dst) +} + +func (m *MockForwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { + m.Called(dst, src) +} + +func (m *MockForwarder) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockForwarder) TunnelType() types.TunnelType { + args := m.Called() + return args.Get(0).(types.TunnelType) +} + +func (m *MockForwarder) ForwardedPort() uint16 { + args := m.Called() + return uint16(args.Int(0)) +} + +func (m *MockForwarder) SetType(tunnelType types.TunnelType) { + m.Called(tunnelType) +} + +func (m *MockForwarder) SetForwardedPort(port uint16) { + m.Called(port) +} + +func (m *MockForwarder) SetListener(listener net.Listener) { + m.Called(listener) +} + +func (m *MockForwarder) Listener() net.Listener { + args := m.Called() + return args.Get(0).(net.Listener) +} + +func (m *MockForwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(payload) + if args.Get(0) == nil { + return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) + } + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +type MockConn struct { + net.Conn + mock.Mock + ReadBuffer *bytes.Buffer +} + +func (m *MockConn) Read(b []byte) (n int, err error) { + if m.ReadBuffer != nil { + return m.ReadBuffer.Read(b) + } + args := m.Called(b) + return args.Int(0), args.Error(1) +} + +func (m *MockConn) Write(b []byte) (n int, err error) { + args := m.Called(b) + return args.Int(0), args.Error(1) +} + +func (m *MockConn) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockConn) RemoteAddr() net.Addr { + args := m.Called() + return args.Get(0).(net.Addr) +} + +type wrappedConn struct { + net.Conn + remoteAddr net.Addr +} + +func (c *wrappedConn) RemoteAddr() net.Addr { + return c.remoteAddr +} + +func TestNewHTTPHandler(t *testing.T) { + msr := new(MockSessionRegistry) + hh := newHTTPHandler("domain", msr, true) + assert.NotNil(t, hh) + assert.Equal(t, "domain", hh.domain) + assert.Equal(t, msr, hh.sessionRegistry) + assert.True(t, hh.redirectTLS) +} + +func TestHandler(t *testing.T) { + tests := []struct { + name string + isTLS bool + redirectTLS bool + request []byte + expected []byte + setupMocks func(*MockSessionRegistry) + setupConn func() (net.Conn, net.Conn) + expectError bool + }{ + { + name: "bad request - invalid host", + isTLS: false, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: invalid\r\n\r\n"), + expected: []byte("HTTP/1.1 400 Bad Request\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "bad request - missing host", + isTLS: false, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\n\r\n"), + expected: []byte("HTTP/1.1 400 Bad Request\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "isTLS true and redirectTLS true - no redirect", + isTLS: true, + redirectTLS: true, + request: []byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nConnection: close\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Methods: GET, HEAD, OPTIONS\r\nAccess-Control-Allow-Headers: *\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "redirect to TLS", + isTLS: false, + redirectTLS: true, + request: []byte("GET / HTTP/1.1\r\nHost: example.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 301 Moved Permanently\r\nLocation: https://example.domain/\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "handle ping request", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 200 OK\r\nContent-Length: 0\r\nConnection: close\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Methods: GET, HEAD, OPTIONS\r\nAccess-Control-Allow-Headers: *\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "session not found", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 301 Moved Permanently\r\nLocation: https://tunnl.live/tunnel-not-found?slug=test\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + msr.On("Get", types.SessionKey{ + Id: "test", + Type: types.TunnelTypeHTTP, + }).Return((registry.Session)(nil), fmt.Errorf("session not found")) + }, + }, + { + name: "bad request - invalid http", + isTLS: false, + redirectTLS: false, + request: []byte("INVALID\r\n\r\n"), + expected: []byte(""), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "forwarding - open channel fails", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 502 Bad Gateway\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + + msr.On("Get", types.SessionKey{ + Id: "test", + Type: types.TunnelTypeHTTP, + }).Return(mockSession, nil) + + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), fmt.Errorf("open channel failed")) + mockForwarder.On("WriteBadGatewayResponse", mock.Anything).Run(func(args mock.Arguments) { + w := args.Get(0).(io.Writer) + _, _ = w.Write([]byte("HTTP/1.1 502 Bad Gateway\r\n\r\n")) + }) + }, + }, + { + name: "forwarding - send initial request fails", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte(""), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + mockSSHChannel := new(MockSSHChannel) + + msr.On("Get", types.SessionKey{ + Id: "test", + Type: types.TunnelTypeHTTP, + }).Return(mockSession, nil) + + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + + mockSSHChannel.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mockSSHChannel.On("Close").Return(nil) + + go func() { + for range reqCh { + } + }() + }, + }, + { + name: "forwarding - success", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 200 OK\r\nContent-Length: 5\r\nServer: Tunnel Please\r\n\r\nhello"), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + mockSSHChannel := new(MockSSHChannel) + + msr.On("Get", types.SessionKey{ + Id: "test", + Type: types.TunnelTypeHTTP, + }).Return(mockSession, nil) + + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + + mockSSHChannel.On("Write", mock.Anything).Return(0, nil) + mockSSHChannel.On("Close").Return(nil) + + mockForwarder.On("HandleConnection", mock.Anything, mockSSHChannel).Run(func(args mock.Arguments) { + w := args.Get(0).(io.ReadWriter) + _, _ = w.Write([]byte("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nhello")) + }) + + go func() { + for range reqCh { + } + }() + }, + }, + { + name: "redirect - write failure", + isTLS: false, + redirectTLS: true, + request: []byte("GET / HTTP/1.1\r\nHost: example.domain\r\n\r\n"), + expected: []byte(""), + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: example.domain\r\n\r\n")) + mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mc.On("Close").Return(nil) + return mc, nil + }, + }, + { + name: "bad request - write failure", + isTLS: false, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\n\r\n"), + expected: []byte(""), + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\n\r\n")) + mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mc.On("Close").Return(nil) + return mc, nil + }, + }, + { + name: "handle ping request - write failure", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n"), + expected: []byte(""), + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n")) + mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mc.On("Close").Return(nil) + return mc, nil + }, + }, + { + name: "close connection - error", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n"), + expected: []byte(""), + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n")) + mc.On("Write", mock.Anything).Return(182, nil) + mc.On("Close").Return(fmt.Errorf("close error")) + return mc, nil + }, + }, + { + name: "forwarding - stream close error", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte(""), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + mockSSHChannel := new(MockSSHChannel) + + msr.On("Get", mock.Anything).Return(mockSession, nil) + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + + mockSSHChannel.On("Write", mock.Anything).Return(0, nil) + mockSSHChannel.On("Close").Return(nil) + + mockForwarder.On("HandleConnection", mock.Anything, mockSSHChannel).Return() + }, + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n")) + mc.On("Close").Return(fmt.Errorf("stream close error")).Times(2) + addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:12345") + mc.On("RemoteAddr").Return(addr) + return mc, nil + }, + }, + { + name: "forwarding - middleware failure", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte(""), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + msr.On("Get", mock.MatchedBy(func(k types.SessionKey) bool { + return k.Id == "test" + })).Return(mockSession, nil) + mockSession.On("Forwarder").Return(mockForwarder) + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + + mockLifecycle := new(MockLifecycle) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockSSHConn := new(MockSSHConn) + mockLifecycle.On("Connection").Return(mockSSHConn) + mockSSHChannel := new(MockSSHChannel) + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockSSHChannel.On("Close").Return(nil) + }, + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n")) + mc.On("Close").Return(nil).Times(2) + mc.On("RemoteAddr").Return(&net.IPAddr{IP: net.ParseIP("127.0.0.1")}) + return mc, nil + }, + }, + { + name: "forwarding - channel close error", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 200 OK\r\nContent-Length: 5\r\nServer: Tunnel Please\r\n\r\nhello"), + setupMocks: func(msr *MockSessionRegistry) { + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + mockSSHChannel := new(MockSSHChannel) + + msr.On("Get", mock.Anything).Return(mockSession, nil) + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + + mockSSHChannel.On("Write", mock.Anything).Return(0, nil) + mockSSHChannel.On("Close").Return(fmt.Errorf("close error")) + + mockForwarder.On("HandleConnection", mock.Anything, mockSSHChannel).Run(func(args mock.Arguments) { + w := args.Get(0).(io.ReadWriter) + _, _ = w.Write([]byte("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nhello")) + }) + }, + }, + { + name: "forwarding - open channel timeout", + isTLS: true, + redirectTLS: false, + request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), + expected: []byte("HTTP/1.1 502 Bad Gateway\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + oldTimeout := openChannelTimeout + openChannelTimeout = 10 * time.Millisecond + t.Cleanup(func() { + openChannelTimeout = oldTimeout + time.Sleep(100 * time.Millisecond) + }) + + mockSession := new(MockSession) + mockForwarder := new(MockForwarder) + mockLifecycle := new(MockLifecycle) + mockSSHConn := new(MockSSHConn) + mockSSHChannel := new(MockSSHChannel) + + msr.On("Get", mock.Anything).Return(mockSession, nil) + mockSession.On("Forwarder").Return(mockForwarder) + mockSession.On("Lifecycle").Return(mockLifecycle) + mockLifecycle.On("Connection").Return(mockSSHConn) + + mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + mockForwarder.On("WriteBadGatewayResponse", mock.Anything).Run(func(args mock.Arguments) { + w := args.Get(0).(io.Writer) + _, _ = w.Write([]byte("HTTP/1.1 502 Bad Gateway\r\n\r\n")) + }) + + reqCh := make(chan *ssh.Request) + mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Run(func(args mock.Arguments) { + time.Sleep(50 * time.Millisecond) + }).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + + mockSSHChannel.On("Close").Return(fmt.Errorf("cleanup close error")) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockSessionRegistry := new(MockSessionRegistry) + hh := &httpHandler{ + domain: "domain", + sessionRegistry: mockSessionRegistry, + redirectTLS: tt.redirectTLS, + } + + if tt.setupMocks != nil { + tt.setupMocks(mockSessionRegistry) + } + + var serverConn, clientConn net.Conn + if tt.setupConn != nil { + serverConn, clientConn = tt.setupConn() + } else { + serverConn, clientConn = net.Pipe() + } + + if clientConn != nil { + defer clientConn.Close() + } + + remoteAddr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:12345") + var wrappedServerConn net.Conn + if _, ok := serverConn.(*MockConn); ok { + wrappedServerConn = serverConn + } else { + wrappedServerConn = &wrappedConn{Conn: serverConn, remoteAddr: remoteAddr} + } + + responseChan := make(chan []byte, 1) + doneChan := make(chan struct{}) + + if clientConn != nil { + go func() { + defer close(doneChan) + var res []byte + for { + buf := make([]byte, 4096) + n, err := clientConn.Read(buf) + if err != nil { + if err != io.EOF { + t.Logf("Error reading response: %v", err) + } + break + } + res = append(res, buf[:n]...) + if len(tt.expected) > 0 && len(res) >= len(tt.expected) { + break + } + } + responseChan <- res + }() + + go func() { + _, err := clientConn.Write(tt.request) + if err != nil { + t.Logf("Error writing request: %v", err) + } + }() + } else { + close(responseChan) + close(doneChan) + } + + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + hh.Handler(wrappedServerConn, tt.isTLS) + }() + + select { + case response := <-responseChan: + if tt.name == "forwarding - success" || tt.name == "forwarding - channel close error" { + resStr := string(response) + assert.True(t, strings.HasPrefix(resStr, "HTTP/1.1 200 OK\r\n")) + assert.Contains(t, resStr, "Content-Length: 5\r\n") + assert.Contains(t, resStr, "Server: Tunnel Please\r\n") + assert.True(t, strings.HasSuffix(resStr, "\r\n\r\nhello")) + } else { + assert.Equal(t, string(tt.expected), string(response)) + } + case <-time.After(2 * time.Second): + if clientConn != nil { + t.Fatal("Test timeout - no response received") + } + } + + wg.Wait() + if clientConn != nil { + <-doneChan + } + + mockSessionRegistry.AssertExpectations(t) + if mc, ok := serverConn.(*MockConn); ok { + mc.AssertExpectations(t) + } + }) + } +} diff --git a/internal/transport/https.go b/internal/transport/https.go index 88ffe27..10be94f 100644 --- a/internal/transport/https.go +++ b/internal/transport/https.go @@ -40,6 +40,6 @@ func (ht *https) Serve(listener net.Listener) error { continue } - go ht.httpHandler.handler(conn, true) + go ht.httpHandler.Handler(conn, true) } } diff --git a/internal/transport/https_test.go b/internal/transport/https_test.go new file mode 100644 index 0000000..e956430 --- /dev/null +++ b/internal/transport/https_test.go @@ -0,0 +1,100 @@ +package transport + +import ( + "crypto/tls" + "errors" + "fmt" + "net" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestNewHTTPSServer(t *testing.T) { + msr := new(MockSessionRegistry) + domain := "example.com" + port := "443" + redirectTLS := false + tlsConfig := &tls.Config{} + + srv := NewHTTPSServer(domain, port, msr, redirectTLS, tlsConfig) + assert.NotNil(t, srv) + + httpsSrv, ok := srv.(*https) + assert.True(t, ok) + assert.Equal(t, port, httpsSrv.port) + assert.Equal(t, domain, httpsSrv.domain) + assert.Equal(t, tlsConfig, httpsSrv.tlsConfig) + assert.Equal(t, msr, httpsSrv.httpHandler.sessionRegistry) +} + +func TestHTTPSServer_Listen(t *testing.T) { + msr := new(MockSessionRegistry) + + tlsConfig := &tls.Config{ + GetCertificate: func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { + return nil, nil + }, + } + srv := NewHTTPSServer("example.com", "0", msr, false, tlsConfig) + + listener, err := srv.Listen() + if err != nil { + t.Skip("Skipping tls.Listen test as it requires valid certificates/setup:", err) + return + } + assert.NotNil(t, listener) + listener.Close() +} + +func TestHTTPSServer_Serve(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + + go func() { + time.Sleep(100 * time.Millisecond) + listener.Close() + }() + + err = srv.Serve(listener) + assert.True(t, errors.Is(err, net.ErrClosed)) +} + +func TestHTTPSServer_Serve_AcceptError(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + + ml := new(mockListener) + ml.On("Accept").Return(nil, errors.New("accept error")).Once() + ml.On("Accept").Return(nil, net.ErrClosed).Once() + + err := srv.Serve(ml) + assert.True(t, errors.Is(err, net.ErrClosed)) + ml.AssertExpectations(t) +} + +func TestHTTPSServer_Serve_Success(t *testing.T) { + msr := new(MockSessionRegistry) + srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + port := listener.Addr().(*net.TCPAddr).Port + + go func() { + _ = srv.Serve(listener) + }() + + conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port)) + assert.NoError(t, err) + + _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) + + time.Sleep(100 * time.Millisecond) + conn.Close() + listener.Close() +} diff --git a/internal/transport/tcp.go b/internal/transport/tcp.go index 99670d2..91ab0b0 100644 --- a/internal/transport/tcp.go +++ b/internal/transport/tcp.go @@ -12,16 +12,16 @@ import ( type tcp struct { port uint16 - forwarder forwarder + forwarder Forwarder } -type forwarder interface { +type Forwarder interface { CreateForwardedTCPIPPayload(origin net.Addr) []byte OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) HandleConnection(dst io.ReadWriter, src ssh.Channel) } -func NewTCPServer(port uint16, forwarder forwarder) Transport { +func NewTCPServer(port uint16, forwarder Forwarder) Transport { return &tcp{ port: port, forwarder: forwarder, diff --git a/internal/transport/tcp_test.go b/internal/transport/tcp_test.go new file mode 100644 index 0000000..d7c3f8b --- /dev/null +++ b/internal/transport/tcp_test.go @@ -0,0 +1,146 @@ +package transport + +import ( + "errors" + "fmt" + "net" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "golang.org/x/crypto/ssh" +) + +func TestNewTCPServer(t *testing.T) { + mf := new(MockForwarder) + port := uint16(9000) + + srv := NewTCPServer(port, mf) + assert.NotNil(t, srv) + + tcpSrv, ok := srv.(*tcp) + assert.True(t, ok) + assert.Equal(t, port, tcpSrv.port) + assert.Equal(t, mf, tcpSrv.forwarder) +} + +func TestTCPServer_Listen(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf) + + listener, err := srv.Listen() + assert.NoError(t, err) + assert.NotNil(t, listener) + listener.Close() +} + +func TestTCPServer_Serve(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + + go func() { + time.Sleep(100 * time.Millisecond) + listener.Close() + }() + + err = srv.Serve(listener) + assert.Nil(t, err) +} + +func TestTCPServer_Serve_AcceptError(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf) + + ml := new(mockListener) + ml.On("Accept").Return(nil, errors.New("accept error")).Once() + ml.On("Accept").Return(nil, net.ErrClosed).Once() + + err := srv.Serve(ml) + assert.Nil(t, err) + ml.AssertExpectations(t) +} + +func TestTCPServer_Serve_Success(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + assert.NoError(t, err) + port := listener.Addr().(*net.TCPAddr).Port + + payload := []byte("test-payload") + mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) + reqs := make(chan *ssh.Request) + mf.On("OpenForwardedChannel", payload).Return(new(MockSSHChannel), (<-chan *ssh.Request)(reqs), nil) + mf.On("HandleConnection", mock.Anything, mock.Anything).Return() + + go func() { + _ = srv.Serve(listener) + }() + + conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port)) + assert.NoError(t, err) + + time.Sleep(100 * time.Millisecond) + conn.Close() + listener.Close() + + mf.AssertExpectations(t) +} + +func TestTCPServer_handleTcp_Success(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf).(*tcp) + + serverConn, clientConn := net.Pipe() + defer clientConn.Close() + + payload := []byte("test-payload") + mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) + + reqs := make(chan *ssh.Request) + mockChannel := new(MockSSHChannel) + mf.On("OpenForwardedChannel", payload).Return(mockChannel, (<-chan *ssh.Request)(reqs), nil) + + mf.On("HandleConnection", serverConn, mockChannel).Return() + + srv.handleTcp(serverConn) + + mf.AssertExpectations(t) +} + +func TestTCPServer_handleTcp_CloseError(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf).(*tcp) + + mc := new(MockConn) + mc.On("Close").Return(errors.New("close error")) + mc.On("RemoteAddr").Return(&net.TCPAddr{}) + + payload := []byte("test-payload") + mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) + mf.On("OpenForwardedChannel", payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + + srv.handleTcp(mc) + mc.AssertExpectations(t) +} + +func TestTCPServer_handleTcp_OpenChannelError(t *testing.T) { + mf := new(MockForwarder) + srv := NewTCPServer(0, mf).(*tcp) + + serverConn, clientConn := net.Pipe() + defer clientConn.Close() + + payload := []byte("test-payload") + mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) + mf.On("OpenForwardedChannel", payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + + srv.handleTcp(serverConn) + + mf.AssertExpectations(t) +} diff --git a/internal/transport/tls_test.go b/internal/transport/tls_test.go new file mode 100644 index 0000000..17e7214 --- /dev/null +++ b/internal/transport/tls_test.go @@ -0,0 +1,178 @@ +package transport + +import ( + "crypto/rand" + "crypto/rsa" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "math/big" + "os" + "testing" + "time" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +type MockConfig struct { + mock.Mock +} + +func (m *MockConfig) Domain() string { return m.Called().String(0) } +func (m *MockConfig) SSHPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *MockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *MockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *MockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) PprofPort() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } + +func TestValidateCertDomains_NotFound(t *testing.T) { + result := ValidateCertDomains("nonexistent.pem", "example.com") + assert.False(t, result) +} + +func TestValidateCertDomains_InvalidPEM(t *testing.T) { + tmpFile, err := os.CreateTemp("", "invalid*.pem") + assert.NoError(t, err) + defer os.Remove(tmpFile.Name()) + + _, _ = tmpFile.WriteString("not a pem") + tmpFile.Close() + + result := ValidateCertDomains(tmpFile.Name(), "example.com") + assert.False(t, result) +} + +func TestTLSManager_getTLSConfig(t *testing.T) { + tm := &tlsManager{ + useCertMagic: false, + } + cfg := tm.getTLSConfig() + assert.NotNil(t, cfg) + assert.Equal(t, uint16(tls.VersionTLS13), cfg.MinVersion) +} + +func TestTLSManager_getCertificate_Magic(t *testing.T) { + tm := &tlsManager{ + useCertMagic: true, + } + hello := &tls.ClientHelloInfo{} + assert.Panics(t, func() { + _, _ = tm.getCertificate(hello) + }) +} + +func TestTLSManager_userCertsExistAndValid(t *testing.T) { + tm := &tlsManager{ + certPath: "nonexistent.pem", + keyPath: "nonexistent.key", + } + assert.False(t, tm.userCertsExistAndValid()) + + keyFile, _ := os.CreateTemp("", "key*.pem") + defer os.Remove(keyFile.Name()) + tm.keyPath = keyFile.Name() + assert.False(t, tm.userCertsExistAndValid()) +} + +func createTestCert(t *testing.T, domain string, wildcard bool, expired bool, soon bool) (string, string) { + priv, _ := rsa.GenerateKey(rand.Reader, 2048) + + notAfter := time.Now().Add(365 * 24 * time.Hour) + if expired { + notAfter = time.Now().Add(-24 * time.Hour) + } else if soon { + notAfter = time.Now().Add(15 * 24 * time.Hour) + } + + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + CommonName: domain, + }, + NotBefore: time.Now().Add(-24 * time.Hour), + NotAfter: notAfter, + DNSNames: []string{domain}, + } + + if wildcard { + template.DNSNames = append(template.DNSNames, "*."+domain) + } + + derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv) + assert.NoError(t, err) + + certOut, _ := os.CreateTemp("", "cert*.pem") + _ = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) + certOut.Close() + + keyOut, _ := os.CreateTemp("", "key*.pem") + _ = pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) + keyOut.Close() + + return certOut.Name(), keyOut.Name() +} + +func TestValidateCertDomains_Success(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + result := ValidateCertDomains(certPath, "example.com") + assert.True(t, result) +} + +func TestValidateCertDomains_Expired(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, true, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + result := ValidateCertDomains(certPath, "example.com") + assert.False(t, result) +} + +func TestValidateCertDomains_ExpiringSoon(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, true) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + result := ValidateCertDomains(certPath, "example.com") + assert.False(t, result) +} + +func TestValidateCertDomains_MissingWildcard(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", false, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + result := ValidateCertDomains(certPath, "example.com") + assert.False(t, result) +} + +func TestTLSManager_loadUserCerts_Success(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + tm := &tlsManager{ + certPath: certPath, + keyPath: keyPath, + } + err := tm.loadUserCerts() + assert.NoError(t, err) + assert.NotNil(t, tm.userCert) +} diff --git a/internal/transport/transport.go b/internal/transport/transport.go index ca27061..31219fd 100644 --- a/internal/transport/transport.go +++ b/internal/transport/transport.go @@ -8,3 +8,7 @@ type Transport interface { Listen() (net.Listener, error) Serve(listener net.Listener) error } + +type HTTP interface { + Handler(conn net.Conn, isTLS bool) +} diff --git a/internal/transport/transport_test.go b/internal/transport/transport_test.go new file mode 100644 index 0000000..016445d --- /dev/null +++ b/internal/transport/transport_test.go @@ -0,0 +1,15 @@ +package transport + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestTransportInterface(t *testing.T) { + var _ Transport = (*httpServer)(nil) + var _ Transport = (*https)(nil) + var _ Transport = (*tcp)(nil) + + assert.True(t, true) +} From a598a10e94be2c65935cd60ed0febe131c5205b8 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 19:46:47 +0700 Subject: [PATCH 07/47] update: exclude local test coverage --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index dc40a4f..6c907a9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ id_rsa* .env tmp certs -app \ No newline at end of file +app +coverage \ No newline at end of file From 3fd179d32bce8c87b69c817d1ccf6c8169b1e592 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 19:47:31 +0700 Subject: [PATCH 08/47] test(header): add unit tests for header behavior --- internal/http/header/header_test.go | 327 ++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 internal/http/header/header_test.go diff --git a/internal/http/header/header_test.go b/internal/http/header/header_test.go new file mode 100644 index 0000000..10fe1b0 --- /dev/null +++ b/internal/http/header/header_test.go @@ -0,0 +1,327 @@ +package header + +import ( + "bufio" + "bytes" + "io" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewRequestFromBytes(t *testing.T) { + tests := []struct { + name string + data []byte + expectErr bool + errContains string + expectMethod string + expectPath string + expectVersion string + expectHeaders map[string]string + }{ + { + name: "success", + data: []byte("GET /path HTTP/1.1\r\nHost: example.com\r\nX-Custom: value\r\n\r\n"), + expectErr: false, + expectMethod: "GET", + expectPath: "/path", + expectVersion: "HTTP/1.1", + expectHeaders: map[string]string{ + "Host": "example.com", + "X-Custom": "value", + }, + }, + { + name: "no CRLF in start line", + data: []byte("GET /path HTTP/1.1"), + expectErr: true, + errContains: "no CRLF found in start line", + }, + { + name: "invalid start line - missing method", + data: []byte("INVALID\r\n\r\n"), + expectErr: true, + errContains: "invalid start line: missing method", + }, + { + name: "invalid start line - missing version", + data: []byte("GET /path\r\n\r\n"), + expectErr: true, + errContains: "invalid start line: missing version", + }, + { + name: "invalid start line - multiple spaces", + data: []byte("GET /path HTTP/1.1\r\n\r\n"), + expectErr: false, + expectMethod: "GET", + expectPath: "", + expectVersion: "/path HTTP/1.1", + expectHeaders: map[string]string{}, + }, + { + name: "start line with trailing space", + data: []byte("GET / HTTP/1.1 \r\n\r\n"), + expectErr: false, + expectMethod: "GET", + expectPath: "/", + expectVersion: "HTTP/1.1 ", + expectHeaders: map[string]string{}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req, err := NewRequest(tt.data) + if tt.expectErr { + assert.Error(t, err) + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + assert.Nil(t, req) + } else { + assert.NoError(t, err) + assert.NotNil(t, req) + assert.Equal(t, tt.expectMethod, req.Method()) + assert.Equal(t, tt.expectPath, req.Path()) + assert.Equal(t, tt.expectVersion, req.Version()) + for k, v := range tt.expectHeaders { + assert.Equal(t, v, req.Value(k)) + } + } + }) + } +} + +func TestNewRequestFromReader(t *testing.T) { + tests := []struct { + name string + data []byte + expectErr bool + errContains string + expectEOF bool + expectMethod string + expectPath string + expectVersion string + expectHeaders map[string]string + }{ + { + name: "success", + data: []byte("POST /api HTTP/1.1\r\nContent-Type: application/json\r\n\r\n"), + expectErr: false, + expectMethod: "POST", + expectPath: "/api", + expectVersion: "HTTP/1.1", + expectHeaders: map[string]string{ + "Content-Type": "application/json", + }, + }, + { + name: "read error on start line", + data: []byte{}, + expectErr: true, + expectEOF: true, + }, + { + name: "invalid start line", + data: []byte("INVALID\n\n"), + expectErr: true, + errContains: "invalid start line", + }, + { + name: "read error on headers", + data: []byte("GET / HTTP/1.1\nHost: example.com"), + expectErr: true, + expectEOF: true, + }, + { + name: "multiple colons in header", + data: []byte("GET / HTTP/1.1\r\nX-Custom: value:with:colons\r\n\r\n"), + expectErr: false, + expectMethod: "GET", + expectPath: "/", + expectVersion: "HTTP/1.1", + expectHeaders: map[string]string{ + "X-Custom": "value:with:colons", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + br := bufio.NewReader(bytes.NewReader(tt.data)) + req, err := NewRequest(br) + if tt.expectErr { + assert.Error(t, err) + if tt.expectEOF { + assert.Equal(t, io.EOF, err) + } + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + assert.Nil(t, req) + } else { + assert.NoError(t, err) + assert.NotNil(t, req) + assert.Equal(t, tt.expectMethod, req.Method()) + assert.Equal(t, tt.expectPath, req.Path()) + assert.Equal(t, tt.expectVersion, req.Version()) + for k, v := range tt.expectHeaders { + assert.Equal(t, v, req.Value(k)) + } + } + }) + } +} + +func TestNewRequestUnsupportedType(t *testing.T) { + req, err := NewRequest(123) + assert.Error(t, err) + assert.Contains(t, err.Error(), "unsupported type: int") + assert.Nil(t, req) +} + +func TestRequestHeaderMethods(t *testing.T) { + data := []byte("GET / HTTP/1.1\r\nHost: original\r\n\r\n") + req, _ := NewRequest(data) + + req.Set("Host", "updated") + req.Set("X-New", "new-value") + assert.Equal(t, "updated", req.Value("Host")) + assert.Equal(t, "new-value", req.Value("X-New")) + + assert.Equal(t, "", req.Value("Non-Existent")) + + req.Remove("X-New") + assert.Equal(t, "", req.Value("X-New")) + + final := req.Finalize() + assert.Contains(t, string(final), "GET / HTTP/1.1\r\n") + assert.Contains(t, string(final), "Host: updated\r\n") + assert.True(t, bytes.HasSuffix(final, []byte("\r\n\r\n"))) +} + +func TestNewResponse(t *testing.T) { + tests := []struct { + name string + data []byte + expectErr bool + errContains string + expectHeaders map[string]string + }{ + { + name: "success", + data: []byte("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"), + expectErr: false, + expectHeaders: map[string]string{ + "Content-Length": "0", + }, + }, + { + name: "invalid response - no CRLF", + data: []byte("HTTP/1.1 200 OK"), + expectErr: true, + errContains: "no CRLF found in start line", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + resp, err := NewResponse(tt.data) + if tt.expectErr { + assert.Error(t, err) + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + assert.Nil(t, resp) + } else { + assert.NoError(t, err) + assert.NotNil(t, resp) + for k, v := range tt.expectHeaders { + assert.Equal(t, v, resp.Value(k)) + } + } + }) + } +} + +func TestResponseHeaderMethods(t *testing.T) { + data := []byte("HTTP/1.1 200 OK\r\nServer: old\r\n\r\n") + resp, _ := NewResponse(data) + + resp.Set("Server", "new") + resp.Set("X-Res", "val") + assert.Equal(t, "new", resp.Value("Server")) + assert.Equal(t, "val", resp.Value("X-Res")) + + resp.Remove("X-Res") + assert.Equal(t, "", resp.Value("X-Res")) + + final := resp.Finalize() + assert.Contains(t, string(final), "HTTP/1.1 200 OK\r\n") + assert.Contains(t, string(final), "Server: new\r\n") + assert.True(t, bytes.HasSuffix(final, []byte("\r\n\r\n"))) +} + +func TestSetRemainingHeaders(t *testing.T) { + tests := []struct { + name string + data []byte + initialHeaders map[string]string + expectHeaders map[string]string + }{ + { + name: "various header formats", + data: []byte("K1: V1\r\nK2:V2\r\n K3 : V3 \r\nNoColon\r\n\r\n"), + expectHeaders: map[string]string{ + "K1": "V1", + "K2": "V2", + "K3": "V3", + }, + }, + { + name: "no trailing CRLF", + data: []byte("K1: V1"), + expectHeaders: map[string]string{ + "K1": "V1", + }, + }, + { + name: "empty lines", + data: []byte("\r\nK1: V1"), + expectHeaders: map[string]string{}, + }, + { + name: "headers with only colon", + data: []byte(": value\r\nkey:\r\n"), + expectHeaders: map[string]string{ + "": "value", + "key": "", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req := &requestHeader{headers: make(map[string]string)} + if tt.initialHeaders != nil { + req.headers = tt.initialHeaders + } + setRemainingHeaders(tt.data, req) + assert.Equal(t, len(tt.expectHeaders), len(req.headers)) + for k, v := range tt.expectHeaders { + assert.Equal(t, v, req.headers[k]) + } + }) + } +} + +func TestParseHeadersFromReaderEdgeCases(t *testing.T) { + t.Run("malformed header line", func(t *testing.T) { + data := []byte("GET / HTTP/1.1\r\nMalformedLine\r\nK1: V1\r\n\r\n") + br := bufio.NewReader(bytes.NewReader(data)) + req, err := parseHeadersFromReader(br) + assert.NoError(t, err) + assert.Equal(t, "V1", req.Value("K1")) + }) +} From 30299967735c68f1cc698376adfec02723d50fd9 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 21:04:05 +0700 Subject: [PATCH 09/47] test(stream): add unit tests for stream behavior - Fix duplicating EOF error when closing SSH connection - Add new SessionStatusCLOSED type --- internal/http/header/header_test.go | 31 +- internal/http/stream/stream.go | 5 +- internal/http/stream/stream_test.go | 579 ++++++++++++++++++++++++++++ internal/random/random_test.go | 41 +- internal/registry/registry_test.go | 175 +++++---- internal/transport/httphandler.go | 6 +- server/server.go | 5 +- session/interaction/interaction.go | 4 +- session/lifecycle/lifecycle.go | 45 ++- types/types.go | 1 + 10 files changed, 775 insertions(+), 117 deletions(-) create mode 100644 internal/http/stream/stream_test.go diff --git a/internal/http/header/header_test.go b/internal/http/header/header_test.go index 10fe1b0..5207b1c 100644 --- a/internal/http/header/header_test.go +++ b/internal/http/header/header_test.go @@ -317,11 +317,28 @@ func TestSetRemainingHeaders(t *testing.T) { } func TestParseHeadersFromReaderEdgeCases(t *testing.T) { - t.Run("malformed header line", func(t *testing.T) { - data := []byte("GET / HTTP/1.1\r\nMalformedLine\r\nK1: V1\r\n\r\n") - br := bufio.NewReader(bytes.NewReader(data)) - req, err := parseHeadersFromReader(br) - assert.NoError(t, err) - assert.Equal(t, "V1", req.Value("K1")) - }) + tests := []struct { + name string + data []byte + expectHeaders map[string]string + }{ + { + name: "malformed header line", + data: []byte("GET / HTTP/1.1\r\nMalformedLine\r\nK1: V1\r\n\r\n"), + expectHeaders: map[string]string{ + "K1": "V1", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + br := bufio.NewReader(bytes.NewReader(tt.data)) + req, err := parseHeadersFromReader(br) + assert.NoError(t, err) + for k, v := range tt.expectHeaders { + assert.Equal(t, v, req.Value(k)) + } + }) + } } diff --git a/internal/http/stream/stream.go b/internal/http/stream/stream.go index 97d2752..dcc09f9 100644 --- a/internal/http/stream/stream.go +++ b/internal/http/stream/stream.go @@ -72,7 +72,10 @@ func (hs *http) ResponseMiddlewares() []middleware.ResponseMiddleware { } func (hs *http) Close() error { - return hs.writer.(io.Closer).Close() + if closer, ok := hs.writer.(io.Closer); ok { + return closer.Close() + } + return nil } func (hs *http) CloseWrite() error { diff --git a/internal/http/stream/stream_test.go b/internal/http/stream/stream_test.go new file mode 100644 index 0000000..65c660b --- /dev/null +++ b/internal/http/stream/stream_test.go @@ -0,0 +1,579 @@ +package stream + +import ( + "bytes" + "io" + "strings" + "testing" + + "tunnel_pls/internal/http/header" + + "github.com/stretchr/testify/assert" +) + +type mockAddr struct { + addr string +} + +func (m *mockAddr) String() string { return m.addr } +func (m *mockAddr) Network() string { return "tcp" } + +type mockRequestMiddleware struct { + err error +} + +func (m *mockRequestMiddleware) HandleRequest(h header.RequestHeader) error { + if m.err == nil { + h.Set("X-Middleware", "true") + } + return m.err +} + +type mockResponseMiddleware struct { + err error +} + +func (m *mockResponseMiddleware) HandleResponse(h header.ResponseHeader, body []byte) error { + if m.err == nil { + h.Set("X-Resp-Middleware", "true") + } + return m.err +} + +type mockReadWriter struct { + bytes.Buffer + closed bool + writeClosed bool +} + +func (m *mockReadWriter) Close() error { + m.closed = true + return nil +} + +func (m *mockReadWriter) CloseWrite() error { + m.writeClosed = true + return nil +} + +func TestHTTPMethods(t *testing.T) { + addr := &mockAddr{addr: "1.2.3.4:1234"} + rw := &mockReadWriter{} + hs := New(rw, rw, addr) + + assert.Equal(t, addr, hs.RemoteAddr()) + + reqMW := &mockRequestMiddleware{} + hs.UseRequestMiddleware(reqMW) + assert.Equal(t, 1, len(hs.RequestMiddlewares())) + assert.Equal(t, reqMW, hs.RequestMiddlewares()[0]) + + respMW := &mockResponseMiddleware{} + hs.UseResponseMiddleware(respMW) + assert.Equal(t, 1, len(hs.ResponseMiddlewares())) + assert.Equal(t, respMW, hs.ResponseMiddlewares()[0]) + + reqH, _ := header.NewRequest([]byte("GET / HTTP/1.1\r\n\r\n")) + hs.SetRequestHeader(reqH) +} + +func TestApplyMiddlewares(t *testing.T) { + addr := &mockAddr{addr: "1.2.3.4:1234"} + + tests := []struct { + name string + setup func(HTTP) + apply func(HTTP, header.RequestHeader, header.ResponseHeader) error + verify func(*testing.T, header.RequestHeader, header.ResponseHeader) + expectErr bool + }{ + { + name: "apply request middleware success", + setup: func(hs HTTP) { + hs.UseRequestMiddleware(&mockRequestMiddleware{}) + }, + apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { + return hs.ApplyRequestMiddlewares(reqH) + }, + verify: func(t *testing.T, reqH header.RequestHeader, respH header.ResponseHeader) { + assert.Equal(t, "true", reqH.Value("X-Middleware")) + }, + }, + { + name: "apply response middleware success", + setup: func(hs HTTP) { + hs.UseResponseMiddleware(&mockResponseMiddleware{}) + }, + apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { + return hs.ApplyResponseMiddlewares(respH, []byte("body")) + }, + verify: func(t *testing.T, reqH header.RequestHeader, respH header.ResponseHeader) { + assert.Equal(t, "true", respH.Value("X-Resp-Middleware")) + }, + }, + { + name: "apply request middleware error", + setup: func(hs HTTP) { + hs.UseRequestMiddleware(&mockRequestMiddleware{err: assert.AnError}) + }, + apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { + return hs.ApplyRequestMiddlewares(reqH) + }, + expectErr: true, + }, + { + name: "apply response middleware error", + setup: func(hs HTTP) { + hs.UseResponseMiddleware(&mockResponseMiddleware{err: assert.AnError}) + }, + apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { + return hs.ApplyResponseMiddlewares(respH, []byte("body")) + }, + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + reqH, _ := header.NewRequest([]byte("GET / HTTP/1.1\r\n\r\n")) + respH, _ := header.NewResponse([]byte("HTTP/1.1 200 OK\r\n\r\n")) + rw := &mockReadWriter{} + hs := New(rw, rw, addr) + tt.setup(hs) + err := tt.apply(hs, reqH, respH) + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + if tt.verify != nil { + tt.verify(t, reqH, respH) + } + } + }) + } +} + +type mockWriterOnly struct { + bytes.Buffer +} + +func TestCloseMethods(t *testing.T) { + addr := &mockAddr{addr: "1.2.3.4:1234"} + + tests := []struct { + name string + writer any + op func(HTTP) error + verify func(*testing.T, any) + }{ + { + name: "Close success", + writer: &mockReadWriter{}, + op: func(hs HTTP) error { return hs.Close() }, + verify: func(t *testing.T, w any) { + assert.True(t, w.(*mockReadWriter).closed) + }, + }, + { + name: "CloseWrite with CloseWrite implementation", + writer: &mockReadWriter{}, + op: func(hs HTTP) error { return hs.CloseWrite() }, + verify: func(t *testing.T, w any) { + assert.True(t, w.(*mockReadWriter).writeClosed) + }, + }, + { + name: "CloseWrite fallback to Close", + writer: &mockReadWriterOnlyCloser{}, + op: func(hs HTTP) error { return hs.CloseWrite() }, + verify: func(t *testing.T, w any) { + assert.True(t, w.(*mockReadWriterOnlyCloser).closed) + }, + }, + { + name: "Close with No Closer", + writer: &mockWriterOnly{}, + op: func(hs HTTP) error { return hs.Close() }, + }, + { + name: "CloseWrite with No CloseWrite and No Closer", + writer: &mockWriterOnly{}, + op: func(hs HTTP) error { return hs.CloseWrite() }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + hs := New(tt.writer.(io.Writer), tt.writer.(io.Reader), addr) + assert.NotPanics(t, func() { + err := tt.op(hs) + assert.NoError(t, err) + }) + if tt.verify != nil { + tt.verify(t, tt.writer) + } + }) + } +} + +type mockReadWriterOnlyCloser struct { + bytes.Buffer + closed bool +} + +func (m *mockReadWriterOnlyCloser) Close() error { + m.closed = true + return nil +} + +func TestSplitHeaderAndBody(t *testing.T) { + tests := []struct { + name string + data []byte + delimiterIdx int + expectHeader []byte + expectBody []byte + }{ + { + name: "standard", + data: []byte("GET / HTTP/1.1\r\nHost: localhost\r\n\r\nBodyContent"), + delimiterIdx: 31, + expectHeader: []byte("GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"), + expectBody: []byte("BodyContent"), + }, + { + name: "empty body", + data: []byte("HTTP/1.1 200 OK\r\n\r\n"), + delimiterIdx: 15, + expectHeader: []byte("HTTP/1.1 200 OK\r\n\r\n"), + expectBody: []byte(""), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + h, b := splitHeaderAndBody(tt.data, tt.delimiterIdx) + assert.Equal(t, tt.expectHeader, h) + assert.Equal(t, tt.expectBody, b) + }) + } +} + +func TestIsHTTPHeader(t *testing.T) { + tests := []struct { + name string + buf []byte + expect bool + }{ + { + name: "valid request", + buf: []byte("GET /path HTTP/1.1\r\nHost: example.com\r\n\r\n"), + expect: true, + }, + { + name: "valid response", + buf: []byte("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n"), + expect: true, + }, + { + name: "invalid start line", + buf: []byte("NOT_HTTP /path\r\nHost: example.com\r\n\r\n"), + expect: false, + }, + { + name: "invalid header line (no colon)", + buf: []byte("GET / HTTP/1.1\r\nInvalidHeaderLine\r\n\r\n"), + expect: false, + }, + { + name: "invalid header line (colon at 0)", + buf: []byte("GET / HTTP/1.1\r\n: value\r\n\r\n"), + expect: false, + }, + { + name: "empty header section", + buf: []byte("GET / HTTP/1.1\r\n\r\n"), + expect: true, + }, + { + name: "multiple headers", + buf: []byte("GET / HTTP/1.1\r\nH1: V1\r\nH2: V2\r\n\r\n"), + expect: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := isHTTPHeader(tt.buf) + assert.Equal(t, tt.expect, result) + }) + } +} + +func TestRead(t *testing.T) { + tests := []struct { + name string + input []byte + readLen int + expectContent string + expectRead int + expectErr bool + middlewareErr error + }{ + { + name: "valid http request", + input: []byte("GET / HTTP/1.1\r\nHost: test\r\n\r\nBody"), + readLen: 100, + expectContent: "Body", + expectRead: 54, + }, + { + name: "non-http data", + input: []byte("Some random data\r\n\r\nMore data"), + readLen: 100, + expectContent: "Some random data\r\n\r\nMore data", + expectRead: 29, + }, + { + name: "no delimiter", + input: []byte("Partial data without delimiter"), + readLen: 100, + expectContent: "Partial data without delimiter", + expectRead: 30, + }, + { + name: "middleware error", + input: []byte("GET / HTTP/1.1\r\nHost: test\r\n\r\n"), + readLen: 100, + middlewareErr: assert.AnError, + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + rw := &mockReadWriter{} + rw.Write(tt.input) + hs := New(rw, rw, &mockAddr{}) + if tt.middlewareErr != nil { + hs.UseRequestMiddleware(&mockRequestMiddleware{err: tt.middlewareErr}) + } else { + hs.UseRequestMiddleware(&mockRequestMiddleware{}) + } + + p := make([]byte, tt.readLen) + n, err := hs.Read(p) + + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, tt.expectRead, n) + if tt.name == "valid http request" { + content := string(p[:n]) + assert.Contains(t, content, "GET / HTTP/1.1\r\n") + assert.Contains(t, content, "Host: test\r\n") + assert.Contains(t, content, "X-Middleware: true\r\n") + assert.True(t, bytes.HasSuffix(p[:n], []byte("\r\n\r\nBody"))) + } else { + assert.Equal(t, tt.expectContent, string(p[:n])) + } + } + }) + } +} + +func TestWrite(t *testing.T) { + tests := []struct { + name string + writes [][]byte + expectWritten string + expectErr bool + middlewareErr error + }{ + { + name: "valid http response in one write", + writes: [][]byte{ + []byte("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nBody"), + }, + expectWritten: "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nX-Resp-Middleware: true\r\n\r\nBody", + }, + { + name: "valid http response in multiple writes", + writes: [][]byte{ + []byte("HTTP/1.1 200 OK\r\n"), + []byte("Content-Length: 4\r\n\r\n"), + []byte("Body"), + }, + expectWritten: "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nX-Resp-Middleware: true\r\n\r\nBody", + }, + { + name: "non-http data", + writes: [][]byte{ + []byte("Random data with delimiter\r\n\r\nFlush"), + }, + expectWritten: "Random data with delimiter\r\n\r\nFlush", + }, + { + name: "bypass buffering", + writes: [][]byte{ + []byte("HTTP/1.1 200 OK\r\n\r\n"), + []byte("HTTP/1.1 200 OK\r\n\r\n"), + }, + expectWritten: "HTTP/1.1 200 OK\r\nX-Resp-Middleware: true\r\n\r\n" + + "HTTP/1.1 200 OK\r\nX-Resp-Middleware: true\r\n\r\n", + }, + { + name: "middleware error", + writes: [][]byte{ + []byte("HTTP/1.1 200 OK\r\n\r\n"), + }, + middlewareErr: assert.AnError, + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + rw := &mockReadWriter{} + hs := New(rw, rw, &mockAddr{}) + if tt.middlewareErr != nil { + hs.UseResponseMiddleware(&mockResponseMiddleware{err: tt.middlewareErr}) + } else { + hs.UseResponseMiddleware(&mockResponseMiddleware{}) + } + + var totalN int + var err error + for _, w := range tt.writes { + var n int + n, err = hs.Write(w) + if err != nil { + break + } + totalN += n + } + + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + if strings.HasPrefix(tt.expectWritten, "HTTP/") { + written := rw.String() + assert.Contains(t, written, "HTTP/1.1 200 OK\r\n") + assert.Contains(t, written, "X-Resp-Middleware: true\r\n") + if strings.Contains(tt.expectWritten, "Content-Length: 4") { + assert.Contains(t, written, "Content-Length: 4\r\n") + } + assert.True(t, strings.HasSuffix(written, "\r\n\r\nBody") || strings.HasSuffix(written, "\r\n\r\n")) + } else { + assert.Equal(t, tt.expectWritten, rw.String()) + } + } + }) + } +} + +func TestWriteErrors(t *testing.T) { + addr := &mockAddr{addr: "1.2.3.4:1234"} + + tests := []struct { + name string + writer any + data []byte + }{ + { + name: "write error in writeHeaderAndBody", + writer: &mockErrorWriteCloser{}, + data: []byte("HTTP/1.1 200 OK\r\n\r\n"), + }, + { + name: "write error in writeHeaderAndBody second write", + writer: &mockFailSecondWriteCloser{}, + data: []byte("HTTP/1.1 200 OK\r\n\r\nBody"), + }, + { + name: "write error in writeRawBuffer", + writer: &mockErrorWriteCloser{}, + data: []byte("Not HTTP\r\n\r\nFlush"), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + hs := New(tt.writer.(io.Writer), tt.writer.(io.Reader), addr) + _, err := hs.Write(tt.data) + assert.Error(t, err) + }) + } +} + +func TestReadEOF(t *testing.T) { + tests := []struct { + name string + reader io.Reader + expectN int + expectErr error + expectContent string + }{ + { + name: "read eof", + reader: &mockEOFReader{}, + expectN: 4, + expectErr: io.EOF, + expectContent: "data", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + hs := New(nil, tt.reader, &mockAddr{}) + p := make([]byte, 100) + n, err := hs.Read(p) + assert.Equal(t, tt.expectN, n) + assert.Equal(t, tt.expectErr, err) + assert.Equal(t, tt.expectContent, string(p[:n])) + }) + } +} + +type mockEOFReader struct { + mockReadWriter +} + +func (m *mockEOFReader) Read(p []byte) (int, error) { + copy(p, "data") + return 4, io.EOF +} + +type mockFailSecondWriteCloser struct { + count int +} + +func (m *mockFailSecondWriteCloser) Write(p []byte) (int, error) { + m.count++ + if m.count == 2 { + return 0, assert.AnError + } + return len(p), nil +} + +func (m *mockFailSecondWriteCloser) Close() error { return nil } +func (m *mockFailSecondWriteCloser) Read(p []byte) (int, error) { return 0, nil } + +type mockErrorWriteCloser struct { + closed bool +} + +func (m *mockErrorWriteCloser) Write(p []byte) (int, error) { + return 0, assert.AnError +} + +func (m *mockErrorWriteCloser) Close() error { + m.closed = true + return nil +} + +func (m *mockErrorWriteCloser) Read(p []byte) (int, error) { + return 0, nil +} diff --git a/internal/random/random_test.go b/internal/random/random_test.go index 8c6787e..057487b 100644 --- a/internal/random/random_test.go +++ b/internal/random/random_test.go @@ -3,6 +3,7 @@ package random import ( "errors" "fmt" + "io" "testing" ) @@ -44,18 +45,32 @@ func TestRandom_String(t *testing.T) { } func TestRandomWithFailingReader_String(t *testing.T) { - var randomizer Random - var errBrainrot = fmt.Errorf("you are not sigma enough") - randomizer = &random{reader: &brainrotReader{err: errBrainrot}} - t.Run("test failing reader", func(t *testing.T) { - result, err := randomizer.String(20) - if !errors.Is(err, errBrainrot) { - t.Errorf("String() error = %v, wantErr %v", err, errBrainrot) - return - } + errBrainrot := fmt.Errorf("you are not sigma enough") - if result != "" { - t.Errorf("String() result = %v, want an empty string due to error", result) - } - }) + tests := []struct { + name string + reader io.Reader + expectErr error + }{ + { + name: "failing reader", + reader: &brainrotReader{err: errBrainrot}, + expectErr: errBrainrot, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + randomizer := &random{reader: tt.reader} + result, err := randomizer.String(20) + if !errors.Is(err, tt.expectErr) { + t.Errorf("String() error = %v, wantErr %v", err, tt.expectErr) + return + } + + if result != "" { + t.Errorf("String() result = %v, want an empty string due to error", result) + } + }) + } } diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index d4734ed..9b3d026 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -468,89 +468,108 @@ func TestRegistry_Register(t *testing.T) { } func TestRegistry_GetAllSessionFromUser(t *testing.T) { - t.Run("user has no sessions", func(t *testing.T) { - r := ®istry{ - byUser: make(map[string]map[Key]Session), - slugIndex: make(map[Key]string), - } - sessions := r.GetAllSessionFromUser("user1") - if len(sessions) != 0 { - t.Errorf("expected 0 sessions, got %d", len(sessions)) - } - }) + tests := []struct { + name string + setupFunc func(r *registry) string + expectN int + }{ + { + name: "user has no sessions", + setupFunc: func(r *registry) string { + return "user1" + }, + expectN: 0, + }, + { + name: "user has multiple sessions", + setupFunc: func(r *registry) string { + user := "user1" + key1 := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} + key2 := types.SessionKey{Id: "b", Type: types.TunnelTypeTCP} + r.mu.Lock() + r.byUser[user] = map[Key]Session{ + key1: &mockSession{user: user}, + key2: &mockSession{user: user}, + } + r.mu.Unlock() + return user + }, + expectN: 2, + }, + } - t.Run("user has multiple sessions", func(t *testing.T) { - r := ®istry{ - byUser: make(map[string]map[Key]Session), - slugIndex: make(map[Key]string), - mu: sync.RWMutex{}, - } - - user := "user1" - key1 := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} - key2 := types.SessionKey{Id: "b", Type: types.TunnelTypeTCP} - session1 := &mockSession{user: user} - session2 := &mockSession{user: user} - - r.mu.Lock() - r.byUser[user] = map[Key]Session{ - key1: session1, - key2: session2, - } - r.mu.Unlock() - - sessions := r.GetAllSessionFromUser(user) - if len(sessions) != 2 { - t.Errorf("expected 2 sessions, got %d", len(sessions)) - } - - found := map[Session]bool{} - for _, s := range sessions { - found[s] = true - } - if !found[session1] || !found[session2] { - t.Errorf("returned sessions do not match expected") - } - }) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + mu: sync.RWMutex{}, + } + user := tt.setupFunc(r) + sessions := r.GetAllSessionFromUser(user) + if len(sessions) != tt.expectN { + t.Errorf("expected %d sessions, got %d", tt.expectN, len(sessions)) + } + }) + } } func TestRegistry_Remove(t *testing.T) { - t.Run("remove existing key", func(t *testing.T) { - r := ®istry{ - byUser: make(map[string]map[Key]Session), - slugIndex: make(map[Key]string), - mu: sync.RWMutex{}, - } + tests := []struct { + name string + setupFunc func(r *registry) (string, types.SessionKey) + key types.SessionKey + verify func(*testing.T, *registry, string, types.SessionKey) + }{ + { + name: "remove existing key", + setupFunc: func(r *registry) (string, types.SessionKey) { + user := "user1" + key := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} + session := &mockSession{user: user} + r.mu.Lock() + r.byUser[user] = map[Key]Session{key: session} + r.slugIndex[key] = user + r.mu.Unlock() + return user, key + }, + verify: func(t *testing.T, r *registry, user string, key types.SessionKey) { + if _, ok := r.byUser[user][key]; ok { + t.Errorf("expected key to be removed from byUser") + } + if _, ok := r.slugIndex[key]; ok { + t.Errorf("expected key to be removed from slugIndex") + } + if _, ok := r.byUser[user]; ok { + t.Errorf("expected user to be removed from byUser map") + } + }, + }, + { + name: "remove non-existing key", + setupFunc: func(r *registry) (string, types.SessionKey) { + return "", types.SessionKey{Id: "nonexist", Type: types.TunnelTypeHTTP} + }, + }, + } - user := "user1" - key := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} - session := &mockSession{user: user} - - r.mu.Lock() - r.byUser[user] = map[Key]Session{key: session} - r.slugIndex[key] = user - r.mu.Unlock() - - r.Remove(key) - - if _, ok := r.byUser[user][key]; ok { - t.Errorf("expected key to be removed from byUser") - } - if _, ok := r.slugIndex[key]; ok { - t.Errorf("expected key to be removed from slugIndex") - } - if _, ok := r.byUser[user]; ok { - t.Errorf("expected user to be removed from byUser map") - } - }) - - t.Run("remove non-existing key", func(t *testing.T) { - r := ®istry{ - byUser: make(map[string]map[Key]Session), - slugIndex: make(map[Key]string), - } - r.Remove(types.SessionKey{Id: "nonexist", Type: types.TunnelTypeHTTP}) - }) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := ®istry{ + byUser: make(map[string]map[Key]Session), + slugIndex: make(map[Key]string), + mu: sync.RWMutex{}, + } + user, key := tt.setupFunc(r) + if user == "" { + key = tt.key + } + r.Remove(key) + if tt.verify != nil { + tt.verify(t, r, user, key) + } + }) + } } func TestIsValidSlug(t *testing.T) { diff --git a/internal/transport/httphandler.go b/internal/transport/httphandler.go index 800d2c8..2a43f95 100644 --- a/internal/transport/httphandler.go +++ b/internal/transport/httphandler.go @@ -175,7 +175,11 @@ func (hh *httpHandler) openForwardedChannel(hw stream.HTTP, sshSession registry. go func() { channel, reqs, err := sshSession.Lifecycle().Connection().OpenChannel("forwarded-tcpip", payload) - resultChan <- channelResult{channel, reqs, err} + select { + case resultChan <- channelResult{channel, reqs, err}: + default: + hh.cleanupUnusedChannel(channel, reqs) + } }() select { diff --git a/server/server.go b/server/server.go index a1990b4..b6a66c1 100644 --- a/server/server.go +++ b/server/server.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "io" "log" "net" "time" @@ -85,7 +86,7 @@ func (s *server) handleConnection(conn net.Conn) { defer func(sshConn *ssh.ServerConn) { err = sshConn.Close() - if err != nil && !errors.Is(err, net.ErrClosed) { + if err != nil && !errors.Is(err, net.ErrClosed) && !errors.Is(err, io.EOF) { log.Printf("failed to close SSH server: %v", err) } }(sshConn) @@ -101,7 +102,7 @@ func (s *server) handleConnection(conn net.Conn) { sshSession := session.New(s.randomizer, s.config, sshConn, forwardingReqs, chans, s.sessionRegistry, s.portRegistry, user) err = sshSession.Start() if err != nil { - log.Printf("SSH session ended with error: %v", err) + log.Printf("SSH session ended with error: %s", err.Error()) return } return diff --git a/session/interaction/interaction.go b/session/interaction/interaction.go index fe5b496..0e6570b 100644 --- a/session/interaction/interaction.go +++ b/session/interaction/interaction.go @@ -256,8 +256,6 @@ func (i *interaction) Start() { i.program.Kill() i.program = nil if i.closeFunc != nil { - if err := i.closeFunc(); err != nil { - log.Printf("Cannot close session: %s \n", err) - } + _ = i.closeFunc() } } diff --git a/session/lifecycle/lifecycle.go b/session/lifecycle/lifecycle.go index f9f9d6e..a775c22 100644 --- a/session/lifecycle/lifecycle.go +++ b/session/lifecycle/lifecycle.go @@ -2,6 +2,9 @@ package lifecycle import ( "errors" + "io" + "net" + "sync" "time" portUtil "tunnel_pls/internal/port" @@ -22,7 +25,9 @@ type SessionRegistry interface { } type lifecycle struct { + mu sync.Mutex status types.SessionStatus + closeErr error conn ssh.Conn channel ssh.Channel forwarder Forwarder @@ -73,29 +78,41 @@ func (l *lifecycle) Connection() ssh.Conn { return l.conn } func (l *lifecycle) SetStatus(status types.SessionStatus) { + l.mu.Lock() + defer l.mu.Unlock() l.status = status if status == types.SessionStatusRUNNING && l.startedAt.IsZero() { l.startedAt = time.Now() } } -func closeIfNotNil(c interface{ Close() error }) error { - if c != nil { - return c.Close() - } - return nil +func (l *lifecycle) IsActive() bool { + l.mu.Lock() + defer l.mu.Unlock() + return l.status == types.SessionStatusRUNNING } func (l *lifecycle) Close() error { + l.mu.Lock() + defer l.mu.Unlock() + if l.status == types.SessionStatusCLOSED { + return l.closeErr + } + l.status = types.SessionStatusCLOSED + var errs []error tunnelType := l.forwarder.TunnelType() - if err := closeIfNotNil(l.channel); err != nil { - errs = append(errs, err) + if l.channel != nil { + if err := l.channel.Close(); err != nil && !isClosedError(err) { + errs = append(errs, err) + } } - if err := closeIfNotNil(l.conn); err != nil { - errs = append(errs, err) + if l.conn != nil { + if err := l.conn.Close(); err != nil && !isClosedError(err) { + errs = append(errs, err) + } } clientSlug := l.slug.String() @@ -114,11 +131,15 @@ func (l *lifecycle) Close() error { } } - return errors.Join(errs...) + l.closeErr = errors.Join(errs...) + return l.closeErr } -func (l *lifecycle) IsActive() bool { - return l.status == types.SessionStatusRUNNING +func isClosedError(err error) bool { + if err == nil { + return false + } + return errors.Is(err, io.EOF) || errors.Is(err, net.ErrClosed) || err.Error() == "EOF" } func (l *lifecycle) StartedAt() time.Time { diff --git a/types/types.go b/types/types.go index 34ccfb4..77d6ac4 100644 --- a/types/types.go +++ b/types/types.go @@ -7,6 +7,7 @@ type SessionStatus int const ( SessionStatusINITIALIZING SessionStatus = iota SessionStatusRUNNING + SessionStatusCLOSED ) type InteractiveMode int From c1fb588cf48cd8192165f918b9902951c9db5d95 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 21:24:58 +0700 Subject: [PATCH 10/47] test(config): add unit tests for config behavior --- internal/config/config_test.go | 361 +++++++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) create mode 100644 internal/config/config_test.go diff --git a/internal/config/config_test.go b/internal/config/config_test.go new file mode 100644 index 0000000..4aa7dc4 --- /dev/null +++ b/internal/config/config_test.go @@ -0,0 +1,361 @@ +package config + +import ( + "os" + "testing" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" +) + +func TestGetenv(t *testing.T) { + tests := []struct { + name string + key string + val string + def string + expected string + }{ + { + name: "returns existing env", + key: "TEST_ENV_EXIST", + val: "value", + def: "default", + expected: "value", + }, + { + name: "returns default when env missing", + key: "TEST_ENV_MISSING", + val: "", + def: "default", + expected: "default", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.val != "" { + t.Setenv(tt.key, tt.val) + } else { + os.Unsetenv(tt.key) + } + assert.Equal(t, tt.expected, getenv(tt.key, tt.def)) + }) + } +} + +func TestGetenvBool(t *testing.T) { + tests := []struct { + name string + key string + val string + def bool + expected bool + }{ + { + name: "returns true when env is true", + key: "TEST_BOOL_TRUE", + val: "true", + def: false, + expected: true, + }, + { + name: "returns false when env is false", + key: "TEST_BOOL_FALSE", + val: "false", + def: true, + expected: false, + }, + { + name: "returns default when env missing", + key: "TEST_BOOL_MISSING", + val: "", + def: true, + expected: true, + }, + { + name: "returns false when env is not true", + key: "TEST_BOOL_INVALID", + val: "yes", + def: true, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.val != "" { + t.Setenv(tt.key, tt.val) + } else { + os.Unsetenv(tt.key) + } + assert.Equal(t, tt.expected, getenvBool(tt.key, tt.def)) + }) + } +} + +func TestParseMode(t *testing.T) { + tests := []struct { + name string + mode string + expect types.ServerMode + expectErr bool + }{ + {"standalone", "standalone", types.ServerModeSTANDALONE, false}, + {"node", "node", types.ServerModeNODE, false}, + {"uppercase", "STANDALONE", types.ServerModeSTANDALONE, false}, + {"invalid", "invalid", 0, true}, + {"empty (default)", "", types.ServerModeSTANDALONE, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.mode != "" { + t.Setenv("MODE", tt.mode) + } else { + os.Unsetenv("MODE") + } + mode, err := parseMode() + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, tt.expect, mode) + } + }) + } +} + +func TestParseAllowedPorts(t *testing.T) { + tests := []struct { + name string + val string + start uint16 + end uint16 + expectErr bool + }{ + {"valid range", "1000-2000", 1000, 2000, false}, + {"empty", "", 0, 0, false}, + {"invalid format - no dash", "1000", 0, 0, true}, + {"invalid format - too many dashes", "1000-2000-3000", 0, 0, true}, + {"invalid start port", "abc-2000", 0, 0, true}, + {"invalid end port", "1000-abc", 0, 0, true}, + {"out of range start", "70000-80000", 0, 0, true}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.val != "" { + t.Setenv("ALLOWED_PORTS", tt.val) + } else { + os.Unsetenv("ALLOWED_PORTS") + } + start, end, err := parseAllowedPorts() + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, tt.start, start) + assert.Equal(t, tt.end, end) + } + }) + } +} + +func TestParseBufferSize(t *testing.T) { + tests := []struct { + name string + val string + expect int + }{ + {"valid size", "8192", 8192}, + {"default size", "", 32768}, + {"too small", "1024", 4096}, + {"too large", "2000000", 4096}, + {"invalid format", "abc", 4096}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.val != "" { + t.Setenv("BUFFER_SIZE", tt.val) + } else { + os.Unsetenv("BUFFER_SIZE") + } + size := parseBufferSize() + assert.Equal(t, tt.expect, size) + }) + } +} + +func TestParse(t *testing.T) { + tests := []struct { + name string + envs map[string]string + expectErr bool + }{ + { + name: "minimal valid config", + envs: map[string]string{ + "DOMAIN": "example.com", + }, + expectErr: false, + }, + { + name: "TLS enabled without token", + envs: map[string]string{ + "TLS_ENABLED": "true", + }, + expectErr: true, + }, + { + name: "TLS enabled with token", + envs: map[string]string{ + "TLS_ENABLED": "true", + "CF_API_TOKEN": "secret", + }, + expectErr: false, + }, + { + name: "Node mode without token", + envs: map[string]string{ + "MODE": "node", + }, + expectErr: true, + }, + { + name: "Node mode with token", + envs: map[string]string{ + "MODE": "node", + "NODE_TOKEN": "token", + }, + expectErr: false, + }, + { + name: "invalid mode", + envs: map[string]string{ + "MODE": "invalid", + }, + expectErr: true, + }, + { + name: "invalid allowed ports", + envs: map[string]string{ + "ALLOWED_PORTS": "1000", + }, + expectErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + os.Clearenv() + for k, v := range tt.envs { + t.Setenv(k, v) + } + cfg, err := parse() + if tt.expectErr { + assert.Error(t, err) + assert.Nil(t, cfg) + } else { + assert.NoError(t, err) + assert.NotNil(t, cfg) + } + }) + } +} + +func TestGetters(t *testing.T) { + envs := map[string]string{ + "DOMAIN": "example.com", + "PORT": "2222", + "HTTP_PORT": "80", + "HTTPS_PORT": "443", + "TLS_ENABLED": "true", + "TLS_REDIRECT": "true", + "ACME_EMAIL": "test@example.com", + "CF_API_TOKEN": "token", + "ACME_STAGING": "true", + "ALLOWED_PORTS": "1000-2000", + "BUFFER_SIZE": "16384", + "PPROF_ENABLED": "true", + "PPROF_PORT": "7070", + "MODE": "standalone", + "GRPC_ADDRESS": "127.0.0.1", + "GRPC_PORT": "9090", + "NODE_TOKEN": "ntoken", + } + + os.Clearenv() + for k, v := range envs { + t.Setenv(k, v) + } + + cfg, err := parse() + assert.NoError(t, err) + + assert.Equal(t, "example.com", cfg.Domain()) + assert.Equal(t, "2222", cfg.SSHPort()) + assert.Equal(t, "80", cfg.HTTPPort()) + assert.Equal(t, "443", cfg.HTTPSPort()) + assert.Equal(t, true, cfg.TLSEnabled()) + assert.Equal(t, true, cfg.TLSRedirect()) + assert.Equal(t, "test@example.com", cfg.ACMEEmail()) + assert.Equal(t, "token", cfg.CFAPIToken()) + assert.Equal(t, true, cfg.ACMEStaging()) + assert.Equal(t, uint16(1000), cfg.AllowedPortsStart()) + assert.Equal(t, uint16(2000), cfg.AllowedPortsEnd()) + assert.Equal(t, 16384, cfg.BufferSize()) + assert.Equal(t, true, cfg.PprofEnabled()) + assert.Equal(t, "7070", cfg.PprofPort()) + assert.Equal(t, types.ServerMode(types.ServerModeSTANDALONE), cfg.Mode()) + assert.Equal(t, "127.0.0.1", cfg.GRPCAddress()) + assert.Equal(t, "9090", cfg.GRPCPort()) + assert.Equal(t, "ntoken", cfg.NodeToken()) +} + +func TestMustLoad(t *testing.T) { + t.Run("success", func(t *testing.T) { + os.Clearenv() + t.Setenv("DOMAIN", "example.com") + cfg, err := MustLoad() + assert.NoError(t, err) + assert.NotNil(t, cfg) + }) + + t.Run("loadEnvFile error", func(t *testing.T) { + err := os.Mkdir(".env", 0755) + assert.NoError(t, err) + defer os.Remove(".env") + + cfg, err := MustLoad() + assert.Error(t, err) + assert.Nil(t, cfg) + }) + + t.Run("parse error", func(t *testing.T) { + os.Clearenv() + t.Setenv("MODE", "invalid") + cfg, err := MustLoad() + assert.Error(t, err) + assert.Nil(t, cfg) + }) +} + +func TestLoadEnvFile(t *testing.T) { + t.Run("file exists", func(t *testing.T) { + err := os.WriteFile(".env", []byte("TEST_ENV_FILE=true"), 0644) + assert.NoError(t, err) + defer os.Remove(".env") + + err = loadEnvFile() + assert.NoError(t, err) + assert.Equal(t, "true", os.Getenv("TEST_ENV_FILE")) + }) + + t.Run("file missing", func(t *testing.T) { + _ = os.Remove(".env") + err := loadEnvFile() + assert.NoError(t, err) + }) +} From 58f1fdabe1b25155e1045b781290c9bd1786cae4 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 21:58:25 +0700 Subject: [PATCH 11/47] test(server): add unit tests for server startup behavior --- server/server_test.go | 268 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 server/server_test.go diff --git a/server/server_test.go b/server/server_test.go new file mode 100644 index 0000000..d01479e --- /dev/null +++ b/server/server_test.go @@ -0,0 +1,268 @@ +package server + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "errors" + "fmt" + "net" + "testing" + "time" + "tunnel_pls/internal/registry" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "golang.org/x/crypto/ssh" + "google.golang.org/grpc" +) + +type mockRandom struct { + mock.Mock +} + +func (m *mockRandom) String(length int) (string, error) { + args := m.Called(length) + return args.String(0), args.Error(1) +} + +type mockConfig struct { + mock.Mock +} + +func (m *mockConfig) Domain() string { return m.Called().String(0) } +func (m *mockConfig) SSHPort() string { return m.Called().String(0) } +func (m *mockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *mockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *mockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *mockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *mockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *mockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *mockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *mockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *mockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *mockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *mockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *mockConfig) PprofPort() string { return m.Called().String(0) } +func (m *mockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *mockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *mockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *mockConfig) NodeToken() string { return m.Called().String(0) } + +type mockRegistry struct { + mock.Mock +} + +func (m *mockRegistry) Get(key types.SessionKey) (registry.Session, error) { + args := m.Called(key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *mockRegistry) GetWithUser(user string, key types.SessionKey) (registry.Session, error) { + args := m.Called(user, key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *mockRegistry) Register(key types.SessionKey, session registry.Session) bool { + return m.Called(key, session).Bool(0) +} + +func (m *mockRegistry) Update(user string, oldKey types.SessionKey, newKey types.SessionKey) error { + return m.Called(user, oldKey, newKey).Error(0) +} + +func (m *mockRegistry) Remove(key types.SessionKey) { + m.Called(key) +} + +func (m *mockRegistry) GetAllSessionFromUser(user string) []registry.Session { + return m.Called(user).Get(0).([]registry.Session) +} + +type mockGrpcClient struct { + mock.Mock +} + +func (m *mockGrpcClient) SubscribeEvents(ctx context.Context, identity string, authToken string) error { + return m.Called(ctx, identity, authToken).Error(0) +} + +func (m *mockGrpcClient) ClientConn() *grpc.ClientConn { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(*grpc.ClientConn) +} + +func (m *mockGrpcClient) AuthorizeConn(ctx context.Context, token string) (bool, string, error) { + args := m.Called(ctx, token) + return args.Bool(0), args.String(1), args.Error(2) +} + +func (m *mockGrpcClient) CheckServerHealth(ctx context.Context) error { + return m.Called(ctx).Error(0) +} + +func (m *mockGrpcClient) Close() error { + return m.Called().Error(0) +} + +type mockPort struct { + mock.Mock +} + +func (m *mockPort) AddRange(startPort, endPort uint16) error { + return m.Called(startPort, endPort).Error(0) +} + +func (m *mockPort) Unassigned() (uint16, bool) { + args := m.Called() + return uint16(args.Int(0)), args.Bool(1) +} + +func (m *mockPort) SetStatus(port uint16, assigned bool) error { + return m.Called(port, assigned).Error(0) +} + +func (m *mockPort) Claim(port uint16) bool { + return m.Called(port).Bool(0) +} + +type mockListener struct { + mock.Mock +} + +func (m *mockListener) Accept() (net.Conn, error) { + args := m.Called() + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(net.Conn), args.Error(1) +} + +func (m *mockListener) Close() error { + return m.Called().Error(0) +} + +func (m *mockListener) Addr() net.Addr { + return m.Called().Get(0).(net.Addr) +} + +func getTestSSHConfig() (*ssh.ServerConfig, ssh.Signer) { + key, _ := rsa.GenerateKey(rand.Reader, 2048) + signer, _ := ssh.NewSignerFromKey(key) + config := &ssh.ServerConfig{ + NoClientAuth: true, + } + config.AddHostKey(signer) + return config, signer +} + +func TestNew(t *testing.T) { + mr := new(mockRandom) + mc := new(mockConfig) + mreg := new(mockRegistry) + mg := new(mockGrpcClient) + mp := new(mockPort) + sc, _ := getTestSSHConfig() + + tests := []struct { + name string + port string + wantErr bool + }{ + { + name: "success", + port: "0", + wantErr: false, + }, + { + name: "invalid port", + port: "invalid", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s, err := New(mr, mc, sc, mreg, mg, mp, tt.port) + if tt.wantErr { + assert.Error(t, err) + assert.Nil(t, s) + } else { + assert.NoError(t, err) + assert.NotNil(t, s) + _ = s.Close() + } + }) + } + + t.Run("port already in use", func(t *testing.T) { + l, err := net.Listen("tcp", ":0") + if err != nil { + t.Fatal(err) + } + port := l.Addr().(*net.TCPAddr).Port + defer l.Close() + + s, err := New(mr, mc, sc, mreg, mg, mp, fmt.Sprintf("%d", port)) + assert.Error(t, err) + assert.Nil(t, s) + }) +} + +func TestClose(t *testing.T) { + mr := new(mockRandom) + mc := new(mockConfig) + mreg := new(mockRegistry) + mg := new(mockGrpcClient) + mp := new(mockPort) + sc, _ := getTestSSHConfig() + + s, _ := New(mr, mc, sc, mreg, mg, mp, "0") + err := s.Close() + assert.NoError(t, err) + + err = s.Close() + assert.Error(t, err) +} + +func TestStart(t *testing.T) { + mr := new(mockRandom) + mc := new(mockConfig) + mreg := new(mockRegistry) + mg := new(mockGrpcClient) + mp := new(mockPort) + sc, _ := getTestSSHConfig() + + t.Run("normal stop", func(t *testing.T) { + s, _ := New(mr, mc, sc, mreg, mg, mp, "0") + go func() { + time.Sleep(100 * time.Millisecond) + _ = s.Close() + }() + s.Start() + }) + + t.Run("accept error", func(t *testing.T) { + ml := new(mockListener) + s := &server{ + sshListener: ml, + sshPort: "0", + } + + ml.On("Accept").Return(nil, errors.New("temporary error")).Once() + ml.On("Accept").Return(nil, net.ErrClosed).Once() + + s.Start() + ml.AssertExpectations(t) + }) +} From 5499b7d08af2c4fb24962a37ef90af10608cd290 Mon Sep 17 00:00:00 2001 From: bagas Date: Thu, 22 Jan 2026 22:05:02 +0700 Subject: [PATCH 12/47] ci: update SonarQube action configuration --- .gitea/workflows/sonarqube.yml | 22 +++++++++++++++++++++- .gitignore | 3 ++- sonar-project.properties | 3 --- 3 files changed, 23 insertions(+), 5 deletions(-) delete mode 100644 sonar-project.properties diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index dc03a14..77d4cf4 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -24,10 +24,30 @@ jobs: run: go mod tidy - name: Run tests with coverage - run: go test ./... -coverprofile=coverage + run: go test ./... -coverprofile=coverage -json > test-results.json + + - name: Set SonarQube project key + run: | + BRANCH_NAME=${GITHUB_REF#refs/heads/} + if [ "$BRANCH_NAME" = "main" ]; then + SONAR_PROJECT_KEY="tunnel-please" + else + BRANCH_KEY=${BRANCH_NAME//\//-} + SONAR_PROJECT_KEY="tunnel-please-$BRANCH_KEY" + fi + echo "SONAR_PROJECT_KEY=tunnel-please-$BRANCH_KEY" >> $GITHUB_ENV + echo "Using SonarQube Project Key: $SONAR_PROJECT_KEY" - name: SonarQube Scan uses: SonarSource/sonarqube-scan-action@v7.0.0 env: SONAR_HOST_URL: ${{ secrets.SONARQUBE_HOST }} SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} + with: + args: > + -Dsonar.projectKey=${{ env.SONAR_PROJECT_KEY }} + -Dsonar.go.coverage.reportPaths=coverage + -Dsonar.test.inclusions=**/*_test.go + -Dsonar.test.exclusions=**/vendor/** + -Dsonar.exclusions=**/*_test.go,**/vendor/** + -Dsonar.go.tests.reportPaths=test-results.json \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6c907a9..fd6e5af 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ id_rsa* tmp certs app -coverage \ No newline at end of file +coverage +test-results.json \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100644 index 626044d..0000000 --- a/sonar-project.properties +++ /dev/null @@ -1,3 +0,0 @@ -sonar.projectKey=tunnel-please -sonar.go.coverage.reportPaths=coverage -sonar.test.inclusions=**/*_test.go \ No newline at end of file From d2e508c8ef88a131f22005f7dda658172b5623b2 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 14:17:18 +0700 Subject: [PATCH 13/47] test(key): add unit tests for key behavior --- internal/key/key.go | 25 ++++- internal/key/key_test.go | 235 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 254 insertions(+), 6 deletions(-) create mode 100644 internal/key/key_test.go diff --git a/internal/key/key.go b/internal/key/key.go index 659abe3..682a244 100644 --- a/internal/key/key.go +++ b/internal/key/key.go @@ -5,6 +5,7 @@ import ( "crypto/rsa" "crypto/x509" "encoding/pem" + "io" "log" "os" "path/filepath" @@ -12,6 +13,18 @@ import ( "golang.org/x/crypto/ssh" ) +var ( + rsaGenerateKey = rsa.GenerateKey + pemEncode = pem.Encode + sshNewPublicKey = func(key interface{}) (ssh.PublicKey, error) { + return ssh.NewPublicKey(key) + } + pubKeyWrite = func(w io.Writer, data []byte) (int, error) { + return w.Write(data) + } + osOpenFile = os.OpenFile +) + func GenerateSSHKeyIfNotExist(keyPath string) error { if _, err := os.Stat(keyPath); err == nil { log.Printf("SSH key already exists at %s", keyPath) @@ -20,7 +33,7 @@ func GenerateSSHKeyIfNotExist(keyPath string) error { log.Printf("SSH key not found at %s, generating new key pair...", keyPath) - privateKey, err := rsa.GenerateKey(rand.Reader, 4096) + privateKey, err := rsaGenerateKey(rand.Reader, 4096) if err != nil { return err } @@ -35,29 +48,29 @@ func GenerateSSHKeyIfNotExist(keyPath string) error { return err } - privateKeyFile, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + privateKeyFile, err := osOpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { return err } defer privateKeyFile.Close() - if err := pem.Encode(privateKeyFile, privateKeyPEM); err != nil { + if err := pemEncode(privateKeyFile, privateKeyPEM); err != nil { return err } - publicKey, err := ssh.NewPublicKey(&privateKey.PublicKey) + publicKey, err := sshNewPublicKey(&privateKey.PublicKey) if err != nil { return err } pubKeyPath := keyPath + ".pub" - pubKeyFile, err := os.OpenFile(pubKeyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + pubKeyFile, err := osOpenFile(pubKeyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { return err } defer pubKeyFile.Close() - _, err = pubKeyFile.Write(ssh.MarshalAuthorizedKey(publicKey)) + _, err = pubKeyWrite(pubKeyFile, ssh.MarshalAuthorizedKey(publicKey)) if err != nil { return err } diff --git a/internal/key/key_test.go b/internal/key/key_test.go new file mode 100644 index 0000000..d28c33b --- /dev/null +++ b/internal/key/key_test.go @@ -0,0 +1,235 @@ +package key + +import ( + "crypto/rsa" + "encoding/pem" + "errors" + "io" + "os" + "path/filepath" + "testing" + + "golang.org/x/crypto/ssh" +) + +func TestGenerateSSHKeyIfNotExist(t *testing.T) { + tempDir := t.TempDir() + + tests := []struct { + name string + setup func(t *testing.T, tempDir string) string + mockSetup func() func() + wantErr bool + errStr string + verify func(t *testing.T, keyPath string) + }{ + { + name: "GenerateNewKey", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "id_rsa") + }, + verify: func(t *testing.T, keyPath string) { + pubKeyPath := keyPath + ".pub" + if _, err := os.Stat(keyPath); os.IsNotExist(err) { + t.Errorf("Private key file not created") + } + if _, err := os.Stat(pubKeyPath); os.IsNotExist(err) { + t.Errorf("Public key file not created") + } + privateKeyBytes, err := os.ReadFile(keyPath) + if err != nil { + t.Fatalf("Failed to read private key: %v", err) + } + if _, err = ssh.ParseRawPrivateKey(privateKeyBytes); err != nil { + t.Errorf("Failed to parse private key: %v", err) + } + publicKeyBytes, err := os.ReadFile(pubKeyPath) + if err != nil { + t.Fatalf("Failed to read public key: %v", err) + } + if _, _, _, _, err = ssh.ParseAuthorizedKey(publicKeyBytes); err != nil { + t.Errorf("Failed to parse public key: %v", err) + } + }, + }, + { + name: "DoNotOverwriteExistingKey", + setup: func(t *testing.T, tempDir string) string { + keyPath := filepath.Join(tempDir, "existing_id_rsa") + dummyPrivate := "dummy private" + dummyPublic := "dummy public" + if err := os.WriteFile(keyPath, []byte(dummyPrivate), 0600); err != nil { + t.Fatalf("Failed to create dummy private key: %v", err) + } + if err := os.WriteFile(keyPath+".pub", []byte(dummyPublic), 0644); err != nil { + t.Fatalf("Failed to create dummy public key: %v", err) + } + return keyPath + }, + verify: func(t *testing.T, keyPath string) { + gotPrivate, _ := os.ReadFile(keyPath) + if string(gotPrivate) != "dummy private" { + t.Errorf("Private key was overwritten") + } + gotPublic, _ := os.ReadFile(keyPath + ".pub") + if string(gotPublic) != "dummy public" { + t.Errorf("Public key was overwritten") + } + }, + }, + { + name: "CreateNestedDirectories", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "nested", "dir", "id_rsa") + }, + verify: func(t *testing.T, keyPath string) { + if _, err := os.Stat(keyPath); os.IsNotExist(err) { + t.Errorf("Private key file not created in nested directory") + } + }, + }, + { + name: "FailureMkdirAll", + setup: func(t *testing.T, tempDir string) string { + dirPath := filepath.Join(tempDir, "file_as_dir") + if err := os.WriteFile(dirPath, []byte("not a dir"), 0644); err != nil { + t.Fatalf("Failed to create file: %v", err) + } + return filepath.Join(dirPath, "id_rsa") + }, + wantErr: true, + }, + { + name: "PrivateExistsPublicMissing", + setup: func(t *testing.T, tempDir string) string { + keyPath := filepath.Join(tempDir, "partial_id_rsa") + if err := os.WriteFile(keyPath, []byte("private"), 0600); err != nil { + t.Fatalf("Failed to create private key: %v", err) + } + return keyPath + }, + verify: func(t *testing.T, keyPath string) { + if _, err := os.Stat(keyPath + ".pub"); !os.IsNotExist(err) { + t.Errorf("Public key should NOT have been created if private key existed") + } + }, + }, + { + name: "FailureRSAGenerateKey", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_rsa") + }, + mockSetup: func() func() { + old := rsaGenerateKey + rsaGenerateKey = func(random io.Reader, bits int) (*rsa.PrivateKey, error) { + return nil, errors.New("rsa error") + } + return func() { rsaGenerateKey = old } + }, + wantErr: true, + errStr: "rsa error", + }, + { + name: "FailureOpenFilePrivate", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_open_private") + }, + mockSetup: func() func() { + old := osOpenFile + osOpenFile = func(name string, flag int, perm os.FileMode) (*os.File, error) { + return nil, errors.New("open error") + } + return func() { osOpenFile = old } + }, + wantErr: true, + errStr: "open error", + }, + { + name: "FailurePemEncode", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_pem") + }, + mockSetup: func() func() { + old := pemEncode + pemEncode = func(out io.Writer, b *pem.Block) error { + return errors.New("pem error") + } + return func() { pemEncode = old } + }, + wantErr: true, + errStr: "pem error", + }, + { + name: "FailureSSHNewPublicKey", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_ssh") + }, + mockSetup: func() func() { + old := sshNewPublicKey + sshNewPublicKey = func(key interface{}) (ssh.PublicKey, error) { + return nil, errors.New("ssh error") + } + return func() { sshNewPublicKey = old } + }, + wantErr: true, + errStr: "ssh error", + }, + { + name: "FailureOpenFilePublic", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_open_public") + }, + mockSetup: func() func() { + old := osOpenFile + osOpenFile = func(name string, flag int, perm os.FileMode) (*os.File, error) { + if filepath.Ext(name) == ".pub" { + return nil, errors.New("open pub error") + } + return os.OpenFile(name, flag, perm) + } + return func() { osOpenFile = old } + }, + wantErr: true, + errStr: "open pub error", + }, + { + name: "FailurePubKeyWrite", + setup: func(t *testing.T, tempDir string) string { + return filepath.Join(tempDir, "fail_write") + }, + mockSetup: func() func() { + old := pubKeyWrite + pubKeyWrite = func(w io.Writer, data []byte) (int, error) { + return 0, errors.New("write error") + } + return func() { pubKeyWrite = old } + }, + wantErr: true, + errStr: "write error", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + keyPath := tt.setup(t, tempDir) + if tt.mockSetup != nil { + cleanup := tt.mockSetup() + defer cleanup() + } + + err := GenerateSSHKeyIfNotExist(keyPath) + + if (err != nil) != tt.wantErr { + t.Errorf("GenerateSSHKeyIfNotExist() error = %v, wantErr %v", err, tt.wantErr) + return + } + if tt.wantErr && tt.errStr != "" && err != nil && err.Error() != tt.errStr { + t.Errorf("GenerateSSHKeyIfNotExist() error = %v, wantErrStr %v", err, tt.errStr) + } + + if tt.verify != nil { + tt.verify(t, keyPath) + } + }) + } +} From f4848e9754e1b0d9385bb74fa59ab41d1bc9d7ff Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 14:48:04 +0700 Subject: [PATCH 14/47] fix(client): reduce cognitive complexity and fix typo (go:S3776) --- internal/grpc/client/client.go | 246 +++++++++++++++++---------------- session/session.go | 6 +- 2 files changed, 129 insertions(+), 123 deletions(-) diff --git a/internal/grpc/client/client.go b/internal/grpc/client/client.go index f2e0a1e..530e664 100644 --- a/internal/grpc/client/client.go +++ b/internal/grpc/client/client.go @@ -77,85 +77,104 @@ func New(config config.Config, address string, sessionRegistry registry.Registry } func (c *client) SubscribeEvents(ctx context.Context, identity, authToken string) error { - const ( - baseBackoff = time.Second - maxBackoff = 30 * time.Second - ) - - backoff := baseBackoff - wait := func() error { - if backoff <= 0 { - return nil - } - select { - case <-time.After(backoff): - return nil - case <-ctx.Done(): - return ctx.Err() - } - } - growBackoff := func() { - backoff *= 2 - if backoff > maxBackoff { - backoff = maxBackoff - } - } + backoff := time.Second for { - subscribe, err := c.eventService.Subscribe(ctx) - if err != nil { - if errors.Is(err, context.Canceled) || status.Code(err) == codes.Canceled || ctx.Err() != nil { - return err - } - if !c.isConnectionError(err) || status.Code(err) == codes.Unauthenticated { - return err - } - if err = wait(); err != nil { - return err - } - growBackoff() - log.Printf("Reconnect to controller within %v sec", backoff.Seconds()) - continue + if err := c.subscribeAndProcess(ctx, identity, authToken, &backoff); err != nil { + return err } + } +} - err = subscribe.Send(&proto.Node{ - Type: proto.EventType_AUTHENTICATION, - Payload: &proto.Node_AuthEvent{ - AuthEvent: &proto.Authentication{ - Identity: identity, - AuthToken: authToken, - }, +func (c *client) subscribeAndProcess(ctx context.Context, identity, authToken string, backoff *time.Duration) error { + subscribe, err := c.eventService.Subscribe(ctx) + if err != nil { + return c.handleSubscribeError(ctx, err, backoff) + } + + err = subscribe.Send(&proto.Node{ + Type: proto.EventType_AUTHENTICATION, + Payload: &proto.Node_AuthEvent{ + AuthEvent: &proto.Authentication{ + Identity: identity, + AuthToken: authToken, }, - }) + }, + }) - if err != nil { - log.Println("Authentication failed to send to gRPC server:", err) - if c.isConnectionError(err) { - if err = wait(); err != nil { - return err - } - growBackoff() - continue - } - return err - } - log.Println("Authentication Successfully sent to gRPC server") - backoff = baseBackoff + if err != nil { + return c.handleAuthError(ctx, err, backoff) + } - if err = c.processEventStream(subscribe); err != nil { - if errors.Is(err, context.Canceled) || status.Code(err) == codes.Canceled || ctx.Err() != nil { - return err - } - if c.isConnectionError(err) { - log.Printf("Reconnect to controller within %v sec", backoff.Seconds()) - if err = wait(); err != nil { - return err - } - growBackoff() - continue - } - return err - } + log.Println("Authentication Successfully sent to gRPC server") + *backoff = time.Second + + if err = c.processEventStream(subscribe); err != nil { + return c.handleStreamError(ctx, err, backoff) + } + + return nil +} + +func (c *client) handleSubscribeError(ctx context.Context, err error, backoff *time.Duration) error { + if errors.Is(err, context.Canceled) || status.Code(err) == codes.Canceled || ctx.Err() != nil { + return err + } + if !c.isConnectionError(err) || status.Code(err) == codes.Unauthenticated { + return err + } + if err = c.wait(ctx, *backoff); err != nil { + return err + } + c.growBackoff(backoff) + log.Printf("Reconnect to controller within %v sec", backoff.Seconds()) + return nil +} + +func (c *client) handleAuthError(ctx context.Context, err error, backoff *time.Duration) error { + log.Println("Authentication failed to send to gRPC server:", err) + if !c.isConnectionError(err) { + return err + } + if err := c.wait(ctx, *backoff); err != nil { + return err + } + c.growBackoff(backoff) + return nil +} + +func (c *client) handleStreamError(ctx context.Context, err error, backoff *time.Duration) error { + if errors.Is(err, context.Canceled) || status.Code(err) == codes.Canceled || ctx.Err() != nil { + return err + } + if !c.isConnectionError(err) { + return err + } + log.Printf("Reconnect to controller within %v sec", backoff.Seconds()) + if err := c.wait(ctx, *backoff); err != nil { + return err + } + c.growBackoff(backoff) + return nil +} + +func (c *client) wait(ctx context.Context, duration time.Duration) error { + if duration <= 0 { + return nil + } + select { + case <-time.After(duration): + return nil + case <-ctx.Done(): + return ctx.Err() + } +} + +func (c *client) growBackoff(backoff *time.Duration) { + const maxBackoff = 30 * time.Second + *backoff *= 2 + if *backoff > maxBackoff { + *backoff = maxBackoff } } @@ -191,35 +210,20 @@ func (c *client) eventHandlers(subscribe grpc.BidiStreamingClient[proto.Node, pr func (c *client) handleSlugChange(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], evt *proto.Events) error { slugEvent := evt.GetSlugEvent() user := slugEvent.GetUser() - oldSlug := slugEvent.GetOld() - newSlug := slugEvent.GetNew() + oldKey := types.SessionKey{Id: slugEvent.GetOld(), Type: types.TunnelTypeHTTP} + newKey := types.SessionKey{Id: slugEvent.GetNew(), Type: types.TunnelTypeHTTP} - userSession, err := c.sessionRegistry.Get(types.SessionKey{Id: oldSlug, Type: types.TunnelTypeHTTP}) + userSession, err := c.sessionRegistry.Get(oldKey) if err != nil { - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_SLUG_CHANGE_RESPONSE, - Payload: &proto.Node_SlugEventResponse{ - SlugEventResponse: &proto.SlugChangeEventResponse{Success: false, Message: err.Error()}, - }, - }, "slug change failure response") + return c.sendSlugChangeResponse(subscribe, false, err.Error()) } - if err = c.sessionRegistry.Update(user, types.SessionKey{Id: oldSlug, Type: types.TunnelTypeHTTP}, types.SessionKey{Id: newSlug, Type: types.TunnelTypeHTTP}); err != nil { - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_SLUG_CHANGE_RESPONSE, - Payload: &proto.Node_SlugEventResponse{ - SlugEventResponse: &proto.SlugChangeEventResponse{Success: false, Message: err.Error()}, - }, - }, "slug change failure response") + if err = c.sessionRegistry.Update(user, oldKey, newKey); err != nil { + return c.sendSlugChangeResponse(subscribe, false, err.Error()) } userSession.Interaction().Redraw() - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_SLUG_CHANGE_RESPONSE, - Payload: &proto.Node_SlugEventResponse{ - SlugEventResponse: &proto.SlugChangeEventResponse{Success: true, Message: ""}, - }, - }, "slug change success response") + return c.sendSlugChangeResponse(subscribe, true, "") } func (c *client) handleGetSessions(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], evt *proto.Events) error { @@ -238,12 +242,7 @@ func (c *client) handleGetSessions(subscribe grpc.BidiStreamingClient[proto.Node }) } - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_GET_SESSIONS, - Payload: &proto.Node_GetSessionsEvent{ - GetSessionsEvent: &proto.GetSessionsResponse{Details: details}, - }, - }, "send get sessions response") + return c.sendGetSessionsResponse(subscribe, details) } func (c *client) handleTerminateSession(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], evt *proto.Events) error { @@ -253,39 +252,46 @@ func (c *client) handleTerminateSession(subscribe grpc.BidiStreamingClient[proto tunnelType, err := c.protoToTunnelType(terminate.GetTunnelType()) if err != nil { - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_TERMINATE_SESSION, - Payload: &proto.Node_TerminateSessionEventResponse{ - TerminateSessionEventResponse: &proto.TerminateSessionEventResponse{Success: false, Message: err.Error()}, - }, - }, "terminate session invalid tunnel type") + return c.sendTerminateSessionResponse(subscribe, false, err.Error()) } userSession, err := c.sessionRegistry.GetWithUser(user, types.SessionKey{Id: slug, Type: tunnelType}) if err != nil { - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_TERMINATE_SESSION, - Payload: &proto.Node_TerminateSessionEventResponse{ - TerminateSessionEventResponse: &proto.TerminateSessionEventResponse{Success: false, Message: err.Error()}, - }, - }, "terminate session fetch failed") + return c.sendTerminateSessionResponse(subscribe, false, err.Error()) } if err = userSession.Lifecycle().Close(); err != nil { - return c.sendNode(subscribe, &proto.Node{ - Type: proto.EventType_TERMINATE_SESSION, - Payload: &proto.Node_TerminateSessionEventResponse{ - TerminateSessionEventResponse: &proto.TerminateSessionEventResponse{Success: false, Message: err.Error()}, - }, - }, "terminate session close failed") + return c.sendTerminateSessionResponse(subscribe, false, err.Error()) } + return c.sendTerminateSessionResponse(subscribe, true, "") +} + +func (c *client) sendSlugChangeResponse(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], success bool, message string) error { + return c.sendNode(subscribe, &proto.Node{ + Type: proto.EventType_SLUG_CHANGE_RESPONSE, + Payload: &proto.Node_SlugEventResponse{ + SlugEventResponse: &proto.SlugChangeEventResponse{Success: success, Message: message}, + }, + }, "slug change response") +} + +func (c *client) sendGetSessionsResponse(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], details []*proto.Detail) error { + return c.sendNode(subscribe, &proto.Node{ + Type: proto.EventType_GET_SESSIONS, + Payload: &proto.Node_GetSessionsEvent{ + GetSessionsEvent: &proto.GetSessionsResponse{Details: details}, + }, + }, "send get sessions response") +} + +func (c *client) sendTerminateSessionResponse(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], success bool, message string) error { return c.sendNode(subscribe, &proto.Node{ Type: proto.EventType_TERMINATE_SESSION, Payload: &proto.Node_TerminateSessionEventResponse{ - TerminateSessionEventResponse: &proto.TerminateSessionEventResponse{Success: true, Message: ""}, + TerminateSessionEventResponse: &proto.TerminateSessionEventResponse{Success: success, Message: message}, }, - }, "terminate session success response") + }, "terminate session response") } func (c *client) sendNode(subscribe grpc.BidiStreamingClient[proto.Node, proto.Events], node *proto.Node, context string) error { diff --git a/session/session.go b/session/session.go index cb7c04c..c88f615 100644 --- a/session/session.go +++ b/session/session.go @@ -87,12 +87,12 @@ func (s *session) Slug() slug.Slug { func (s *session) Detail() *types.Detail { tunnelTypeMap := map[types.TunnelType]string{ - types.TunnelTypeHTTP: "TunnelTypeHTTP", - types.TunnelTypeTCP: "TunnelTypeTCP", + types.TunnelTypeHTTP: "HTTP", + types.TunnelTypeTCP: "TCP", } tunnelType, ok := tunnelTypeMap[s.forwarder.TunnelType()] if !ok { - tunnelType = "TunnelTypeUNKNOWN" + tunnelType = "UNKNOWN" } return &types.Detail{ From 5af7af3139b468125c47a516d98317b72e3bce4c Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 15:26:51 +0700 Subject: [PATCH 15/47] test(client): add unit tests for grpc client behavior --- internal/grpc/client/client.go | 18 +- internal/grpc/client/client_test.go | 1070 +++++++++++++++++++++++++++ 2 files changed, 1080 insertions(+), 8 deletions(-) create mode 100644 internal/grpc/client/client_test.go diff --git a/internal/grpc/client/client.go b/internal/grpc/client/client.go index 530e664..ade89a0 100644 --- a/internal/grpc/client/client.go +++ b/internal/grpc/client/client.go @@ -38,6 +38,12 @@ type client struct { closing bool } +var ( + grpcNewClient = grpc.NewClient + healthNewHealthClient = grpc_health_v1.NewHealthClient + initialBackoff = time.Second +) + func New(config config.Config, address string, sessionRegistry registry.Registry) (Client, error) { var opts []grpc.DialOption @@ -58,7 +64,7 @@ func New(config config.Config, address string, sessionRegistry registry.Registry ), ) - conn, err := grpc.NewClient(address, opts...) + conn, err := grpcNewClient(address, opts...) if err != nil { return nil, fmt.Errorf("failed to connect to gRPC server at %s: %w", address, err) } @@ -77,7 +83,7 @@ func New(config config.Config, address string, sessionRegistry registry.Registry } func (c *client) SubscribeEvents(ctx context.Context, identity, authToken string) error { - backoff := time.Second + backoff := initialBackoff for { if err := c.subscribeAndProcess(ctx, identity, authToken, &backoff); err != nil { @@ -109,11 +115,7 @@ func (c *client) subscribeAndProcess(ctx context.Context, identity, authToken st log.Println("Authentication Successfully sent to gRPC server") *backoff = time.Second - if err = c.processEventStream(subscribe); err != nil { - return c.handleStreamError(ctx, err, backoff) - } - - return nil + return c.handleStreamError(ctx, c.processEventStream(subscribe), backoff) } func (c *client) handleSubscribeError(ctx context.Context, err error, backoff *time.Duration) error { @@ -332,7 +334,7 @@ func (c *client) AuthorizeConn(ctx context.Context, token string) (authorized bo } func (c *client) CheckServerHealth(ctx context.Context) error { - healthClient := grpc_health_v1.NewHealthClient(c.ClientConn()) + healthClient := healthNewHealthClient(c.ClientConn()) resp, err := healthClient.Check(ctx, &grpc_health_v1.HealthCheckRequest{ Service: "", }) diff --git a/internal/grpc/client/client_test.go b/internal/grpc/client/client_test.go new file mode 100644 index 0000000..1d3b315 --- /dev/null +++ b/internal/grpc/client/client_test.go @@ -0,0 +1,1070 @@ +package client + +import ( + "context" + "errors" + "fmt" + "io" + "testing" + "time" + + "tunnel_pls/internal/config" + "tunnel_pls/internal/registry" + "tunnel_pls/session/interaction" + "tunnel_pls/session/lifecycle" + "tunnel_pls/session/slug" + "tunnel_pls/types" + + proto "git.fossy.my.id/bagas/tunnel-please-grpc/gen" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/health/grpc_health_v1" + "google.golang.org/grpc/status" +) + +func TestClient_ClientConn(t *testing.T) { + conn := &grpc.ClientConn{} + c := &client{conn: conn} + if c.ClientConn() != conn { + t.Errorf("ClientConn() did not return expected connection") + } +} + +func TestClient_Close(t *testing.T) { + c := &client{} + if err := c.Close(); err != nil { + t.Errorf("Close() on nil connection returned error: %v", err) + } +} + +func TestAuthorizeConn(t *testing.T) { + mockUserSvc := &mockUserServiceClient{} + c := &client{authorizeConnectionService: mockUserSvc} + + tests := []struct { + name string + token string + mockResp *proto.CheckResponse + mockErr error + wantAuth bool + wantUser string + wantErr bool + }{ + { + name: "Success", + token: "valid", + mockResp: &proto.CheckResponse{Response: proto.AuthorizationResponse_MESSAGE_TYPE_AUTHORIZED, User: "mas-fuad"}, + wantAuth: true, + wantUser: "mas-fuad", + wantErr: false, + }, + { + name: "Unauthorized", + token: "invalid", + mockResp: &proto.CheckResponse{Response: proto.AuthorizationResponse_MESSAGE_TYPE_UNAUTHORIZED}, + wantAuth: false, + wantUser: "UNAUTHORIZED", + wantErr: false, + }, + { + name: "Error", + token: "error", + mockErr: errors.New("grpc error"), + wantAuth: false, + wantUser: "UNAUTHORIZED", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockUserSvc.checkFunc = func(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) { + if in.AuthToken != tt.token { + t.Errorf("expected token %s, got %s", tt.token, in.AuthToken) + } + return tt.mockResp, tt.mockErr + } + + auth, user, err := c.AuthorizeConn(context.Background(), tt.token) + if (err != nil) != tt.wantErr { + t.Errorf("AuthorizeConn() error = %v, wantErr %v", err, tt.wantErr) + } + if auth != tt.wantAuth { + t.Errorf("AuthorizeConn() auth = %v, wantAuth %v", auth, tt.wantAuth) + } + if user != tt.wantUser { + t.Errorf("AuthorizeConn() user = %s, wantUser %s", user, tt.wantUser) + } + }) + } +} + +func TestHandleSubscribeError(t *testing.T) { + c := &client{} + ctx := context.Background() + canceledCtx, cancel := context.WithCancel(ctx) + cancel() + + tests := []struct { + name string + ctx context.Context + err error + backoff time.Duration + wantErr bool + wantB time.Duration + }{ + { + name: "ContextCanceled", + ctx: canceledCtx, + err: context.Canceled, + backoff: time.Second, + wantErr: true, + }, + { + name: "GrpcCanceled", + ctx: ctx, + err: status.Error(codes.Canceled, "canceled"), + backoff: time.Second, + wantErr: true, + }, + { + name: "CtxErrSet", + ctx: canceledCtx, + err: errors.New("other error"), + backoff: time.Second, + wantErr: true, + }, + { + name: "Unauthenticated", + ctx: ctx, + err: status.Error(codes.Unauthenticated, "unauth"), + backoff: time.Second, + wantErr: true, + }, + { + name: "ConnectionError", + ctx: ctx, + err: status.Error(codes.Unavailable, "unavailable"), + backoff: time.Second, + wantErr: false, + wantB: 2 * time.Second, + }, + { + name: "NonConnectionError", + ctx: ctx, + err: status.Error(codes.Internal, "internal"), + backoff: time.Second, + wantErr: true, + }, + { + name: "WaitCanceled", + ctx: canceledCtx, + err: status.Error(codes.Unavailable, "unavailable"), + backoff: time.Second, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + backoff := tt.backoff + err := c.handleSubscribeError(tt.ctx, tt.err, &backoff) + if (err != nil) != tt.wantErr { + t.Errorf("handleSubscribeError() error = %v, wantErr %v", err, tt.wantErr) + } + if !tt.wantErr && backoff != tt.wantB { + t.Errorf("handleSubscribeError() backoff = %v, want %v", backoff, tt.wantB) + } + }) + } + + t.Run("WaitCanceledReal", func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + backoff := 50 * time.Millisecond + go func() { + time.Sleep(10 * time.Millisecond) + cancel() + }() + err := c.handleSubscribeError(ctx, status.Error(codes.Unavailable, "unavailable"), &backoff) + if err == nil { + t.Errorf("expected error from wait") + } + }) +} + +func TestHandleStreamError(t *testing.T) { + c := &client{} + ctx := context.Background() + canceledCtx, cancel := context.WithCancel(ctx) + cancel() + + tests := []struct { + name string + ctx context.Context + err error + backoff time.Duration + wantErr bool + wantB time.Duration + }{ + { + name: "ContextCanceled", + ctx: canceledCtx, + err: context.Canceled, + backoff: time.Second, + wantErr: true, + }, + { + name: "GrpcCanceled", + ctx: ctx, + err: status.Error(codes.Canceled, "canceled"), + backoff: time.Second, + wantErr: true, + }, + { + name: "CtxErrSet", + ctx: canceledCtx, + err: errors.New("other error"), + backoff: time.Second, + wantErr: true, + }, + { + name: "ConnectionError", + ctx: ctx, + err: status.Error(codes.Unavailable, "unavailable"), + backoff: time.Second, + wantErr: false, + wantB: 2 * time.Second, + }, + { + name: "NonConnectionError", + ctx: ctx, + err: status.Error(codes.Internal, "internal"), + backoff: time.Second, + wantErr: true, + }, + { + name: "WaitCanceled", + ctx: canceledCtx, + err: status.Error(codes.Unavailable, "unavailable"), + backoff: time.Second, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + backoff := tt.backoff + err := c.handleStreamError(tt.ctx, tt.err, &backoff) + if (err != nil) != tt.wantErr { + t.Errorf("handleStreamError() error = %v, wantErr %v", err, tt.wantErr) + } + if !tt.wantErr && backoff != tt.wantB { + t.Errorf("handleStreamError() backoff = %v, want %v", backoff, tt.wantB) + } + }) + } + + t.Run("WaitCanceledReal", func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + backoff := 50 * time.Millisecond + go func() { + time.Sleep(10 * time.Millisecond) + cancel() + }() + err := c.handleStreamError(ctx, status.Error(codes.Unavailable, "unavailable"), &backoff) + if err == nil { + t.Errorf("expected error from wait") + } + }) +} + +func TestHandleAuthError(t *testing.T) { + c := &client{} + ctx := context.Background() + + tests := []struct { + name string + err error + backoff time.Duration + wantErr bool + wantB time.Duration + }{ + { + name: "ConnectionError", + err: status.Error(codes.Unavailable, "unavailable"), + backoff: time.Second, + wantErr: false, + wantB: 2 * time.Second, + }, + { + name: "NonConnectionError", + err: status.Error(codes.Internal, "internal"), + backoff: time.Second, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + backoff := tt.backoff + err := c.handleAuthError(ctx, tt.err, &backoff) + if (err != nil) != tt.wantErr { + t.Errorf("handleAuthError() error = %v, wantErr %v", err, tt.wantErr) + } + if !tt.wantErr && backoff != tt.wantB { + t.Errorf("handleAuthError() backoff = %v, want %v", backoff, tt.wantB) + } + }) + } +} + +func TestHandleAuthError_WaitFail(t *testing.T) { + c := &client{} + ctx, cancel := context.WithCancel(context.Background()) + cancel() + backoff := time.Second + err := c.handleAuthError(ctx, status.Error(codes.Unavailable, "unavailable"), &backoff) + if err == nil { + t.Errorf("expected error when wait fails") + } +} + +func TestProcessEventStream(t *testing.T) { + mockStream := &mockSubscribeClient{} + c := &client{} + + t.Run("UnknownEventType", func(t *testing.T) { + mockStream.recvFunc = func() (*proto.Events, error) { + return &proto.Events{Type: proto.EventType(999)}, nil + } + first := true + mockStream.recvFunc = func() (*proto.Events, error) { + if first { + first = false + return &proto.Events{Type: proto.EventType(999)}, nil + } + return nil, io.EOF + } + err := c.processEventStream(mockStream) + if !errors.Is(err, io.EOF) { + t.Errorf("expected EOF, got %v", err) + } + }) + + t.Run("DispatchSuccess", func(t *testing.T) { + events := []proto.EventType{ + proto.EventType_SLUG_CHANGE, + proto.EventType_GET_SESSIONS, + proto.EventType_TERMINATE_SESSION, + } + + for _, et := range events { + t.Run(et.String(), func(t *testing.T) { + first := true + mockStream.recvFunc = func() (*proto.Events, error) { + if first { + first = false + payload := &proto.Events{Type: et} + switch et { + case proto.EventType_SLUG_CHANGE: + payload.Payload = &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}} + case proto.EventType_GET_SESSIONS: + payload.Payload = &proto.Events_GetSessionsEvent{GetSessionsEvent: &proto.GetSessionsEvent{}} + case proto.EventType_TERMINATE_SESSION: + payload.Payload = &proto.Events_TerminateSessionEvent{TerminateSessionEvent: &proto.TerminateSessionEvent{}} + } + return payload, nil + } + return nil, io.EOF + } + mockReg := &mockRegistry{} + mockReg.getAllSessionFromUserFunc = func(user string) []registry.Session { return nil } + mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } + mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } + c.sessionRegistry = mockReg + c.config = &mockConfig{domain: "test.com"} + mockStream.sendFunc = func(n *proto.Node) error { return nil } + + err := c.processEventStream(mockStream) + if !errors.Is(err, io.EOF) { + t.Errorf("expected EOF, got %v", err) + } + }) + } + }) + + t.Run("HandlerError", func(t *testing.T) { + first := true + mockStream.recvFunc = func() (*proto.Events, error) { + if first { + first = false + return &proto.Events{Type: proto.EventType_SLUG_CHANGE, Payload: &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}}}, nil + } + return nil, io.EOF + } + mockReg := &mockRegistry{} + mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } + c.sessionRegistry = mockReg + mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Unavailable, "send fail") } + + err := c.processEventStream(mockStream) + if !errors.Is(err, status.Error(codes.Unavailable, "send fail")) { + t.Errorf("expected send fail error, got %v", err) + } + }) +} + +func TestSendNode(t *testing.T) { + c := &client{} + mockStream := &mockSubscribeClient{} + + t.Run("Success", func(t *testing.T) { + mockStream.sendFunc = func(n *proto.Node) error { return nil } + err := c.sendNode(mockStream, &proto.Node{}, "context") + if err != nil { + t.Errorf("sendNode error = %v", err) + } + }) + + t.Run("ConnectionError", func(t *testing.T) { + mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Unavailable, "fail") } + err := c.sendNode(mockStream, &proto.Node{}, "context") + if err == nil { + t.Errorf("expected error") + } + }) + + t.Run("OtherError", func(t *testing.T) { + mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Internal, "fail") } + err := c.sendNode(mockStream, &proto.Node{}, "context") + if err != nil { + t.Errorf("expected nil error for non-connection error (logged only)") + } + }) +} + +func TestHandleSlugChange(t *testing.T) { + mockReg := &mockRegistry{} + mockStream := &mockSubscribeClient{} + c := &client{sessionRegistry: mockReg} + + evt := &proto.Events{ + Payload: &proto.Events_SlugEvent{ + SlugEvent: &proto.SlugChangeEvent{ + User: "mas-fuad", + Old: "old-slug", + New: "new-slug", + }, + }, + } + + t.Run("Success", func(t *testing.T) { + mockSess := &mockSession{} + mockInter := &mockInteraction{} + mockSess.interactionFunc = func() interaction.Interaction { return mockInter } + + mockReg.getFunc = func(key registry.Key) (registry.Session, error) { + if key.Id != "old-slug" { + t.Errorf("expected old-slug, got %s", key.Id) + } + return mockSess, nil + } + mockReg.updateFunc = func(user string, oldKey, newKey registry.Key) error { + if user != "mas-fuad" || oldKey.Id != "old-slug" || newKey.Id != "new-slug" { + t.Errorf("unexpected update args") + } + return nil + } + + sent := false + mockStream.sendFunc = func(n *proto.Node) error { + sent = true + if n.Type != proto.EventType_SLUG_CHANGE_RESPONSE { + t.Errorf("expected slug change response") + } + resp := n.GetSlugEventResponse() + if !resp.Success { + t.Errorf("expected success") + } + return nil + } + + err := c.handleSlugChange(mockStream, evt) + if err != nil { + t.Errorf("handleSlugChange error = %v", err) + } + if !mockInter.redrawCalled { + t.Errorf("redraw was not called") + } + if !sent { + t.Errorf("response not sent") + } + }) + + t.Run("SessionNotFound", func(t *testing.T) { + mockReg.getFunc = func(key registry.Key) (registry.Session, error) { + return nil, errors.New("not found") + } + mockStream.sendFunc = func(n *proto.Node) error { + resp := n.GetSlugEventResponse() + if resp.Success || resp.Message != "not found" { + t.Errorf("unexpected failure response: %v", resp) + } + return nil + } + err := c.handleSlugChange(mockStream, evt) + if err != nil { + t.Errorf("handleSlugChange should return nil if error is handled via response, but it currently returns whatever sendNode returns") + } + }) + + t.Run("UpdateError", func(t *testing.T) { + mockSess := &mockSession{} + mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return mockSess, nil } + mockReg.updateFunc = func(user string, oldKey, newKey registry.Key) error { + return errors.New("update fail") + } + mockStream.sendFunc = func(n *proto.Node) error { + resp := n.GetSlugEventResponse() + if resp.Success || resp.Message != "update fail" { + t.Errorf("unexpected failure response: %v", resp) + } + return nil + } + err := c.handleSlugChange(mockStream, evt) + if err != nil { + t.Errorf("handleSlugChange error = %v", err) + } + }) +} + +func TestHandleGetSessions(t *testing.T) { + mockReg := &mockRegistry{} + mockStream := &mockSubscribeClient{} + mockCfg := &mockConfig{domain: "test.com"} + c := &client{sessionRegistry: mockReg, config: mockCfg} + + evt := &proto.Events{ + Payload: &proto.Events_GetSessionsEvent{ + GetSessionsEvent: &proto.GetSessionsEvent{ + Identity: "mas-fuad", + }, + }, + } + + t.Run("Success", func(t *testing.T) { + now := time.Now() + mockSess := &mockSession{} + mockSess.detailFunc = func() *types.Detail { + return &types.Detail{ + ForwardingType: "http", + Slug: "myslug", + UserID: "mas-fuad", + Active: true, + StartedAt: now, + } + } + + mockReg.getAllSessionFromUserFunc = func(user string) []registry.Session { + if user != "mas-fuad" { + t.Errorf("expected mas-fuad, got %s", user) + } + return []registry.Session{mockSess} + } + + sent := false + mockStream.sendFunc = func(n *proto.Node) error { + sent = true + if n.Type != proto.EventType_GET_SESSIONS { + t.Errorf("expected get sessions response type") + } + resp := n.GetGetSessionsEvent() + if len(resp.Details) != 1 || resp.Details[0].Slug != "myslug" { + t.Errorf("unexpected details: %v", resp.Details) + } + return nil + } + + err := c.handleGetSessions(mockStream, evt) + if err != nil { + t.Errorf("handleGetSessions error = %v", err) + } + if !sent { + t.Errorf("response not sent") + } + }) +} + +func TestHandleTerminateSession(t *testing.T) { + mockReg := &mockRegistry{} + mockStream := &mockSubscribeClient{} + c := &client{sessionRegistry: mockReg} + + evt := &proto.Events{ + Payload: &proto.Events_TerminateSessionEvent{ + TerminateSessionEvent: &proto.TerminateSessionEvent{ + User: "mas-fuad", + Slug: "myslug", + TunnelType: proto.TunnelType_HTTP, + }, + }, + } + + t.Run("Success", func(t *testing.T) { + mockSess := &mockSession{} + mockLife := &mockLifecycle{} + mockSess.lifecycleFunc = func() lifecycle.Lifecycle { return mockLife } + + closed := false + mockLife.closeFunc = func() error { + closed = true + return nil + } + + mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { + if user != "mas-fuad" || key.Id != "myslug" || key.Type != types.TunnelTypeHTTP { + t.Errorf("unexpected get args") + } + return mockSess, nil + } + + sent := false + mockStream.sendFunc = func(n *proto.Node) error { + sent = true + resp := n.GetTerminateSessionEventResponse() + if !resp.Success { + t.Errorf("expected success") + } + return nil + } + + err := c.handleTerminateSession(mockStream, evt) + if err != nil { + t.Errorf("handleTerminateSession error = %v", err) + } + if !closed { + t.Errorf("close was not called") + } + if !sent { + t.Errorf("response not sent") + } + }) + + t.Run("TunnelTypeUnknown", func(t *testing.T) { + badEvt := &proto.Events{ + Payload: &proto.Events_TerminateSessionEvent{ + TerminateSessionEvent: &proto.TerminateSessionEvent{ + TunnelType: proto.TunnelType(999), + }, + }, + } + mockStream.sendFunc = func(n *proto.Node) error { + resp := n.GetTerminateSessionEventResponse() + if resp.Success || resp.Message == "" { + t.Errorf("expected failure response") + } + return nil + } + err := c.handleTerminateSession(mockStream, badEvt) + if err != nil { + t.Errorf("handleTerminateSession error = %v", err) + } + }) + + t.Run("SessionNotFound", func(t *testing.T) { + mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { + return nil, errors.New("not found") + } + mockStream.sendFunc = func(n *proto.Node) error { + resp := n.GetTerminateSessionEventResponse() + if resp.Success || resp.Message != "not found" { + t.Errorf("unexpected failure response: %v", resp) + } + return nil + } + err := c.handleTerminateSession(mockStream, evt) + if err != nil { + t.Errorf("handleTerminateSession error = %v", err) + } + }) + + t.Run("CloseError", func(t *testing.T) { + mockSess := &mockSession{} + mockLife := &mockLifecycle{} + mockSess.lifecycleFunc = func() lifecycle.Lifecycle { return mockLife } + mockLife.closeFunc = func() error { return errors.New("close fail") } + mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { return mockSess, nil } + + mockStream.sendFunc = func(n *proto.Node) error { + resp := n.GetTerminateSessionEventResponse() + if resp.Success || resp.Message != "close fail" { + t.Errorf("expected failure response: %v", resp) + } + return nil + } + err := c.handleTerminateSession(mockStream, evt) + if err != nil { + t.Errorf("handleTerminateSession error = %v", err) + } + }) +} + +func TestSubscribeAndProcess(t *testing.T) { + mockEventSvc := &mockEventServiceClient{} + c := &client{eventService: mockEventSvc} + ctx := context.Background() + backoff := time.Second + + t.Run("SubscribeError", func(t *testing.T) { + mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + return nil, status.Error(codes.Unauthenticated, "unauth") + } + err := c.subscribeAndProcess(ctx, "id", "token", &backoff) + if !errors.Is(err, status.Error(codes.Unauthenticated, "unauth")) { + t.Errorf("expected unauth error, got %v", err) + } + }) + + t.Run("AuthSendError", func(t *testing.T) { + mockStream := &mockSubscribeClient{} + mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + return mockStream, nil + } + mockStream.sendFunc = func(n *proto.Node) error { + return status.Error(codes.Internal, "send fail") + } + err := c.subscribeAndProcess(ctx, "id", "token", &backoff) + if !errors.Is(err, status.Error(codes.Internal, "send fail")) { + t.Errorf("expected send fail, got %v", err) + } + }) + + t.Run("StreamError", func(t *testing.T) { + mockStream := &mockSubscribeClient{} + mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + return mockStream, nil + } + mockStream.sendFunc = func(n *proto.Node) error { return nil } + mockStream.recvFunc = func() (*proto.Events, error) { + return nil, status.Error(codes.Internal, "stream fail") + } + err := c.subscribeAndProcess(ctx, "id", "token", &backoff) + if !errors.Is(err, status.Error(codes.Internal, "stream fail")) { + t.Errorf("expected stream fail, got %v", err) + } + }) +} + +func TestSubscribeEvents(t *testing.T) { + mockEventSvc := &mockEventServiceClient{} + c := &client{eventService: mockEventSvc} + + t.Run("ReturnsOnError", func(t *testing.T) { + mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + return nil, errors.New("fatal error") + } + err := c.SubscribeEvents(context.Background(), "id", "token") + if err == nil || err.Error() != "fatal error" { + t.Errorf("expected fatal error, got %v", err) + } + }) + + t.Run("RetryLoop", func(t *testing.T) { + oldB := initialBackoff + initialBackoff = 5 * time.Millisecond + defer func() { initialBackoff = oldB }() + + ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) + defer cancel() + + callCount := 0 + mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + callCount++ + return nil, status.Error(codes.Unavailable, "unavailable") + } + + err := c.SubscribeEvents(ctx, "id", "token") + if !errors.Is(err, context.DeadlineExceeded) && !errors.Is(err, context.Canceled) { + t.Errorf("expected timeout/canceled error, got %v", err) + } + if callCount <= 1 { + t.Errorf("expected multiple calls due to retry, got %d", callCount) + } + }) +} + +func TestCheckServerHealth(t *testing.T) { + mockHealth := &mockHealthClient{} + old := healthNewHealthClient + healthNewHealthClient = func(cc grpc.ClientConnInterface) grpc_health_v1.HealthClient { + return mockHealth + } + defer func() { healthNewHealthClient = old }() + + c := &client{} + + t.Run("Success", func(t *testing.T) { + mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { + return &grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_SERVING}, nil + } + err := c.CheckServerHealth(context.Background()) + if err != nil { + t.Errorf("expected nil error, got %v", err) + } + }) + + t.Run("Error", func(t *testing.T) { + mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { + return nil, errors.New("health fail") + } + err := c.CheckServerHealth(context.Background()) + if err == nil || err.Error() != "health check failed: health fail" { + t.Errorf("expected health fail error, got %v", err) + } + }) + + t.Run("NotServing", func(t *testing.T) { + mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { + return &grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_NOT_SERVING}, nil + } + err := c.CheckServerHealth(context.Background()) + if err == nil || err.Error() != "server not serving: NOT_SERVING" { + t.Errorf("expected not serving error, got %v", err) + } + }) +} + +func TestNew_Error(t *testing.T) { + old := grpcNewClient + grpcNewClient = func(target string, opts ...grpc.DialOption) (*grpc.ClientConn, error) { + return nil, errors.New("dial fail") + } + defer func() { grpcNewClient = old }() + + cli, err := New(&mockConfig{}, "localhost:1234", &mockRegistry{}) + if err == nil || err.Error() != "failed to connect to gRPC server at localhost:1234: dial fail" { + t.Errorf("expected dial fail error, got %v", err) + } + if cli != nil { + t.Errorf("expected nil client") + } +} + +func TestNew(t *testing.T) { + mockCfg := &mockConfig{} + mockReg := &mockRegistry{} + + cli, err := New(mockCfg, "localhost:1234", mockReg) + if err != nil { + t.Errorf("New() error = %v", err) + } + if cli == nil { + t.Fatal("New() returned nil client") + } + defer cli.Close() +} + +type mockConfig struct { + config.Config + domain string +} + +func (m *mockConfig) Domain() string { return m.domain } + +type mockRegistry struct { + registry.Registry + getFunc func(key registry.Key) (registry.Session, error) + getWithUserFunc func(user string, key registry.Key) (registry.Session, error) + updateFunc func(user string, oldKey, newKey registry.Key) error + getAllSessionFromUserFunc func(user string) []registry.Session +} + +func (m *mockRegistry) Get(key registry.Key) (registry.Session, error) { + return m.getFunc(key) +} +func (m *mockRegistry) GetWithUser(user string, key registry.Key) (registry.Session, error) { + return m.getWithUserFunc(user, key) +} +func (m *mockRegistry) Update(user string, oldKey, newKey registry.Key) error { + return m.updateFunc(user, oldKey, newKey) +} +func (m *mockRegistry) GetAllSessionFromUser(user string) []registry.Session { + return m.getAllSessionFromUserFunc(user) +} + +type mockSession struct { + registry.Session + lifecycleFunc func() lifecycle.Lifecycle + interactionFunc func() interaction.Interaction + detailFunc func() *types.Detail + slugFunc func() slug.Slug +} + +func (m *mockSession) Lifecycle() lifecycle.Lifecycle { return m.lifecycleFunc() } +func (m *mockSession) Interaction() interaction.Interaction { return m.interactionFunc() } +func (m *mockSession) Detail() *types.Detail { return m.detailFunc() } +func (m *mockSession) Slug() slug.Slug { return m.slugFunc() } + +type mockInteraction struct { + interaction.Interaction + redrawCalled bool +} + +func (m *mockInteraction) Redraw() { m.redrawCalled = true } + +type mockLifecycle struct { + lifecycle.Lifecycle + closeFunc func() error +} + +func (m *mockLifecycle) Close() error { return m.closeFunc() } + +type mockEventServiceClient struct { + proto.EventServiceClient + subscribeFunc func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) +} + +func (m *mockEventServiceClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { + return m.subscribeFunc(ctx, opts...) +} + +type mockSubscribeClient struct { + grpc.ClientStream + sendFunc func(*proto.Node) error + recvFunc func() (*proto.Events, error) +} + +func (m *mockSubscribeClient) Send(n *proto.Node) error { return m.sendFunc(n) } +func (m *mockSubscribeClient) Recv() (*proto.Events, error) { return m.recvFunc() } +func (m *mockSubscribeClient) Context() context.Context { return context.Background() } + +type mockUserServiceClient struct { + proto.UserServiceClient + checkFunc func(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) +} + +func (m *mockUserServiceClient) Check(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) { + return m.checkFunc(ctx, in, opts...) +} + +type mockHealthClient struct { + grpc_health_v1.HealthClient + checkFunc func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) +} + +func (m *mockHealthClient) Check(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { + return m.checkFunc(ctx, in, opts...) +} + +func TestProtoToTunnelType(t *testing.T) { + c := &client{} + tests := []struct { + name string + input proto.TunnelType + want types.TunnelType + wantErr bool + }{ + {"HTTP", proto.TunnelType_HTTP, types.TunnelTypeHTTP, false}, + {"TCP", proto.TunnelType_TCP, types.TunnelTypeTCP, false}, + {"Unknown", proto.TunnelType(999), types.TunnelTypeUNKNOWN, true}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := c.protoToTunnelType(tt.input) + if (err != nil) != tt.wantErr { + t.Errorf("protoToTunnelType() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("protoToTunnelType() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestIsConnectionError(t *testing.T) { + c := &client{} + tests := []struct { + name string + closing bool + err error + want bool + }{ + {"NilError", false, nil, false}, + {"Closing", true, io.EOF, false}, + {"EOF", false, io.EOF, true}, + {"Unavailable", false, status.Error(codes.Unavailable, "unavailable"), true}, + {"Canceled", false, status.Error(codes.Canceled, "canceled"), true}, + {"DeadlineExceeded", false, status.Error(codes.DeadlineExceeded, "deadline"), true}, + {"Internal", false, status.Error(codes.Internal, "internal"), false}, + {"WrappedEOF", false, errors.New("wrapped: " + io.EOF.Error()), false}, + } + + tests[7].err = fmt.Errorf("wrapped: %w", io.EOF) + tests[7].want = true + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c.closing = tt.closing + if got := c.isConnectionError(tt.err); got != tt.want { + t.Errorf("isConnectionError() = %v, want %v for error %v", got, tt.want, tt.err) + } + }) + } +} + +func TestGrowBackoff(t *testing.T) { + c := &client{} + tests := []struct { + name string + initial time.Duration + want time.Duration + }{ + {"NormalGrow", time.Second, 2 * time.Second}, + {"MaxLimit", 20 * time.Second, 30 * time.Second}, + {"AlreadyAtMax", 30 * time.Second, 30 * time.Second}, + {"OverMax", 40 * time.Second, 30 * time.Second}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + backoff := tt.initial + c.growBackoff(&backoff) + if backoff != tt.want { + t.Errorf("growBackoff() = %v, want %v", backoff, tt.want) + } + }) + } +} + +func TestWait(t *testing.T) { + c := &client{} + + t.Run("ZeroDuration", func(t *testing.T) { + err := c.wait(context.Background(), 0) + if err != nil { + t.Errorf("wait() zero duration error = %v", err) + } + }) + + t.Run("ContextCanceled", func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + err := c.wait(ctx, time.Minute) + if !errors.Is(err, context.Canceled) { + t.Errorf("wait() context canceled error = %v", err) + } + }) + + t.Run("Timeout", func(t *testing.T) { + start := time.Now() + err := c.wait(context.Background(), 10*time.Millisecond) + if err != nil { + t.Errorf("wait() timeout error = %v", err) + } + if time.Since(start) < 10*time.Millisecond { + t.Errorf("wait() returned too early") + } + }) +} From 32f8be2891899b9306494d7027ae56aefca173ff Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 15:41:00 +0700 Subject: [PATCH 16/47] test(version): add unit tests for version behavior --- internal/version/version_test.go | 84 ++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 internal/version/version_test.go diff --git a/internal/version/version_test.go b/internal/version/version_test.go new file mode 100644 index 0000000..f4873f5 --- /dev/null +++ b/internal/version/version_test.go @@ -0,0 +1,84 @@ +package version + +import ( + "fmt" + "testing" +) + +func TestVersionFunctions(t *testing.T) { + origVersion := Version + origBuildDate := BuildDate + origCommit := Commit + defer func() { + Version = origVersion + BuildDate = origBuildDate + Commit = origCommit + }() + + tests := []struct { + name string + version string + buildDate string + commit string + wantFull string + wantShort string + }{ + { + name: "Default dev version", + version: "dev", + buildDate: "unknown", + commit: "unknown", + wantFull: "tunnel_pls dev (commit: unknown, built: unknown)", + wantShort: "dev", + }, + { + name: "Release version", + version: "v1.0.0", + buildDate: "2026-01-23", + commit: "abcdef123", + wantFull: "tunnel_pls v1.0.0 (commit: abcdef123, built: 2026-01-23)", + wantShort: "v1.0.0", + }, + { + name: "Empty values", + version: "", + buildDate: "", + commit: "", + wantFull: "tunnel_pls (commit: , built: )", + wantShort: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + Version = tt.version + BuildDate = tt.buildDate + Commit = tt.commit + + gotFull := GetVersion() + if gotFull != tt.wantFull { + t.Errorf("GetVersion() = %q, want %q", gotFull, tt.wantFull) + } + + gotShort := GetShortVersion() + if gotShort != tt.wantShort { + t.Errorf("GetShortVersion() = %q, want %q", gotShort, tt.wantShort) + } + }) + } +} + +func TestGetVersion_Format(t *testing.T) { + v := "1.2.3" + c := "brainrot" + d := "now" + + Version = v + Commit = c + BuildDate = d + + expected := fmt.Sprintf("tunnel_pls %s (commit: %s, built: %s)", v, c, d) + if GetVersion() != expected { + t.Errorf("GetVersion() formatting mismatch") + } +} From 21179da4b58cc22e543f81cba20c14fd6a8649b1 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 15:52:27 +0700 Subject: [PATCH 17/47] refactor(session): reduce function parameters --- server/server.go | 11 ++++++++++- session/session.go | 29 ++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/server/server.go b/server/server.go index b6a66c1..0538d69 100644 --- a/server/server.go +++ b/server/server.go @@ -99,7 +99,16 @@ func (s *server) handleConnection(conn net.Conn) { cancel() } log.Println("SSH connection established:", sshConn.User()) - sshSession := session.New(s.randomizer, s.config, sshConn, forwardingReqs, chans, s.sessionRegistry, s.portRegistry, user) + sshSession := session.New(&session.Config{ + Randomizer: s.randomizer, + Config: s.config, + Conn: sshConn, + InitialReq: forwardingReqs, + SshChan: chans, + SessionRegistry: s.sessionRegistry, + PortRegistry: s.portRegistry, + User: user, + }) err = sshSession.Start() if err != nil { log.Printf("SSH session ended with error: %s", err.Error()) diff --git a/session/session.go b/session/session.go index c88f615..2e052d9 100644 --- a/session/session.go +++ b/session/session.go @@ -48,24 +48,35 @@ type session struct { registry registry.Registry } +type Config struct { + Randomizer random.Random + Config config.Config + Conn *ssh.ServerConn + InitialReq <-chan *ssh.Request + SshChan <-chan ssh.NewChannel + SessionRegistry registry.Registry + PortRegistry portUtil.Port + User string +} + var blockedReservedPorts = []uint16{1080, 1433, 1521, 1900, 2049, 3306, 3389, 5432, 5900, 6379, 8080, 8443, 9000, 9200, 27017} -func New(randomizer random.Random, config config.Config, conn *ssh.ServerConn, initialReq <-chan *ssh.Request, sshChan <-chan ssh.NewChannel, sessionRegistry registry.Registry, portRegistry portUtil.Port, user string) Session { +func New(conf *Config) Session { slugManager := slug.New() - forwarderManager := forwarder.New(config, slugManager, conn) - lifecycleManager := lifecycle.New(conn, forwarderManager, slugManager, portRegistry, sessionRegistry, user) - interactionManager := interaction.New(randomizer, config, slugManager, forwarderManager, sessionRegistry, user, lifecycleManager.Close) + forwarderManager := forwarder.New(conf.Config, slugManager, conf.Conn) + lifecycleManager := lifecycle.New(conf.Conn, forwarderManager, slugManager, conf.PortRegistry, conf.SessionRegistry, conf.User) + interactionManager := interaction.New(conf.Randomizer, conf.Config, slugManager, forwarderManager, conf.SessionRegistry, conf.User, lifecycleManager.Close) return &session{ - randomizer: randomizer, - config: config, - initialReq: initialReq, - sshChan: sshChan, + randomizer: conf.Randomizer, + config: conf.Config, + initialReq: conf.InitialReq, + sshChan: conf.SshChan, lifecycle: lifecycleManager, interaction: interactionManager, forwarder: forwarderManager, slug: slugManager, - registry: sessionRegistry, + registry: conf.SessionRegistry, } } From 14abac657943b3189523112c36366d06588e6ec9 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 19:03:01 +0700 Subject: [PATCH 18/47] test(session): add unit tests for session behavior --- session/session.go | 6 +- session/session_test.go | 1442 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 1446 insertions(+), 2 deletions(-) create mode 100644 session/session_test.go diff --git a/session/session.go b/session/session.go index 2e052d9..c27aceb 100644 --- a/session/session.go +++ b/session/session.go @@ -412,8 +412,10 @@ func readSSHString(reader io.Reader) (string, error) { return "", err } strBytes := make([]byte, length) - if _, err := reader.Read(strBytes); err != nil { - return "", err + if length > 0 { + if _, err := io.ReadFull(reader, strBytes); err != nil { + return "", err + } } return string(strBytes), nil } diff --git a/session/session_test.go b/session/session_test.go new file mode 100644 index 0000000..3d41d04 --- /dev/null +++ b/session/session_test.go @@ -0,0 +1,1442 @@ +package session + +import ( + "bytes" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/binary" + "encoding/pem" + "fmt" + "net" + "strconv" + "strings" + "testing" + "time" + "tunnel_pls/internal/config" + portUtil "tunnel_pls/internal/port" + "tunnel_pls/internal/registry" + "tunnel_pls/session/lifecycle" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/ssh" +) + +type mockRandom struct { + mock.Mock +} + +func (m *mockRandom) String(length int) (string, error) { + args := m.Called(length) + return args.String(0), args.Error(1) +} + +type mockConfig struct { + mock.Mock + config.Config +} + +func (m *mockConfig) Domain() string { return m.Called().String(0) } +func (m *mockConfig) SSHPort() string { return m.Called().String(0) } +func (m *mockConfig) Mode() types.ServerMode { + args := m.Called() + if args.Get(0) == nil { + return 0 + } + switch v := args.Get(0).(type) { + case types.ServerMode: + return v + case int: + return types.ServerMode(v) + default: + return types.ServerMode(args.Int(0)) + } +} +func (m *mockConfig) TLSEnabled() bool { return m.Called().Bool(0) } + +type mockRegistry struct { + mock.Mock + registry.Registry + removedKey types.SessionKey +} + +func (m *mockRegistry) Register(key types.SessionKey, session registry.Session) bool { + return m.Called(key, session).Bool(0) +} + +func (m *mockRegistry) Remove(key types.SessionKey) { + m.removedKey = key +} + +type mockPort struct { + mock.Mock +} + +func (m *mockPort) AddRange(startPort, endPort uint16) error { + return m.Called(startPort, endPort).Error(0) +} +func (m *mockPort) Unassigned() (uint16, bool) { + args := m.Called() + var port uint16 + if args.Get(0) != nil { + switch v := args.Get(0).(type) { + case int: + port = uint16(v) + case uint16: + port = v + case uint32: + port = uint16(v) + case int32: + port = uint16(v) + case float64: + port = uint16(v) + default: + port = uint16(args.Int(0)) + } + } + return port, args.Bool(1) +} +func (m *mockPort) SetStatus(port uint16, assigned bool) error { + return m.Called(port, assigned).Error(0) +} +func (m *mockPort) Claim(port uint16) bool { + return m.Called(port).Bool(0) +} + +type mockSSHConn struct { + ssh.Conn + mock.Mock +} + +func (m *mockSSHConn) Wait() error { + return m.Called().Error(0) +} + +func (m *mockSSHConn) Close() error { + return m.Called().Error(0) +} + +func (m *mockSSHConn) User() string { + return m.Called().String(0) +} + +type mockSSHChannel struct { + ssh.Channel + mock.Mock +} + +func (m *mockSSHChannel) Close() error { + return m.Called().Error(0) +} + +type mockNewChannel struct { + ssh.NewChannel + mock.Mock +} + +func (m *mockNewChannel) Accept() (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called() + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +func setupSSH(t *testing.T) (sConn *ssh.ServerConn, sReqs <-chan *ssh.Request, sChans <-chan ssh.NewChannel, cConn ssh.Conn, cleanup func()) { + l, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + + key, err := rsa.GenerateKey(rand.Reader, 2048) + require.NoError(t, err) + + privDER := x509.MarshalPKCS1PrivateKey(key) + privBlock := pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: privDER, + } + pk, err := ssh.ParsePrivateKey(pem.EncodeToMemory(&privBlock)) + require.NoError(t, err) + + sCfg := &ssh.ServerConfig{ + NoClientAuth: true, + } + sCfg.AddHostKey(pk) + + cCfg := &ssh.ClientConfig{ + User: "test", + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + Timeout: 5 * time.Second, + } + + var sConnObj *ssh.ServerConn + var sChansChan <-chan ssh.NewChannel + var sReqsChan <-chan *ssh.Request + + errChan := make(chan error, 1) + go func() { + conn, err := l.Accept() + if err != nil { + errChan <- err + return + } + sConnObj, sChansChan, sReqsChan, err = ssh.NewServerConn(conn, sCfg) + errChan <- err + }() + + conn, err := net.Dial("tcp", l.Addr().String()) + require.NoError(t, err) + cConnObj, cChans, cReqs, err := ssh.NewClientConn(conn, "pipe", cCfg) + require.NoError(t, err) + + go ssh.DiscardRequests(cReqs) + go func() { + for newChan := range cChans { + if newChan.ChannelType() == "session" { + continue + } + newChan.Reject(ssh.Prohibited, "") + } + }() + + select { + case err := <-errChan: + require.NoError(t, err) + case <-time.After(5 * time.Second): + t.Fatal("SSH handshake timed out") + } + + return sConnObj, sReqsChan, sChansChan, cConnObj, func() { + cConnObj.Close() + sConnObj.Close() + l.Close() + } +} + +func TestNew(t *testing.T) { + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: &ssh.ServerConn{}, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + + s := New(conf) + assert.NotNil(t, s) + assert.NotNil(t, s.Lifecycle()) + assert.NotNil(t, s.Interaction()) + assert.NotNil(t, s.Forwarder()) + assert.NotNil(t, s.Slug()) +} + +func TestDetail(t *testing.T) { + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: &ssh.ServerConn{}, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + + s := New(conf).(*session) + s.forwarder.SetType(types.TunnelTypeHTTP) + s.slug.Set("test-slug") + s.lifecycle.SetStatus(types.SessionStatusRUNNING) + + detail := s.Detail() + assert.Equal(t, "HTTP", detail.ForwardingType) + assert.Equal(t, "test-slug", detail.Slug) + assert.Equal(t, "testuser", detail.UserID) + assert.True(t, detail.Active) + + s.forwarder.SetType(types.TunnelTypeTCP) + detail = s.Detail() + assert.Equal(t, "TCP", detail.ForwardingType) + + s.forwarder.SetType(types.TunnelTypeUNKNOWN) + detail = s.Detail() + assert.Equal(t, "UNKNOWN", detail.ForwardingType) +} + +func TestIsBlockedPort(t *testing.T) { + tests := []struct { + port uint16 + expected bool + }{ + {80, false}, + {443, false}, + {22, true}, + {1023, true}, + {1024, false}, + {1080, true}, + {3306, true}, + {8080, true}, + {0, false}, + } + + for _, tt := range tests { + t.Run(fmt.Sprintf("Port %d", tt.port), func(t *testing.T) { + assert.Equal(t, tt.expected, isBlockedPort(tt.port)) + }) + } +} + +func TestReadSSHString(t *testing.T) { + tests := []struct { + name string + input []byte + want string + wantErr bool + }{ + { + name: "valid string", + input: append([]byte{0, 0, 0, 4}, []byte("test")...), + want: "test", + wantErr: false, + }, + { + name: "empty string", + input: []byte{0, 0, 0, 0}, + want: "", + wantErr: false, + }, + { + name: "short length", + input: []byte{0, 0, 0}, + want: "", + wantErr: true, + }, + { + name: "missing payload", + input: []byte{0, 0, 0, 4, 'a', 'b'}, + want: "", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := readSSHString(bytes.NewReader(tt.input)) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, tt.want, got) + } + }) + } +} + +func TestHandleGlobalRequest(t *testing.T) { + _, sReqs, _, cConn, cleanup := setupSSH(t) + defer cleanup() + + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: &ssh.ServerConn{}, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + + done := make(chan struct{}) + go func() { + _ = s.HandleGlobalRequest(sReqs) + close(done) + }() + + tests := []struct { + name string + reqType string + payload []byte + wantReply bool + expected bool + }{ + {"shell", "shell", nil, true, true}, + {"pty-req", "pty-req", nil, true, true}, + {"window-change valid", "window-change", make([]byte, 16), true, true}, + {"window-change invalid", "window-change", make([]byte, 4), true, false}, + {"unknown", "unknown", nil, true, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ok, _, err := cConn.SendRequest(tt.reqType, tt.wantReply, tt.payload) + assert.NoError(t, err) + assert.Equal(t, tt.expected, ok) + }) + } + + cConn.Close() + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("HandleGlobalRequest timed out after cConn.Close()") + } +} + +func TestHandleTCPIPForward_Table(t *testing.T) { + setup := func(t *testing.T) (*session, *mockRegistry, *mockPort, *mockRandom, *ssh.ServerConn, <-chan *ssh.Request, ssh.Conn, func()) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + mPort := &mockPort{} + mRandom := &mockRandom{} + conf := &Config{ + Randomizer: mRandom, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: mPort, + User: "testuser", + } + s := New(conf).(*session) + return s, mRegistry, mPort, mRandom, sConn, sReqs, cConn, cleanup + } + + t.Run("HTTP Forward Success", func(t *testing.T) { + s, mRegistry, _, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("test-slug-1234567890", nil) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.NoError(t, err) + assert.Equal(t, "test-slug-1234567890", s.slug.String()) + }) + + t.Run("TCP Forward Success", func(t *testing.T) { + s, mRegistry, mPort, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 0) + + mPort.On("Unassigned").Return(uint16(12345), true) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.NoError(t, err) + assert.Equal(t, uint16(12345), s.forwarder.ForwardedPort()) + }) + + t.Run("Invalid Payload", func(t *testing.T) { + s, _, _, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + payload := []byte{0, 0, 0} + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + }) + + t.Run("Blocked Port", func(t *testing.T) { + s, _, _, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 22) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + }) +} + +func TestStart_Table(t *testing.T) { + setup := func(t *testing.T) (*session, *Config, ssh.Conn, func()) { + sConn, sReqs, sChans, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + mPort := &mockPort{} + mRandom := &mockRandom{} + mConfig := &mockConfig{} + mConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mConfig.On("Domain").Return("example.com") + mConfig.On("SSHPort").Return("2222") + + conf := &Config{ + Randomizer: mRandom, + Config: mConfig, + Conn: sConn, + InitialReq: sReqs, + SshChan: sChans, + SessionRegistry: mRegistry, + PortRegistry: mPort, + User: "testuser", + } + s := New(conf).(*session) + return s, conf, cConn, cleanup + } + + t.Run("Full Success TCP", func(t *testing.T) { + s, conf, cConn, cleanup := setup(t) + defer cleanup() + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 0) + + conf.PortRegistry.(*mockPort).On("Claim", mock.Anything).Return(true) + conf.PortRegistry.(*mockPort).On("Unassigned").Return(uint16(0), true) + conf.PortRegistry.(*mockPort).On("SetStatus", mock.AnythingOfType("uint16"), mock.Anything).Return(nil) + conf.SessionRegistry.(*mockRegistry).On("Register", mock.Anything, mock.Anything).Return(true) + conf.Config.(*mockConfig).On("TLSEnabled").Return(false) + go func() { + time.Sleep(200 * time.Millisecond) + ch, reqs, err := cConn.OpenChannel("session", nil) + if err == nil { + go ssh.DiscardRequests(reqs) + time.Sleep(200 * time.Millisecond) + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + time.Sleep(200 * time.Millisecond) + ch.Write([]byte("q")) + time.Sleep(100 * time.Millisecond) + ch.Close() + } + cConn.Close() + }() + + err := s.Start() + assert.NoError(t, err) + }) + + t.Run("Headless mode success", func(t *testing.T) { + s, conf, cConn, cleanup := setup(t) + defer cleanup() + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + conf.Randomizer.(*mockRandom).On("String", 20).Return("headless-slug", nil) + conf.SessionRegistry.(*mockRegistry).On("Register", mock.Anything, mock.Anything).Return(true) + + go func() { + time.Sleep(600 * time.Millisecond) + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + time.Sleep(100 * time.Millisecond) + cConn.Close() + }() + + err := s.Start() + assert.NoError(t, err) + }) + + t.Run("Missing Forward Request", func(t *testing.T) { + s, _, cConn, cleanup := setup(t) + defer cleanup() + + go func() { + time.Sleep(1200 * time.Millisecond) + cConn.Close() + }() + + err := s.Start() + assert.Error(t, err) + assert.Contains(t, err.Error(), "no forwarding Request") + }) + + t.Run("Unauthorized Headless", func(t *testing.T) { + s, conf, cConn, cleanup := setup(t) + defer cleanup() + + conf.User = "UNAUTHORIZED" + s = New(conf).(*session) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + go func() { + time.Sleep(600 * time.Millisecond) + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + err := s.Start() + assert.Error(t, err) + }) +} + +func TestForwardingFailures(t *testing.T) { + setup := func(t *testing.T) (*session, *mockRegistry, *mockPort, *mockRandom, *ssh.ServerConn, <-chan *ssh.Request, ssh.Conn, func()) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + mPort := &mockPort{} + mRandom := &mockRandom{} + conf := &Config{ + Randomizer: mRandom, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: mPort, + User: "testuser", + } + s := New(conf).(*session) + return s, mRegistry, mPort, mRandom, sConn, sReqs, cConn, cleanup + } + + t.Run("HTTP Registration Failed", func(t *testing.T) { + s, mRegistry, _, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("test-slug", nil) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(false) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + }) + + t.Run("TCP Port Claim Failed", func(t *testing.T) { + s, _, mPort, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(false) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 1234) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(2 * time.Second): + t.Fatal("timed out waiting for tcpip-forward request") + } + + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + }) + + t.Run("HTTP Randomizer Error", func(t *testing.T) { + s, _, _, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("", fmt.Errorf("random error")) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + assert.Contains(t, err.Error(), "random error") + }) + + t.Run("Port Registry No Port", func(t *testing.T) { + s, _, mPort, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Unassigned").Return(uint16(0), false) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 0) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + assert.Contains(t, err.Error(), "no available port") + }) + + t.Run("Port too large", func(t *testing.T) { + s, _, _, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 70000) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + assert.Contains(t, err.Error(), "port is larger than allowed") + }) + + t.Run("TCP Registration Failed", func(t *testing.T) { + s, mRegistry, mPort, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(false) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 1234) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + assert.Contains(t, err.Error(), "Failed to register TunnelTypeTCP client") + }) + + t.Run("Finalize Forwarding Failure", func(t *testing.T) { + s, mRegistry, _, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("test-slug", nil) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], 80) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + cConn.Close() + time.Sleep(50 * time.Millisecond) + + err := s.HandleTCPIPForward(req) + assert.Error(t, err) + }) + + t.Run("TCP Listen Failure", func(t *testing.T) { + s, mRegistry, mPort, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + + l, err := net.Listen("tcp", "0.0.0.0:0") + if err != nil { + t.Fatal(err) + } + defer l.Close() + _, portStr, _ := net.SplitHostPort(l.Addr().String()) + port, _ := strconv.Atoi(portStr) + + payload := make([]byte, 4+9+4) + binary.BigEndian.PutUint32(payload[0:4], 9) + copy(payload[4:13], "localhost") + binary.BigEndian.PutUint32(payload[13:17], uint32(port)) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + }() + + req := <-sReqs + err = s.HandleTCPIPForward(req) + assert.Error(t, err) + assert.Contains(t, err.Error(), "is already in use or restricted") + }) +} + +func TestSetupInteractiveMode_Error(t *testing.T) { + sConn, _, sChans, _, cleanup := setupSSH(t) + defer cleanup() + + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: make(chan *ssh.Request), + SshChan: sChans, + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + + mockChan := &mockNewChanFail{} + err := s.setupInteractiveMode(mockChan) + if err == nil { + t.Error("expected error, got nil") + } +} + +type mockNewChanFail struct { + ssh.NewChannel +} + +func (m *mockNewChanFail) Accept() (ssh.Channel, <-chan *ssh.Request, error) { + return nil, nil, fmt.Errorf("accept failed") +} + +func TestWaitForTCPIPForward_EdgeCases(t *testing.T) { + t.Run("Wrong Request Type", func(t *testing.T) { + _, sReqs, _, cConn, cleanup := setupSSH(t) + defer cleanup() + + s := &session{initialReq: sReqs} + + go func() { + _, _, _ = cConn.SendRequest("not-tcpip-forward", true, nil) + }() + + req := s.waitForTCPIPForward() + if req != nil { + t.Error("expected nil request") + } + }) + + t.Run("Channel Closed", func(t *testing.T) { + initialReq := make(chan *ssh.Request) + s := &session{initialReq: initialReq} + close(initialReq) + + req := s.waitForTCPIPForward() + if req != nil { + t.Error("expected nil request") + } + }) +} + +func TestSetupSessionMode_ChannelClosed(t *testing.T) { + sshChan := make(chan ssh.NewChannel) + s := &session{sshChan: sshChan} + close(sshChan) + + err := s.setupSessionMode() + if err != nil { + t.Errorf("unexpected error: %v", err) + } +} + +func TestStart_SetupSessionModeError(t *testing.T) { + sshChan := make(chan ssh.NewChannel, 1) + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: &ssh.ServerConn{}, + InitialReq: make(chan *ssh.Request), + SshChan: sshChan, + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + + mockChan := &mockNewChanFail{} + sshChan <- mockChan + + err := s.Start() + if err == nil { + t.Error("expected error, got nil") + } +} + +func TestWaitForSessionEnd_Error(t *testing.T) { + mConn := &mockSSHConn{} + mConn.On("Wait").Return(fmt.Errorf("wait error")) + mConn.On("Close").Return(nil) + + mForwarder := &mockLifecycleForwarder{} + mForwarder.On("TunnelType").Return(types.TunnelTypeTCP) + mForwarder.On("ForwardedPort").Return(uint16(80)) + mForwarder.On("Close").Return(fmt.Errorf("close error")) + + mSlug := &mockLifecycleSlug{} + mSlug.On("String").Return("slug") + + mPort := &mockPort{} + mPort.On("SetStatus", mock.Anything, mock.Anything).Return(nil) + + mRegistry := &mockRegistry{} + mRegistry.On("Remove", mock.Anything).Return() + + l := lifecycle.New(mConn, mForwarder, mSlug, mPort, mRegistry, "testuser") + s := &session{ + lifecycle: l, + } + + err := s.waitForSessionEnd() + assert.Error(t, err) +} + +type mockLifecycleForwarder struct { + mock.Mock + lifecycle.Forwarder +} + +func (m *mockLifecycleForwarder) TunnelType() types.TunnelType { + return m.Called().Get(0).(types.TunnelType) +} +func (m *mockLifecycleForwarder) ForwardedPort() uint16 { + args := m.Called() + if args.Get(0) == nil { + return 0 + } + switch v := args.Get(0).(type) { + case uint16: + return v + case uint32: + return uint16(v) + case uint64: + return uint16(v) + case uint8: + return uint16(v) + case uint: + return uint16(v) + case int: + return uint16(v) + case int8: + return uint16(v) + case int16: + return uint16(v) + case int32: + return uint16(v) + case int64: + return uint16(v) + case float32: + return uint16(v) + case float64: + return uint16(v) + default: + return uint16(args.Int(0)) + } +} +func (m *mockLifecycleForwarder) Close() error { + return m.Called().Error(0) +} + +type mockLifecycleSlug struct { + mock.Mock +} + +func (m *mockLifecycleSlug) String() string { return m.Called().String(0) } +func (m *mockLifecycleSlug) Set(slug string) { + m.Called(slug) +} + +func TestHandleMissingForwardRequest(t *testing.T) { + mConn := &mockSSHConn{} + mConfig := &mockConfig{} + mConfig.On("Domain").Return("example.com") + mConfig.On("SSHPort").Return("2222") + mConn.On("Close").Return(nil) + + conf := &Config{ + Randomizer: &mockRandom{}, + Config: mConfig, + Conn: &ssh.ServerConn{Conn: mConn}, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + + s := New(conf).(*session) + + err := s.handleMissingForwardRequest() + if err == nil { + t.Error("expected error, got nil") + } +} + +func TestParseForwardPayload_Errors(t *testing.T) { + s := &session{} + + t.Run("Short Address", func(t *testing.T) { + _, _, err := s.parseForwardPayload(bytes.NewReader([]byte{0, 0, 0, 4})) + if err == nil { + t.Error("expected error, got nil") + } + }) + + t.Run("Short Port", func(t *testing.T) { + payload := append([]byte{0, 0, 0, 4}, []byte("addr")...) + _, _, err := s.parseForwardPayload(bytes.NewReader(payload)) + if err == nil { + t.Error("expected error, got nil") + } + }) + + t.Run("Blocked Port", func(t *testing.T) { + payload := append([]byte{0, 0, 0, 4}, []byte("addr")...) + portBuf := make([]byte, 4) + binary.BigEndian.PutUint32(portBuf, 22) + payload = append(payload, portBuf...) + _, _, err := s.parseForwardPayload(bytes.NewReader(payload)) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "port is block") { + t.Errorf("expected error to contain %q, got %q", "port is block", err.Error()) + } + }) +} + +func TestDenyForwardingRequest_TunnelNotSetupYet(t *testing.T) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + defer cleanup() + + mRegistry := &mockRegistry{} + mPort := &mockPort{} + mRandom := &mockRandom{} + conf := &Config{ + Randomizer: mRandom, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: sReqs, + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: mPort, + User: "testuser", + } + s := New(conf).(*session) + + go func() { + _, _, _ = cConn.SendRequest("tcpip-forward", true, nil) + }() + + var req *ssh.Request + select { + case req = <-sReqs: + case <-time.After(time.Second): + t.Fatal("timeout") + } + + key := &types.SessionKey{Id: "", Type: types.TunnelTypeUNKNOWN} + err := s.denyForwardingRequest(req, key, &mockCloser{}, "test error") + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "test error") { + t.Errorf("expected error to contain %q, got %q", "test error", err.Error()) + } + assert.Equal(t, *key, mRegistry.removedKey) +} + +func TestDenyForwardingRequest_Full(t *testing.T) { + setup := func(t *testing.T) (*session, *mockRegistry, *ssh.ServerConn, <-chan *ssh.Request, ssh.Conn, func()) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: sReqs, + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + return s, mRegistry, sConn, sReqs, cConn, cleanup + } + + getReq := func(t *testing.T, client ssh.Conn, serverReqs <-chan *ssh.Request) *ssh.Request { + go func() { + _, _, _ = client.SendRequest("tcpip-forward", true, nil) + }() + select { + case req, ok := <-serverReqs: + if !ok { + t.Fatal("channel closed") + } + return req + case <-time.After(2 * time.Second): + t.Fatal("timeout getting request") + return nil + } + } + + t.Run("All Success", func(t *testing.T) { + s, mRegistry, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + req := getReq(t, cConn, sReqs) + key := &types.SessionKey{Id: "test", Type: types.TunnelTypeHTTP} + + s.slug.Set("test") + s.forwarder.SetType(types.TunnelTypeHTTP) + + mCloser := &mockCloser{} + err := s.denyForwardingRequest(req, key, mCloser, "error") + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "error") { + t.Errorf("expected error to contain %q, got %q", "error", err.Error()) + } + assert.Equal(t, *key, mRegistry.removedKey) + }) + + t.Run("Listener Close error", func(t *testing.T) { + s, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + req := getReq(t, cConn, sReqs) + mCloser := &mockCloser{err: fmt.Errorf("close error")} + err := s.denyForwardingRequest(req, nil, mCloser, "error") + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "close listener: close error") { + t.Errorf("expected error to contain %q, got %q", "close listener: close error", err.Error()) + } + }) + + t.Run("Reply error", func(t *testing.T) { + s, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + req := getReq(t, cConn, sReqs) + cConn.Close() + time.Sleep(100 * time.Millisecond) + + err := s.denyForwardingRequest(req, nil, nil, "error") + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "reply request") { + t.Errorf("expected error to contain %q, got %q", "reply request", err.Error()) + } + }) + + t.Run("Lifecycle Close error", func(t *testing.T) { + s, _, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + req := getReq(t, cConn, sReqs) + mLife := &mockLifecycle{closeErr: fmt.Errorf("life close error")} + s.lifecycle = mLife + + err := s.denyForwardingRequest(req, nil, nil, "error") + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "close session: life close error") { + t.Errorf("expected error to contain %q, got %q", "close session: life close error", err.Error()) + } + }) +} + +func TestHandleTCPForward_Failures(t *testing.T) { + setup := func(t *testing.T) (*session, *mockRegistry, *mockPort, *ssh.ServerConn, <-chan *ssh.Request, ssh.Conn, func()) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + mPort := &mockPort{} + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: sReqs, + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: mPort, + User: "testuser", + } + s := New(conf).(*session) + return s, mRegistry, mPort, sConn, sReqs, cConn, cleanup + } + + getReq := func(t *testing.T, client ssh.Conn, serverReqs <-chan *ssh.Request) *ssh.Request { + go func() { + _, _, _ = client.SendRequest("tcpip-forward", true, nil) + }() + select { + case req, ok := <-serverReqs: + if !ok { + t.Fatal("channel closed") + } + return req + case <-time.After(2 * time.Second): + t.Fatal("timeout getting request") + return nil + } + } + + t.Run("Port Claim fail", func(t *testing.T) { + s, _, mPort, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(false) + err := s.HandleTCPForward(getReq(t, cConn, sReqs), "localhost", 1234) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "already in use") { + t.Errorf("expected error to contain %q, got %q", "already in use", err.Error()) + } + }) + + t.Run("Listen fail", func(t *testing.T) { + s, _, mPort, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + l, err := net.Listen("tcp", "0.0.0.0:0") + if err != nil { + t.Fatal(err) + } + defer l.Close() + port := uint16(l.Addr().(*net.TCPAddr).Port) + + err = s.HandleTCPForward(getReq(t, cConn, sReqs), "localhost", port) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "already in use") { + t.Errorf("expected error to contain %q, got %q", "already in use", err.Error()) + } + }) + + t.Run("Registry Register fail", func(t *testing.T) { + s, mRegistry, mPort, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(false) + err := s.HandleTCPForward(getReq(t, cConn, sReqs), "localhost", 0) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "Failed to register") { + t.Errorf("expected error to contain %q, got %q", "Failed to register", err.Error()) + } + }) + + t.Run("Finalize fail (Reply fail)", func(t *testing.T) { + s, mRegistry, mPort, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mPort.On("Claim", mock.Anything).Return(true) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + req := getReq(t, cConn, sReqs) + cConn.Close() + time.Sleep(100 * time.Millisecond) + + err := s.HandleTCPForward(req, "localhost", 0) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "Failed to finalize forwarding") { + t.Errorf("expected error to contain %q, got %q", "Failed to finalize forwarding", err.Error()) + } + }) +} + +func TestHandleHTTPForward_Failures(t *testing.T) { + setup := func(t *testing.T) (*session, *mockRegistry, *mockRandom, *ssh.ServerConn, <-chan *ssh.Request, ssh.Conn, func()) { + sConn, sReqs, _, cConn, cleanup := setupSSH(t) + mRegistry := &mockRegistry{} + mRandom := &mockRandom{} + s := New(&Config{ + Randomizer: mRandom, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: sReqs, + SshChan: make(chan ssh.NewChannel), + SessionRegistry: mRegistry, + PortRegistry: &mockPort{}, + User: "testuser", + }).(*session) + return s, mRegistry, mRandom, sConn, sReqs, cConn, cleanup + } + + getReq := func(t *testing.T, client ssh.Conn, serverReqs <-chan *ssh.Request) *ssh.Request { + go func() { _, _, _ = client.SendRequest("tcpip-forward", true, nil) }() + return <-serverReqs + } + + t.Run("Random fail", func(t *testing.T) { + s, _, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("", fmt.Errorf("random error")) + err := s.HandleHTTPForward(getReq(t, cConn, sReqs), 80) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "Failed to create slug") { + t.Errorf("expected error to contain %q, got %q", "Failed to create slug", err.Error()) + } + }) + + t.Run("Register fail", func(t *testing.T) { + s, mRegistry, mRandom, _, sReqs, cConn, cleanup := setup(t) + defer cleanup() + mRandom.On("String", 20).Return("slug", nil) + mRegistry.On("Register", mock.Anything, mock.Anything).Return(false) + err := s.HandleHTTPForward(getReq(t, cConn, sReqs), 80) + if err == nil { + t.Error("expected error, got nil") + } else if !strings.Contains(err.Error(), "Failed to register") { + t.Errorf("expected error to contain %q, got %q", "Failed to register", err.Error()) + } + }) +} + +func TestHandleGlobalRequest_Failures(t *testing.T) { + _, sReqs, _, cConn, cleanup := setupSSH(t) + defer cleanup() + + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: &ssh.ServerConn{}, + InitialReq: make(chan *ssh.Request), + SshChan: make(chan ssh.NewChannel), + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + + done := make(chan struct{}) + go func() { + _ = s.HandleGlobalRequest(sReqs) + close(done) + }() + + tests := []struct { + name string + reqType string + payload []byte + wantReply bool + expected bool + }{ + {"shell", "shell", nil, true, true}, + {"pty-req", "pty-req", nil, true, true}, + {"window-change valid", "window-change", make([]byte, 16), true, true}, + {"window-change invalid", "window-change", make([]byte, 4), true, false}, + {"unknown", "unknown", nil, true, false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ok, _, err := cConn.SendRequest(tt.reqType, tt.wantReply, tt.payload) + assert.NoError(t, err) + assert.Equal(t, tt.expected, ok) + }) + } + + cConn.Close() + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("HandleGlobalRequest timed out after cConn.Close()") + } +} + +func TestSetupInteractiveMode_GlobalRequestError(t *testing.T) { + sConn, _, sChans, _, cleanup := setupSSH(t) + defer cleanup() + + conf := &Config{ + Randomizer: &mockRandom{}, + Config: &mockConfig{}, + Conn: sConn, + InitialReq: make(chan *ssh.Request), + SshChan: sChans, + SessionRegistry: &mockRegistry{}, + PortRegistry: &mockPort{}, + User: "testuser", + } + s := New(conf).(*session) + + mockChan := &mockNewChanFail{} + err := s.setupInteractiveMode(mockChan) + if err == nil { + t.Error("expected error, got nil") + } +} + +type mockCloser struct { + err error +} + +func (m *mockCloser) Close() error { return m.err } + +type mockLifecycle struct { + lifecycle.Lifecycle + closeErr error + conn ssh.Conn + user string +} + +func (m *mockLifecycle) Close() error { return m.closeErr } +func (m *mockLifecycle) Connection() ssh.Conn { return m.conn } +func (m *mockLifecycle) User() string { return m.user } +func (m *mockLifecycle) IsActive() bool { return false } +func (m *mockLifecycle) PortRegistry() portUtil.Port { return nil } +func (m *mockLifecycle) SetChannel(ch ssh.Channel) {} +func (m *mockLifecycle) SetStatus(status types.SessionStatus) {} +func (m *mockLifecycle) StartedAt() time.Time { return time.Time{} } From 1dc929cc25b3c99f4eef74af66a151818367c9a0 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 19:17:13 +0700 Subject: [PATCH 19/47] ci: sonarqube add linting --- .gitea/workflows/sonarqube.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index 77d4cf4..d0c6ae4 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -23,8 +23,22 @@ jobs: - name: Install dependencies run: go mod tidy + - name: Run go vet + run: go vet ./... 2>&1 | tee vet-results.txt + - name: Run tests with coverage - run: go test ./... -coverprofile=coverage -json > test-results.json + run: | + go test ./... -v -coverprofile=coverage + + - name: Run GolangCI-Lint Analysis + uses: golangci/golangci-lint-action@v9 + with: + skip-cache: true + version: v2.6 + args: > + --issues-exit-code=0 + --output.text.path=stdout + --output.checkstyle.path=golangci-lint-report.xml - name: Set SonarQube project key run: | @@ -49,5 +63,6 @@ jobs: -Dsonar.go.coverage.reportPaths=coverage -Dsonar.test.inclusions=**/*_test.go -Dsonar.test.exclusions=**/vendor/** - -Dsonar.exclusions=**/*_test.go,**/vendor/** - -Dsonar.go.tests.reportPaths=test-results.json \ No newline at end of file + -Dsonar.exclusions=**/*_test.go,**/vendor/**,**/golangci-lint-report.xml + -Dsonar.go.govet.reportPaths=vet-results.txt + -Dsonar.go.golangci-lint.reportPaths=golangci-lint-report.xml \ No newline at end of file From efdfc4ce95cce26cbbe5b0dd36185356af70fc39 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 20:05:40 +0700 Subject: [PATCH 20/47] chore: remove unused headerBuf variable --- internal/http/stream/stream.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/http/stream/stream.go b/internal/http/stream/stream.go index dcc09f9..d339474 100644 --- a/internal/http/stream/stream.go +++ b/internal/http/stream/stream.go @@ -30,7 +30,6 @@ type http struct { remoteAddr net.Addr writer io.Writer reader io.Reader - headerBuf []byte buf []byte respHeader header.ResponseHeader reqHeader header.RequestHeader From e796ab5328f4e373cb9715409a232cfa2f1181a2 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 20:21:47 +0700 Subject: [PATCH 21/47] fix: handle error return values for privateKeyFile.Close and pubKeyFile.Close --- internal/key/key.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/key/key.go b/internal/key/key.go index 682a244..b1c387a 100644 --- a/internal/key/key.go +++ b/internal/key/key.go @@ -5,6 +5,7 @@ import ( "crypto/rsa" "crypto/x509" "encoding/pem" + "errors" "io" "log" "os" @@ -26,6 +27,7 @@ var ( ) func GenerateSSHKeyIfNotExist(keyPath string) error { + var errGroup = make([]error, 0) if _, err := os.Stat(keyPath); err == nil { log.Printf("SSH key already exists at %s", keyPath) return nil @@ -52,7 +54,9 @@ func GenerateSSHKeyIfNotExist(keyPath string) error { if err != nil { return err } - defer privateKeyFile.Close() + defer func(privateKeyFile *os.File) { + errGroup = append(errGroup, privateKeyFile.Close()) + }(privateKeyFile) if err := pemEncode(privateKeyFile, privateKeyPEM); err != nil { return err @@ -68,7 +72,9 @@ func GenerateSSHKeyIfNotExist(keyPath string) error { if err != nil { return err } - defer pubKeyFile.Close() + defer func(pubKeyFile *os.File) { + errGroup = append(errGroup, pubKeyFile.Close()) + }(pubKeyFile) _, err = pubKeyWrite(pubKeyFile, ssh.MarshalAuthorizedKey(publicKey)) if err != nil { @@ -76,5 +82,5 @@ func GenerateSSHKeyIfNotExist(keyPath string) error { } log.Printf("SSH key pair generated successfully at %s and %s", keyPath, pubKeyPath) - return nil + return errors.Join(errGroup...) } From 8b8437303636fcfc2ff1c54102b6bbde81b09f97 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 20:28:11 +0700 Subject: [PATCH 22/47] fix: remove unnecessary use of fmt.Sprintf --- session/session.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/session/session.go b/session/session.go index c27aceb..926aebf 100644 --- a/session/session.go +++ b/session/session.go @@ -126,7 +126,7 @@ func (s *session) Start() error { } if s.shouldRejectUnauthorized() { - return s.denyForwardingRequest(tcpipReq, nil, nil, fmt.Sprintf("headless forwarding only allowed on node mode")) + return s.denyForwardingRequest(tcpipReq, nil, nil, "headless forwarding only allowed on node mode") } if err := s.HandleTCPIPForward(tcpipReq); err != nil { From 24b9872aa487e2648bbfd30513049fa92db62f32 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 20:31:27 +0700 Subject: [PATCH 23/47] fix: corrected defer usage to pass buffer pointer --- session/forwarder/forwarder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index c602565..7ea47b4 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -58,7 +58,7 @@ func New(config config.Config, slug slug.Slug, conn ssh.Conn) Forwarder { func (f *forwarder) copyWithBuffer(dst io.Writer, src io.Reader) (written int64, err error) { buf := f.bufferPool.Get().([]byte) - defer f.bufferPool.Put(buf) + defer f.bufferPool.Put(&buf) return io.CopyBuffer(dst, src, buf) } From d0e052524c16b55d4566e6082e3c3497a2ac8fe3 Mon Sep 17 00:00:00 2001 From: bagas Date: Fri, 23 Jan 2026 23:51:58 +0700 Subject: [PATCH 24/47] refactor: decouple application startup logic from main --- internal/bootstrap/bootstrap.go | 198 ++++++++++++++++++++++++++++++++ internal/config/config.go | 3 + internal/config/loader.go | 5 + main.go | 161 +------------------------- server/server.go | 1 - server/server_test.go | 1 + session/lifecycle/lifecycle.go | 8 +- session/session.go | 1 - 8 files changed, 214 insertions(+), 164 deletions(-) create mode 100644 internal/bootstrap/bootstrap.go diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go new file mode 100644 index 0000000..77ed6e8 --- /dev/null +++ b/internal/bootstrap/bootstrap.go @@ -0,0 +1,198 @@ +package bootstrap + +import ( + "context" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" + "tunnel_pls/internal/config" + "tunnel_pls/internal/grpc/client" + "tunnel_pls/internal/key" + "tunnel_pls/internal/port" + "tunnel_pls/internal/random" + "tunnel_pls/internal/registry" + "tunnel_pls/internal/transport" + "tunnel_pls/internal/version" + "tunnel_pls/server" + "tunnel_pls/types" + + "golang.org/x/crypto/ssh" +) + +type Bootstrap struct { + Randomizer random.Random + Config config.Config + SessionRegistry registry.Registry + Port port.Port +} + +func New() (*Bootstrap, error) { + conf, err := config.MustLoad() + if err != nil { + return nil, err + } + + randomizer := random.New() + sessionRegistry := registry.NewRegistry() + + portManager := port.New() + if err = portManager.AddRange(conf.AllowedPortsStart(), conf.AllowedPortsEnd()); err != nil { + return nil, err + } + + return &Bootstrap{ + Randomizer: randomizer, + Config: conf, + SessionRegistry: sessionRegistry, + Port: portManager, + }, nil +} + +func newSSHConfig(sshKeyPath string) (*ssh.ServerConfig, error) { + sshCfg := &ssh.ServerConfig{ + NoClientAuth: true, + ServerVersion: fmt.Sprintf("SSH-2.0-TunnelPlease-%s", version.GetShortVersion()), + } + + if err := key.GenerateSSHKeyIfNotExist(sshKeyPath); err != nil { + return nil, fmt.Errorf("generate ssh key: %w", err) + } + privateBytes, err := os.ReadFile(sshKeyPath) + if err != nil { + return nil, fmt.Errorf("read private key: %w", err) + } + private, err := ssh.ParsePrivateKey(privateBytes) + if err != nil { + return nil, fmt.Errorf("parse private key: %w", err) + } + sshCfg.AddHostKey(private) + return sshCfg, nil +} + +func startGRPCClient(ctx context.Context, conf config.Config, registry registry.Registry, errChan chan<- error) (client.Client, error) { + grpcAddr := fmt.Sprintf("%s:%s", conf.GRPCAddress(), conf.GRPCPort()) + grpcClient, err := client.New(conf, grpcAddr, registry) + if err != nil { + return nil, err + } + healthCtx, healthCancel := context.WithTimeout(ctx, 5*time.Second) + defer healthCancel() + if err = grpcClient.CheckServerHealth(healthCtx); err != nil { + return nil, fmt.Errorf("gRPC health check failed: %w", err) + } + + go func() { + if err = grpcClient.SubscribeEvents(ctx, conf.Domain(), conf.NodeToken()); err != nil { + errChan <- fmt.Errorf("failed to subscribe to events: %w", err) + } + }() + + return grpcClient, nil +} + +func startHTTPServer(conf config.Config, registry registry.Registry, errChan chan<- error) { + httpserver := transport.NewHTTPServer(conf.Domain(), conf.HTTPPort(), registry, conf.TLSRedirect()) + ln, err := httpserver.Listen() + if err != nil { + errChan <- fmt.Errorf("failed to start http server: %w", err) + return + } + if err = httpserver.Serve(ln); err != nil { + errChan <- fmt.Errorf("error when serving http server: %w", err) + } +} + +func startHTTPSServer(conf config.Config, registry registry.Registry, errChan chan<- error) { + tlsCfg, err := transport.NewTLSConfig(conf) + if err != nil { + errChan <- fmt.Errorf("failed to create TLS config: %w", err) + return + } + httpsServer := transport.NewHTTPSServer(conf.Domain(), conf.HTTPSPort(), registry, conf.TLSRedirect(), tlsCfg) + ln, err := httpsServer.Listen() + if err != nil { + errChan <- fmt.Errorf("failed to start https server: %w", err) + return + } + if err = httpsServer.Serve(ln); err != nil { + errChan <- fmt.Errorf("error when serving https server: %w", err) + } +} + +func startSSHServer(rand random.Random, conf config.Config, sshCfg *ssh.ServerConfig, registry registry.Registry, grpcClient client.Client, portManager port.Port, sshPort string) error { + sshServer, err := server.New(rand, conf, sshCfg, registry, grpcClient, portManager, sshPort) + if err != nil { + return err + } + + sshServer.Start() + + return sshServer.Close() +} + +func startPprof(pprofPort string) { + pprofAddr := fmt.Sprintf("localhost:%s", pprofPort) + log.Printf("Starting pprof server on http://%s/debug/pprof/", pprofAddr) + if err := http.ListenAndServe(pprofAddr, nil); err != nil { + log.Printf("pprof server error: %v", err) + } +} + +func (b *Bootstrap) Run() error { + sshConfig, err := newSSHConfig(b.Config.KeyLoc()) + if err != nil { + return fmt.Errorf("failed to create SSH config: %w", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + errChan := make(chan error, 5) + shutdownChan := make(chan os.Signal, 1) + signal.Notify(shutdownChan, os.Interrupt, syscall.SIGTERM) + + var grpcClient client.Client + if b.Config.Mode() == types.ServerModeNODE { + grpcClient, err = startGRPCClient(ctx, b.Config, b.SessionRegistry, errChan) + if err != nil { + return fmt.Errorf("failed to start gRPC client: %w", err) + } + defer func(grpcClient client.Client) { + err = grpcClient.Close() + if err != nil { + log.Printf("failed to close gRPC client") + } + }(grpcClient) + } + + go startHTTPServer(b.Config, b.SessionRegistry, errChan) + + if b.Config.TLSEnabled() { + go startHTTPSServer(b.Config, b.SessionRegistry, errChan) + } + + go func() { + if err = startSSHServer(b.Randomizer, b.Config, sshConfig, b.SessionRegistry, grpcClient, b.Port, b.Config.SSHPort()); err != nil { + errChan <- fmt.Errorf("SSH server error: %w", err) + } + }() + + if b.Config.PprofEnabled() { + go startPprof(b.Config.PprofPort()) + } + + log.Println("All services started successfully") + + select { + case err = <-errChan: + return fmt.Errorf("service error: %w", err) + case sig := <-shutdownChan: + log.Printf("Received signal %s, initiating graceful shutdown", sig) + cancel() + return nil + } +} diff --git a/internal/config/config.go b/internal/config/config.go index 62e1aca..5c21abf 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -9,6 +9,8 @@ type Config interface { HTTPPort() string HTTPSPort() string + KeyLoc() string + TLSEnabled() bool TLSRedirect() bool @@ -47,6 +49,7 @@ func (c *config) Domain() string { return c.domain } func (c *config) SSHPort() string { return c.sshPort } func (c *config) HTTPPort() string { return c.httpPort } func (c *config) HTTPSPort() string { return c.httpsPort } +func (c *config) KeyLoc() string { return c.keyLoc } func (c *config) TLSEnabled() bool { return c.tlsEnabled } func (c *config) TLSRedirect() bool { return c.tlsRedirect } func (c *config) ACMEEmail() string { return c.acmeEmail } diff --git a/internal/config/loader.go b/internal/config/loader.go index cde9fd0..ebccf3f 100644 --- a/internal/config/loader.go +++ b/internal/config/loader.go @@ -18,6 +18,8 @@ type config struct { httpPort string httpsPort string + keyLoc string + tlsEnabled bool tlsRedirect bool @@ -51,6 +53,8 @@ func parse() (*config, error) { httpPort := getenv("HTTP_PORT", "8080") httpsPort := getenv("HTTPS_PORT", "8443") + keyLoc := getenv("KEY_LOC", "certs/privkey.pem") + tlsEnabled := getenvBool("TLS_ENABLED", false) tlsRedirect := tlsEnabled && getenvBool("TLS_REDIRECT", false) @@ -85,6 +89,7 @@ func parse() (*config, error) { sshPort: sshPort, httpPort: httpPort, httpsPort: httpsPort, + keyLoc: keyLoc, tlsEnabled: tlsEnabled, tlsRedirect: tlsRedirect, acmeEmail: acmeEmail, diff --git a/main.go b/main.go index d62f722..be8b510 100644 --- a/main.go +++ b/main.go @@ -1,28 +1,11 @@ package main import ( - "context" "fmt" "log" - "net" - "net/http" - _ "net/http/pprof" "os" - "os/signal" - "syscall" - "time" - "tunnel_pls/internal/config" - "tunnel_pls/internal/grpc/client" - "tunnel_pls/internal/key" - "tunnel_pls/internal/port" - "tunnel_pls/internal/random" - "tunnel_pls/internal/registry" - "tunnel_pls/internal/transport" + "tunnel_pls/internal/bootstrap" "tunnel_pls/internal/version" - "tunnel_pls/server" - "tunnel_pls/types" - - "golang.org/x/crypto/ssh" ) func main() { @@ -33,148 +16,14 @@ func main() { log.SetOutput(os.Stdout) log.SetFlags(log.LstdFlags | log.Lshortfile) - log.Printf("Starting %s", version.GetVersion()) - conf, err := config.MustLoad() + boot, err := bootstrap.New() if err != nil { - log.Fatalf("Failed to load configuration: %s", err) - return + log.Fatalf("Startup error: %v", err) } - sshConfig := &ssh.ServerConfig{ - NoClientAuth: true, - ServerVersion: fmt.Sprintf("SSH-2.0-TunnelPlease-%s", version.GetShortVersion()), - } - - sshKeyPath := "certs/ssh/id_rsa" - if err = key.GenerateSSHKeyIfNotExist(sshKeyPath); err != nil { - log.Fatalf("Failed to generate SSH key: %s", err) - } - - privateBytes, err := os.ReadFile(sshKeyPath) - if err != nil { - log.Fatalf("Failed to load private key: %s", err) - } - - private, err := ssh.ParsePrivateKey(privateBytes) - if err != nil { - log.Fatalf("Failed to parse private key: %s", err) - } - - sshConfig.AddHostKey(private) - sessionRegistry := registry.NewRegistry() - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - errChan := make(chan error, 2) - shutdownChan := make(chan os.Signal, 1) - signal.Notify(shutdownChan, os.Interrupt, syscall.SIGTERM) - - var grpcClient client.Client - - if conf.Mode() == types.ServerModeNODE { - grpcAddr := fmt.Sprintf("%s:%s", conf.GRPCAddress(), conf.GRPCPort()) - - grpcClient, err = client.New(conf, grpcAddr, sessionRegistry) - if err != nil { - log.Fatalf("failed to create grpc client: %v", err) - } - - healthCtx, healthCancel := context.WithTimeout(ctx, 5*time.Second) - if err = grpcClient.CheckServerHealth(healthCtx); err != nil { - healthCancel() - log.Fatalf("gRPC health check failed: %v", err) - } - healthCancel() - - go func() { - if err = grpcClient.SubscribeEvents(ctx, conf.Domain(), conf.NodeToken()); err != nil { - errChan <- fmt.Errorf("failed to subscribe to events: %w", err) - } - }() - } - - go func() { - var httpListener net.Listener - httpserver := transport.NewHTTPServer(conf.Domain(), conf.HTTPPort(), sessionRegistry, conf.TLSRedirect()) - httpListener, err = httpserver.Listen() - if err != nil { - errChan <- fmt.Errorf("failed to start http server: %w", err) - return - } - err = httpserver.Serve(httpListener) - if err != nil { - errChan <- fmt.Errorf("error when serving http server: %w", err) - return - } - }() - - if conf.TLSEnabled() { - go func() { - var httpsListener net.Listener - tlsConfig, _ := transport.NewTLSConfig(conf) - httpsServer := transport.NewHTTPSServer(conf.Domain(), conf.HTTPSPort(), sessionRegistry, conf.TLSRedirect(), tlsConfig) - httpsListener, err = httpsServer.Listen() - if err != nil { - errChan <- fmt.Errorf("failed to start http server: %w", err) - return - } - err = httpsServer.Serve(httpsListener) - if err != nil { - errChan <- fmt.Errorf("error when serving http server: %w", err) - return - } - }() - } - - portManager := port.New() - err = portManager.AddRange(conf.AllowedPortsStart(), conf.AllowedPortsEnd()) - if err != nil { - log.Fatalf("Failed to initialize port manager: %s", err) - return - } - randomizer := random.New() - var app server.Server - go func() { - app, err = server.New(randomizer, conf, sshConfig, sessionRegistry, grpcClient, portManager, conf.SSHPort()) - if err != nil { - errChan <- fmt.Errorf("failed to start server: %s", err) - return - } - app.Start() - - }() - - if conf.PprofEnabled() { - go func() { - pprofAddr := fmt.Sprintf("localhost:%s", conf.PprofPort()) - log.Printf("Starting pprof server on http://%s/debug/pprof/", pprofAddr) - if err = http.ListenAndServe(pprofAddr, nil); err != nil { - log.Printf("pprof server error: %v", err) - } - }() - } - - select { - case err = <-errChan: - log.Printf("error happen : %s", err) - case sig := <-shutdownChan: - log.Printf("received signal %s, shutting down", sig) - } - - cancel() - - if app != nil { - if err = app.Close(); err != nil { - log.Printf("failed to close server : %s", err) - } - } - - if grpcClient != nil { - if err = grpcClient.Close(); err != nil { - log.Printf("failed to close grpc conn : %s", err) - } + if err = boot.Run(); err != nil { + log.Fatalf("Application error: %v", err) } } diff --git a/server/server.go b/server/server.go index 0538d69..d3df5fd 100644 --- a/server/server.go +++ b/server/server.go @@ -114,5 +114,4 @@ func (s *server) handleConnection(conn net.Conn) { log.Printf("SSH session ended with error: %s", err.Error()) return } - return } diff --git a/server/server_test.go b/server/server_test.go index d01479e..de54f18 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -49,6 +49,7 @@ func (m *mockConfig) Mode() types.ServerMode { return m.Called().Get(0).(type func (m *mockConfig) GRPCAddress() string { return m.Called().String(0) } func (m *mockConfig) GRPCPort() string { return m.Called().String(0) } func (m *mockConfig) NodeToken() string { return m.Called().String(0) } +func (m *mockConfig) KeyLoc() string { return m.Called().String(0) } type mockRegistry struct { mock.Mock diff --git a/session/lifecycle/lifecycle.go b/session/lifecycle/lifecycle.go index a775c22..234bff8 100644 --- a/session/lifecycle/lifecycle.go +++ b/session/lifecycle/lifecycle.go @@ -123,12 +123,8 @@ func (l *lifecycle) Close() error { l.sessionRegistry.Remove(key) if tunnelType == types.TunnelTypeTCP { - if err := l.PortRegistry().SetStatus(l.forwarder.ForwardedPort(), false); err != nil { - errs = append(errs, err) - } - if err := l.forwarder.Close(); err != nil { - errs = append(errs, err) - } + errs = append(errs, l.PortRegistry().SetStatus(l.forwarder.ForwardedPort(), false)) + errs = append(errs, l.forwarder.Close()) } l.closeErr = errors.Join(errs...) diff --git a/session/session.go b/session/session.go index 926aebf..e5d4cc2 100644 --- a/session/session.go +++ b/session/session.go @@ -195,7 +195,6 @@ func (s *session) waitForSessionEnd() error { } if err := s.lifecycle.Close(); err != nil { - log.Printf("failed to close session: %v", err) return err } return nil From 2f5c44ff01c5300481e6904cf50ba6205e405720 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 15:42:30 +0700 Subject: [PATCH 25/47] test(bootstrap): add unit tests for initial bootstrap behavior --- internal/bootstrap/bootstrap.go | 84 ++-- internal/bootstrap/bootstrap_test.go | 627 +++++++++++++++++++++++++++ internal/config/config.go | 2 + internal/config/loader.go | 12 +- internal/grpc/client/client.go | 4 +- internal/grpc/client/client_test.go | 46 +- internal/transport/tls.go | 12 +- main.go | 9 +- server/server_test.go | 47 +- 9 files changed, 754 insertions(+), 89 deletions(-) create mode 100644 internal/bootstrap/bootstrap_test.go diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go index 77ed6e8..bd8645f 100644 --- a/internal/bootstrap/bootstrap.go +++ b/internal/bootstrap/bootstrap.go @@ -28,27 +28,35 @@ type Bootstrap struct { Config config.Config SessionRegistry registry.Registry Port port.Port + GrpcClient client.Client + ErrChan chan error + SignalChan chan os.Signal } -func New() (*Bootstrap, error) { - conf, err := config.MustLoad() +func New(config config.Config, port port.Port) (*Bootstrap, error) { + randomizer := random.New() + sessionRegistry := registry.NewRegistry() + + if err := port.AddRange(config.AllowedPortsStart(), config.AllowedPortsEnd()); err != nil { + return nil, err + } + + grpcClient, err := client.New(config, sessionRegistry) if err != nil { return nil, err } - randomizer := random.New() - sessionRegistry := registry.NewRegistry() - - portManager := port.New() - if err = portManager.AddRange(conf.AllowedPortsStart(), conf.AllowedPortsEnd()); err != nil { - return nil, err - } + errChan := make(chan error, 5) + signalChan := make(chan os.Signal, 1) return &Bootstrap{ Randomizer: randomizer, - Config: conf, + Config: config, SessionRegistry: sessionRegistry, - Port: portManager, + Port: port, + GrpcClient: grpcClient, + ErrChan: errChan, + SignalChan: signalChan, }, nil } @@ -73,25 +81,20 @@ func newSSHConfig(sshKeyPath string) (*ssh.ServerConfig, error) { return sshCfg, nil } -func startGRPCClient(ctx context.Context, conf config.Config, registry registry.Registry, errChan chan<- error) (client.Client, error) { - grpcAddr := fmt.Sprintf("%s:%s", conf.GRPCAddress(), conf.GRPCPort()) - grpcClient, err := client.New(conf, grpcAddr, registry) - if err != nil { - return nil, err - } +func (b *Bootstrap) startGRPCClient(ctx context.Context, conf config.Config, errChan chan<- error) error { healthCtx, healthCancel := context.WithTimeout(ctx, 5*time.Second) defer healthCancel() - if err = grpcClient.CheckServerHealth(healthCtx); err != nil { - return nil, fmt.Errorf("gRPC health check failed: %w", err) + if err := b.GrpcClient.CheckServerHealth(healthCtx); err != nil { + return fmt.Errorf("gRPC health check failed: %w", err) } go func() { - if err = grpcClient.SubscribeEvents(ctx, conf.Domain(), conf.NodeToken()); err != nil { + if err := b.GrpcClient.SubscribeEvents(ctx, conf.Domain(), conf.NodeToken()); err != nil { errChan <- fmt.Errorf("failed to subscribe to events: %w", err) } }() - return grpcClient, nil + return nil } func startHTTPServer(conf config.Config, registry registry.Registry, errChan chan<- error) { @@ -115,7 +118,7 @@ func startHTTPSServer(conf config.Config, registry registry.Registry, errChan ch httpsServer := transport.NewHTTPSServer(conf.Domain(), conf.HTTPSPort(), registry, conf.TLSRedirect(), tlsCfg) ln, err := httpsServer.Listen() if err != nil { - errChan <- fmt.Errorf("failed to start https server: %w", err) + errChan <- fmt.Errorf("failed to create TLS config: %w", err) return } if err = httpsServer.Serve(ln); err != nil { @@ -123,25 +126,25 @@ func startHTTPSServer(conf config.Config, registry registry.Registry, errChan ch } } -func startSSHServer(rand random.Random, conf config.Config, sshCfg *ssh.ServerConfig, registry registry.Registry, grpcClient client.Client, portManager port.Port, sshPort string) error { - sshServer, err := server.New(rand, conf, sshCfg, registry, grpcClient, portManager, sshPort) +func startSSHServer(rand random.Random, conf config.Config, sshCfg *ssh.ServerConfig, registry registry.Registry, grpcClient client.Client, portManager port.Port, errChan chan<- error) { + sshServer, err := server.New(rand, conf, sshCfg, registry, grpcClient, portManager, conf.SSHPort()) if err != nil { - return err + errChan <- err + return } sshServer.Start() - return sshServer.Close() + errChan <- sshServer.Close() } -func startPprof(pprofPort string) { +func startPprof(pprofPort string, errChan chan<- error) { pprofAddr := fmt.Sprintf("localhost:%s", pprofPort) log.Printf("Starting pprof server on http://%s/debug/pprof/", pprofAddr) if err := http.ListenAndServe(pprofAddr, nil); err != nil { - log.Printf("pprof server error: %v", err) + errChan <- fmt.Errorf("pprof server error: %v", err) } } - func (b *Bootstrap) Run() error { sshConfig, err := newSSHConfig(b.Config.KeyLoc()) if err != nil { @@ -151,13 +154,10 @@ func (b *Bootstrap) Run() error { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - errChan := make(chan error, 5) - shutdownChan := make(chan os.Signal, 1) - signal.Notify(shutdownChan, os.Interrupt, syscall.SIGTERM) + signal.Notify(b.SignalChan, os.Interrupt, syscall.SIGTERM) - var grpcClient client.Client if b.Config.Mode() == types.ServerModeNODE { - grpcClient, err = startGRPCClient(ctx, b.Config, b.SessionRegistry, errChan) + err = b.startGRPCClient(ctx, b.Config, b.ErrChan) if err != nil { return fmt.Errorf("failed to start gRPC client: %w", err) } @@ -166,31 +166,29 @@ func (b *Bootstrap) Run() error { if err != nil { log.Printf("failed to close gRPC client") } - }(grpcClient) + }(b.GrpcClient) } - go startHTTPServer(b.Config, b.SessionRegistry, errChan) + go startHTTPServer(b.Config, b.SessionRegistry, b.ErrChan) if b.Config.TLSEnabled() { - go startHTTPSServer(b.Config, b.SessionRegistry, errChan) + go startHTTPSServer(b.Config, b.SessionRegistry, b.ErrChan) } go func() { - if err = startSSHServer(b.Randomizer, b.Config, sshConfig, b.SessionRegistry, grpcClient, b.Port, b.Config.SSHPort()); err != nil { - errChan <- fmt.Errorf("SSH server error: %w", err) - } + startSSHServer(b.Randomizer, b.Config, sshConfig, b.SessionRegistry, b.GrpcClient, b.Port, b.ErrChan) }() if b.Config.PprofEnabled() { - go startPprof(b.Config.PprofPort()) + go startPprof(b.Config.PprofPort(), b.ErrChan) } log.Println("All services started successfully") select { - case err = <-errChan: + case err = <-b.ErrChan: return fmt.Errorf("service error: %w", err) - case sig := <-shutdownChan: + case sig := <-b.SignalChan: log.Printf("Received signal %s, initiating graceful shutdown", sig) cancel() return nil diff --git a/internal/bootstrap/bootstrap_test.go b/internal/bootstrap/bootstrap_test.go new file mode 100644 index 0000000..13778c7 --- /dev/null +++ b/internal/bootstrap/bootstrap_test.go @@ -0,0 +1,627 @@ +package bootstrap + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "fmt" + "math/big" + "net" + "net/http" + _ "net/http/pprof" + "os" + "path/filepath" + "strconv" + "testing" + "time" + "tunnel_pls/internal/config" + "tunnel_pls/internal/port" + "tunnel_pls/internal/registry" + "tunnel_pls/session/forwarder" + "tunnel_pls/session/interaction" + "tunnel_pls/session/lifecycle" + "tunnel_pls/session/slug" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "google.golang.org/grpc" +) + +type MockSessionRegistry struct { + mock.Mock +} + +func (m *MockSessionRegistry) Get(key registry.Key) (registry.Session, error) { + args := m.Called(key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *MockSessionRegistry) GetWithUser(user string, key registry.Key) (registry.Session, error) { + args := m.Called(user, key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) +} + +func (m *MockSessionRegistry) Update(user string, oldKey, newKey registry.Key) error { + args := m.Called(user, oldKey, newKey) + return args.Error(0) +} + +func (m *MockSessionRegistry) Register(key registry.Key, session registry.Session) bool { + args := m.Called(key, session) + return args.Bool(0) +} + +func (m *MockSessionRegistry) Remove(key registry.Key) { + m.Called(key) +} + +func (m *MockSessionRegistry) GetAllSessionFromUser(user string) []registry.Session { + args := m.Called(user) + return args.Get(0).([]registry.Session) +} + +func (m *MockSessionRegistry) Slug() slug.Slug { + args := m.Called() + return args.Get(0).(slug.Slug) +} + +type MockSession struct { + mock.Mock +} + +func (m *MockSession) Lifecycle() lifecycle.Lifecycle { + args := m.Called() + return args.Get(0).(lifecycle.Lifecycle) +} + +func (m *MockSession) Interaction() interaction.Interaction { + args := m.Called() + return args.Get(0).(interaction.Interaction) +} + +func (m *MockSession) Forwarder() forwarder.Forwarder { + args := m.Called() + return args.Get(0).(forwarder.Forwarder) +} + +func (m *MockSession) Slug() slug.Slug { + args := m.Called() + return args.Get(0).(slug.Slug) +} + +func (m *MockSession) Detail() *types.Detail { + args := m.Called() + return args.Get(0).(*types.Detail) +} + +type MockRandom struct { + mock.Mock +} + +func (m *MockRandom) String(length int) (string, error) { + args := m.Called(length) + return args.String(0), args.Error(1) +} + +type MockConfig struct { + mock.Mock +} + +func (m *MockConfig) Domain() string { return m.Called().String(0) } +func (m *MockConfig) SSHPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *MockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *MockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *MockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) PprofPort() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { + args := m.Called() + if args.Get(0) == nil { + return 0 + } + switch v := args.Get(0).(type) { + case types.ServerMode: + return v + case int: + return types.ServerMode(v) + default: + return types.ServerMode(args.Int(0)) + } +} +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } + +type MockPort struct { + mock.Mock +} + +func (m *MockPort) AddRange(startPort, endPort uint16) error { + return m.Called(startPort, endPort).Error(0) +} +func (m *MockPort) Unassigned() (uint16, bool) { + args := m.Called() + var port uint16 + if args.Get(0) != nil { + switch v := args.Get(0).(type) { + case int: + port = uint16(v) + case uint16: + port = v + case uint32: + port = uint16(v) + case int32: + port = uint16(v) + case float64: + port = uint16(v) + default: + port = uint16(args.Int(0)) + } + } + return port, args.Bool(1) +} +func (m *MockPort) SetStatus(port uint16, assigned bool) error { + return m.Called(port, assigned).Error(0) +} +func (m *MockPort) Claim(port uint16) bool { + return m.Called(port).Bool(0) +} + +type MockGRPCClient struct { + mock.Mock +} + +func (m *MockGRPCClient) ClientConn() *grpc.ClientConn { + args := m.Called() + return args.Get(0).(*grpc.ClientConn) +} + +func (m *MockGRPCClient) AuthorizeConn(ctx context.Context, token string) (authorized bool, user string, err error) { + m.Called() + return +} + +func (m *MockGRPCClient) CheckServerHealth(ctx context.Context) error { + args := m.Called(ctx) + return args.Error(0) +} + +func (m *MockGRPCClient) SubscribeEvents(ctx context.Context, domain, token string) error { + args := m.Called(ctx, domain, token) + return args.Error(0) +} + +func (m *MockGRPCClient) Close() error { + args := m.Called() + return args.Error(0) +} + +func TestNew(t *testing.T) { + tests := []struct { + name string + setupConfig func() config.Config + setupPort func() port.Port + wantErr bool + errContains string + }{ + { + name: "Success New with default value", + wantErr: false, + }, + { + name: "Error when AddRange fails", + setupPort: func() port.Port { + mockPort := &MockPort{} + mockPort.On("AddRange", mock.Anything, mock.Anything).Return(fmt.Errorf("invalid port range")) + return mockPort + }, + wantErr: true, + errContains: "invalid port range", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var mockPort port.Port + if tt.setupPort != nil { + mockPort = tt.setupPort() + } else { + mockPort = port.New() + } + + var mockConfig config.Config + if tt.setupConfig != nil { + mockConfig = tt.setupConfig() + } else { + var err error + mockConfig, err = config.MustLoad() + assert.NoError(t, err) + } + + bootstrap, err := New(mockConfig, mockPort) + + if tt.wantErr { + assert.Error(t, err) + if tt.errContains != "" { + assert.Contains(t, err.Error(), tt.errContains) + } + assert.Nil(t, bootstrap) + } else { + assert.NoError(t, err) + assert.NotNil(t, bootstrap) + assert.NotNil(t, bootstrap.Randomizer) + assert.NotNil(t, bootstrap.SessionRegistry) + assert.NotNil(t, bootstrap.Config) + assert.NotNil(t, bootstrap.Port) + assert.NotNil(t, bootstrap.ErrChan) + assert.NotNil(t, bootstrap.SignalChan) + } + }) + } +} + +func generateTestCert(t *testing.T) (certPEM, keyPEM []byte) { + privateKey, err := rsa.GenerateKey(rand.Reader, 2048) + require.NoError(t, err) + + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + Organization: []string{"Test Co"}, + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour), + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + BasicConstraintsValid: true, + DNSNames: []string{"localhost"}, + IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, + } + + certDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &privateKey.PublicKey, privateKey) + require.NoError(t, err) + + certPEM = pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: certDER, + }) + + keyPEM = pem.EncodeToMemory(&pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: x509.MarshalPKCS1PrivateKey(privateKey), + }) + + return certPEM, keyPEM +} + +func randomAvailablePort() (string, error) { + listener, err := net.Listen("tcp", "localhost:0") + if err != nil { + return "", err + } + defer listener.Close() + + port := listener.Addr().(*net.TCPAddr).Port + return strconv.Itoa(port), nil +} + +func TestRun(t *testing.T) { + mockRandom := &MockRandom{} + mockErrChan := make(chan error, 1) + mockSignalChan := make(chan os.Signal, 1) + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + tmpDir := t.TempDir() + keyLoc := filepath.Join(tmpDir, "key.key") + + tests := []struct { + name string + setupConfig func() *MockConfig + setupGrpcClient func() *MockGRPCClient + needCerts bool + expectError bool + }{ + { + name: "successful run and termination", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeSTANDALONE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + expectError: false, + }, + { + name: "error from SSH server invalid port", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeSTANDALONE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("invalid") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + expectError: true, + }, + { + name: "error from HTTP server invalid port", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeSTANDALONE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("invalid") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + expectError: true, + }, + { + name: "error from HTTPS server invalid port", + setupConfig: func() *MockConfig { + tempDir := os.TempDir() + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeSTANDALONE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("invalid") + mock.On("TLSEnabled").Return(true) + mock.On("TLSRedirect").Return(false) + mock.On("TLSStoragePath").Return(tempDir) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + expectError: true, + }, + { + name: "grpc health check failed", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeNODE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("invalid") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + setupGrpcClient: func() *MockGRPCClient { + mockGRPCClient := &MockGRPCClient{} + mockGRPCClient.On("CheckServerHealth", mock.Anything).Return(fmt.Errorf("health check failed")) + return mockGRPCClient + }, + expectError: true, + }, + { + name: "successful run with pprof enabled", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + pprofPort, _ := randomAvailablePort() + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeSTANDALONE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(true) + mock.On("PprofPort").Return(pprofPort) + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + expectError: false, + }, { + name: "successful run in NODE mode with signal", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeNODE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + setupGrpcClient: func() *MockGRPCClient { + mockGRPCClient := &MockGRPCClient{} + mockGRPCClient.On("CheckServerHealth", mock.Anything).Return(nil) + mockGRPCClient.On("SubscribeEvents", mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockGRPCClient.On("Close").Return(nil) + return mockGRPCClient + }, + expectError: false, + }, { + name: "successful run in NODE mode with signal buf error when closing", + setupConfig: func() *MockConfig { + mock := &MockConfig{} + mock.On("KeyLoc").Return(keyLoc) + mock.On("Mode").Return(types.ServerModeNODE) + mock.On("Domain").Return("example.com") + mock.On("SSHPort").Return("0") + mock.On("HTTPPort").Return("0") + mock.On("HTTPSPort").Return("0") + mock.On("TLSEnabled").Return(false) + mock.On("TLSRedirect").Return(false) + mock.On("ACMEEmail").Return("test@example.com") + mock.On("CFAPIToken").Return("fake-token") + mock.On("ACMEStaging").Return(true) + mock.On("AllowedPortsStart").Return(uint16(1024)) + mock.On("AllowedPortsEnd").Return(uint16(65535)) + mock.On("BufferSize").Return(4096) + mock.On("PprofEnabled").Return(false) + mock.On("PprofPort").Return("0") + mock.On("GRPCAddress").Return("localhost") + mock.On("GRPCPort").Return("0") + mock.On("NodeToken").Return("fake-node-token") + return mock + }, + setupGrpcClient: func() *MockGRPCClient { + mockGRPCClient := &MockGRPCClient{} + mockGRPCClient.On("CheckServerHealth", mock.Anything).Return(nil) + mockGRPCClient.On("SubscribeEvents", mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockGRPCClient.On("Close").Return(fmt.Errorf("you fucked up, buddy")) + return mockGRPCClient + }, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockConfig := tt.setupConfig() + mockGRPCClient := &MockGRPCClient{} + bootstrap := &Bootstrap{ + Randomizer: mockRandom, + Config: mockConfig, + SessionRegistry: mockSessionRegistry, + Port: mockPort, + ErrChan: mockErrChan, + SignalChan: mockSignalChan, + GrpcClient: mockGRPCClient, + } + + if tt.setupGrpcClient != nil { + bootstrap.GrpcClient = tt.setupGrpcClient() + } + + done := make(chan error, 1) + go func() { + done <- bootstrap.Run() + }() + + if tt.expectError { + err := <-done + assert.Error(t, err) + } else if tt.name == "successful run with pprof enabled" { + time.Sleep(200 * time.Millisecond) + fmt.Println(mockConfig.PprofPort()) + resp, err := http.Get(fmt.Sprintf("http://localhost:%s/debug/pprof/", mockConfig.PprofPort())) + assert.NoError(t, err) + assert.Equal(t, 200, resp.StatusCode) + resp.Body.Close() + mockSignalChan <- os.Interrupt + err = <-done + assert.NoError(t, err) + } else { + time.Sleep(time.Second) + mockSignalChan <- os.Interrupt + err := <-done + assert.NoError(t, err) + } + }) + } +} diff --git a/internal/config/config.go b/internal/config/config.go index 5c21abf..19bbc49 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -13,6 +13,7 @@ type Config interface { TLSEnabled() bool TLSRedirect() bool + TLSStoragePath() string ACMEEmail() string CFAPIToken() string @@ -52,6 +53,7 @@ func (c *config) HTTPSPort() string { return c.httpsPort } func (c *config) KeyLoc() string { return c.keyLoc } func (c *config) TLSEnabled() bool { return c.tlsEnabled } func (c *config) TLSRedirect() bool { return c.tlsRedirect } +func (c *config) TLSStoragePath() string { return c.tlsStoragePath } func (c *config) ACMEEmail() string { return c.acmeEmail } func (c *config) CFAPIToken() string { return c.cfAPIToken } func (c *config) ACMEStaging() bool { return c.acmeStaging } diff --git a/internal/config/loader.go b/internal/config/loader.go index ebccf3f..aeb32bb 100644 --- a/internal/config/loader.go +++ b/internal/config/loader.go @@ -20,12 +20,12 @@ type config struct { keyLoc string - tlsEnabled bool - tlsRedirect bool - - acmeEmail string - cfAPIToken string - acmeStaging bool + tlsEnabled bool + tlsRedirect bool + tlsStoragePath string + acmeEmail string + cfAPIToken string + acmeStaging bool allowedPortsStart uint16 allowedPortsEnd uint16 diff --git a/internal/grpc/client/client.go b/internal/grpc/client/client.go index ade89a0..3adcc57 100644 --- a/internal/grpc/client/client.go +++ b/internal/grpc/client/client.go @@ -44,7 +44,9 @@ var ( initialBackoff = time.Second ) -func New(config config.Config, address string, sessionRegistry registry.Registry) (Client, error) { +func New(config config.Config, sessionRegistry registry.Registry) (Client, error) { + address := fmt.Sprintf("%s:%s", config.GRPCAddress(), config.GRPCPort()) + var opts []grpc.DialOption opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials())) diff --git a/internal/grpc/client/client_test.go b/internal/grpc/client/client_test.go index 1d3b315..3964cf0 100644 --- a/internal/grpc/client/client_test.go +++ b/internal/grpc/client/client_test.go @@ -8,7 +8,6 @@ import ( "testing" "time" - "tunnel_pls/internal/config" "tunnel_pls/internal/registry" "tunnel_pls/session/interaction" "tunnel_pls/session/lifecycle" @@ -16,6 +15,7 @@ import ( "tunnel_pls/types" proto "git.fossy.my.id/bagas/tunnel-please-grpc/gen" + "github.com/stretchr/testify/mock" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/health/grpc_health_v1" @@ -382,7 +382,8 @@ func TestProcessEventStream(t *testing.T) { mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } c.sessionRegistry = mockReg - c.config = &mockConfig{domain: "test.com"} + c.config = &MockConfig{} + c.config.(*MockConfig).On("Domain").Return("test.com") mockStream.sendFunc = func(n *proto.Node) error { return nil } err := c.processEventStream(mockStream) @@ -541,7 +542,8 @@ func TestHandleSlugChange(t *testing.T) { func TestHandleGetSessions(t *testing.T) { mockReg := &mockRegistry{} mockStream := &mockSubscribeClient{} - mockCfg := &mockConfig{domain: "test.com"} + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("test.com") c := &client{sessionRegistry: mockReg, config: mockCfg} evt := &proto.Events{ @@ -840,8 +842,11 @@ func TestNew_Error(t *testing.T) { return nil, errors.New("dial fail") } defer func() { grpcNewClient = old }() + mockConfig := &MockConfig{} - cli, err := New(&mockConfig{}, "localhost:1234", &mockRegistry{}) + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("1234") + cli, err := New(mockConfig, &mockRegistry{}) if err == nil || err.Error() != "failed to connect to gRPC server at localhost:1234: dial fail" { t.Errorf("expected dial fail error, got %v", err) } @@ -851,10 +856,11 @@ func TestNew_Error(t *testing.T) { } func TestNew(t *testing.T) { - mockCfg := &mockConfig{} + mockConfig := &MockConfig{} mockReg := &mockRegistry{} - - cli, err := New(mockCfg, "localhost:1234", mockReg) + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("1234") + cli, err := New(mockConfig, mockReg) if err != nil { t.Errorf("New() error = %v", err) } @@ -864,12 +870,30 @@ func TestNew(t *testing.T) { defer cli.Close() } -type mockConfig struct { - config.Config - domain string +type MockConfig struct { + mock.Mock } -func (m *mockConfig) Domain() string { return m.domain } +func (m *MockConfig) Domain() string { return m.Called().String(0) } +func (m *MockConfig) SSHPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *MockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *MockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *MockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) PprofPort() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } type mockRegistry struct { registry.Registry diff --git a/internal/transport/tls.go b/internal/transport/tls.go index 877afb4..584dec4 100644 --- a/internal/transport/tls.go +++ b/internal/transport/tls.go @@ -8,6 +8,7 @@ import ( "fmt" "log" "os" + "path/filepath" "sync" "time" "tunnel_pls/internal/config" @@ -47,15 +48,18 @@ func NewTLSConfig(config config.Config) (*tls.Config, error) { var initErr error tlsManagerOnce.Do(func() { - certPath := "certs/tls/cert.pem" - keyPath := "certs/tls/privkey.pem" - storagePath := "certs/tls/certmagic" + storagePath := config.TLSStoragePath() + cleanBase := filepath.Clean(storagePath) + + certPath := filepath.Join(cleanBase, "cert.pem") + keyPath := filepath.Join(cleanBase, "privkey.pem") + storagePathCertMagic := filepath.Join(cleanBase, "certmagic") tm := &tlsManager{ config: config, certPath: certPath, keyPath: keyPath, - storagePath: storagePath, + storagePath: storagePathCertMagic, } if tm.userCertsExistAndValid() { diff --git a/main.go b/main.go index be8b510..a908903 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,8 @@ import ( "log" "os" "tunnel_pls/internal/bootstrap" + "tunnel_pls/internal/config" + "tunnel_pls/internal/port" "tunnel_pls/internal/version" ) @@ -18,7 +20,12 @@ func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) log.Printf("Starting %s", version.GetVersion()) - boot, err := bootstrap.New() + conf, err := config.MustLoad() + if err != nil { + log.Fatalf("Config load error: %v", err) + } + + boot, err := bootstrap.New(conf, port.New()) if err != nil { log.Fatalf("Startup error: %v", err) } diff --git a/server/server_test.go b/server/server_test.go index de54f18..c35073a 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -27,29 +27,30 @@ func (m *mockRandom) String(length int) (string, error) { return args.String(0), args.Error(1) } -type mockConfig struct { +type MockConfig struct { mock.Mock } -func (m *mockConfig) Domain() string { return m.Called().String(0) } -func (m *mockConfig) SSHPort() string { return m.Called().String(0) } -func (m *mockConfig) HTTPPort() string { return m.Called().String(0) } -func (m *mockConfig) HTTPSPort() string { return m.Called().String(0) } -func (m *mockConfig) TLSEnabled() bool { return m.Called().Bool(0) } -func (m *mockConfig) TLSRedirect() bool { return m.Called().Bool(0) } -func (m *mockConfig) ACMEEmail() string { return m.Called().String(0) } -func (m *mockConfig) CFAPIToken() string { return m.Called().String(0) } -func (m *mockConfig) ACMEStaging() bool { return m.Called().Bool(0) } -func (m *mockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } -func (m *mockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } -func (m *mockConfig) BufferSize() int { return m.Called().Int(0) } -func (m *mockConfig) PprofEnabled() bool { return m.Called().Bool(0) } -func (m *mockConfig) PprofPort() string { return m.Called().String(0) } -func (m *mockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } -func (m *mockConfig) GRPCAddress() string { return m.Called().String(0) } -func (m *mockConfig) GRPCPort() string { return m.Called().String(0) } -func (m *mockConfig) NodeToken() string { return m.Called().String(0) } -func (m *mockConfig) KeyLoc() string { return m.Called().String(0) } +func (m *MockConfig) Domain() string { return m.Called().String(0) } +func (m *MockConfig) SSHPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *MockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *MockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *MockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) PprofPort() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } type mockRegistry struct { mock.Mock @@ -169,7 +170,7 @@ func getTestSSHConfig() (*ssh.ServerConfig, ssh.Signer) { func TestNew(t *testing.T) { mr := new(mockRandom) - mc := new(mockConfig) + mc := new(MockConfig) mreg := new(mockRegistry) mg := new(mockGrpcClient) mp := new(mockPort) @@ -222,7 +223,7 @@ func TestNew(t *testing.T) { func TestClose(t *testing.T) { mr := new(mockRandom) - mc := new(mockConfig) + mc := new(MockConfig) mreg := new(mockRegistry) mg := new(mockGrpcClient) mp := new(mockPort) @@ -238,7 +239,7 @@ func TestClose(t *testing.T) { func TestStart(t *testing.T) { mr := new(mockRandom) - mc := new(mockConfig) + mc := new(MockConfig) mreg := new(mockRegistry) mg := new(mockGrpcClient) mp := new(mockPort) From bd826d6d06b9b483709827ef7f0a67c5400f1c16 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 17:41:41 +0700 Subject: [PATCH 26/47] refactor(transport): reduce cognitive complexity and clean up public API --- internal/transport/tls.go | 428 +++++++----- internal/transport/tls_test.go | 1158 +++++++++++++++++++++++++++++--- 2 files changed, 1356 insertions(+), 230 deletions(-) diff --git a/internal/transport/tls.go b/internal/transport/tls.go index 584dec4..4d62e60 100644 --- a/internal/transport/tls.go +++ b/internal/transport/tls.go @@ -17,13 +17,22 @@ import ( "github.com/libdns/cloudflare" ) -type TLSManager interface { - userCertsExistAndValid() bool - loadUserCerts() error - startCertWatcher() - initCertMagic() error - getTLSConfig() *tls.Config - getCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate, error) +func NewTLSConfig(config config.Config) (*tls.Config, error) { + var initErr error + + tlsManagerOnce.Do(func() { + tm := createTLSManager(config) + initErr = tm.initialize() + if initErr == nil { + globalTLSManager = tm + } + }) + + if initErr != nil { + return nil, initErr + } + + return globalTLSManager.getTLSConfig(), nil } type tlsManager struct { @@ -41,55 +50,60 @@ type tlsManager struct { useCertMagic bool } -var globalTLSManager TLSManager +var globalTLSManager *tlsManager var tlsManagerOnce sync.Once -func NewTLSConfig(config config.Config) (*tls.Config, error) { - var initErr error +func createTLSManager(cfg config.Config) *tlsManager { + storagePath := cfg.TLSStoragePath() + cleanBase := filepath.Clean(storagePath) - tlsManagerOnce.Do(func() { - storagePath := config.TLSStoragePath() - cleanBase := filepath.Clean(storagePath) + return &tlsManager{ + config: cfg, + certPath: filepath.Join(cleanBase, "cert.pem"), + keyPath: filepath.Join(cleanBase, "privkey.pem"), + storagePath: filepath.Join(cleanBase, "certmagic"), + } +} - certPath := filepath.Join(cleanBase, "cert.pem") - keyPath := filepath.Join(cleanBase, "privkey.pem") - storagePathCertMagic := filepath.Join(cleanBase, "certmagic") +func (tm *tlsManager) initialize() error { + if tm.userCertsExistAndValid() { + return tm.initializeWithUserCerts() + } + return tm.initializeWithCertMagic() +} - tm := &tlsManager{ - config: config, - certPath: certPath, - keyPath: keyPath, - storagePath: storagePathCertMagic, - } +func (tm *tlsManager) initializeWithUserCerts() error { + log.Printf("Using user-provided certificates from %s and %s", tm.certPath, tm.keyPath) - if tm.userCertsExistAndValid() { - log.Printf("Using user-provided certificates from %s and %s", certPath, keyPath) - if err := tm.loadUserCerts(); err != nil { - initErr = fmt.Errorf("failed to load user certificates: %w", err) - return - } - tm.useCertMagic = false - tm.startCertWatcher() - } else { - log.Printf("User certificates missing or don't cover %s and *.%s, using CertMagic", config.Domain(), config.Domain()) - if err := tm.initCertMagic(); err != nil { - initErr = fmt.Errorf("failed to initialize CertMagic: %w", err) - return - } - tm.useCertMagic = true - } - - globalTLSManager = tm - }) - - if initErr != nil { - return nil, initErr + if err := tm.loadUserCerts(); err != nil { + return fmt.Errorf("failed to load user certificates: %w", err) } - return globalTLSManager.getTLSConfig(), nil + tm.useCertMagic = false + tm.startCertWatcher() + return nil +} + +func (tm *tlsManager) initializeWithCertMagic() error { + log.Printf("User certificates missing or don't cover %s and *.%s, using CertMagic", + tm.config.Domain(), tm.config.Domain()) + + if err := tm.initCertMagic(); err != nil { + return fmt.Errorf("failed to initialize CertMagic: %w", err) + } + + tm.useCertMagic = true + return nil } func (tm *tlsManager) userCertsExistAndValid() bool { + if !tm.certFilesExist() { + return false + } + return validateCertDomains(tm.certPath, tm.config.Domain()) +} + +func (tm *tlsManager) certFilesExist() bool { if _, err := os.Stat(tm.certPath); os.IsNotExist(err) { log.Printf("Certificate file not found: %s", tm.certPath) return false @@ -98,66 +112,7 @@ func (tm *tlsManager) userCertsExistAndValid() bool { log.Printf("Key file not found: %s", tm.keyPath) return false } - - return ValidateCertDomains(tm.certPath, tm.config.Domain()) -} - -func ValidateCertDomains(certPath, domain string) bool { - certPEM, err := os.ReadFile(certPath) - if err != nil { - log.Printf("Failed to read certificate: %v", err) - return false - } - - block, _ := pem.Decode(certPEM) - if block == nil { - log.Printf("Failed to decode PEM block from certificate") - return false - } - - cert, err := x509.ParseCertificate(block.Bytes) - if err != nil { - log.Printf("Failed to parse certificate: %v", err) - return false - } - - if time.Now().After(cert.NotAfter) { - log.Printf("Certificate has expired (NotAfter: %v)", cert.NotAfter) - return false - } - - if time.Now().Add(30 * 24 * time.Hour).After(cert.NotAfter) { - log.Printf("Certificate expiring soon (NotAfter: %v), will use CertMagic for renewal", cert.NotAfter) - return false - } - - var certDomains []string - if cert.Subject.CommonName != "" { - certDomains = append(certDomains, cert.Subject.CommonName) - } - certDomains = append(certDomains, cert.DNSNames...) - - hasBase := false - hasWildcard := false - wildcardDomain := "*." + domain - - for _, d := range certDomains { - if d == domain { - hasBase = true - } - if d == wildcardDomain { - hasWildcard = true - } - } - - if !hasBase { - log.Printf("Certificate does not cover base domain: %s", domain) - } - if !hasWildcard { - log.Printf("Certificate does not cover wildcard domain: %s", wildcardDomain) - } - - return hasBase && hasWildcard + return true } func (tm *tlsManager) loadUserCerts() error { @@ -176,62 +131,34 @@ func (tm *tlsManager) loadUserCerts() error { func (tm *tlsManager) startCertWatcher() { go func() { - var lastCertMod, lastKeyMod time.Time - - if info, err := os.Stat(tm.certPath); err == nil { - lastCertMod = info.ModTime() - } - if info, err := os.Stat(tm.keyPath); err == nil { - lastKeyMod = info.ModTime() - } - - ticker := time.NewTicker(30 * time.Second) - defer ticker.Stop() - - for range ticker.C { - certInfo, certErr := os.Stat(tm.certPath) - keyInfo, keyErr := os.Stat(tm.keyPath) - - if certErr != nil || keyErr != nil { - continue - } - - if certInfo.ModTime().After(lastCertMod) || keyInfo.ModTime().After(lastKeyMod) { - log.Printf("Certificate files changed, reloading...") - - if !ValidateCertDomains(tm.certPath, tm.config.Domain()) { - log.Printf("New certificates don't cover required domains") - - if err := tm.initCertMagic(); err != nil { - log.Printf("Failed to initialize CertMagic: %v", err) - continue - } - tm.useCertMagic = true - return - } - - if err := tm.loadUserCerts(); err != nil { - log.Printf("Failed to reload certificates: %v", err) - continue - } - - lastCertMod = certInfo.ModTime() - lastKeyMod = keyInfo.ModTime() - log.Printf("Certificates reloaded successfully") - } - } + watcher := newCertWatcher(tm) + watcher.watch() }() } func (tm *tlsManager) initCertMagic() error { - if err := os.MkdirAll(tm.storagePath, 0700); err != nil { - return fmt.Errorf("failed to create cert storage directory: %w", err) + if err := tm.createStorageDirectory(); err != nil { + return err } if tm.config.CFAPIToken() == "" { return fmt.Errorf("CF_API_TOKEN environment variable is required for automatic certificate generation") } + magic := tm.createCertMagicConfig() + tm.magic = magic + + return tm.obtainCertificates(magic) +} + +func (tm *tlsManager) createStorageDirectory() error { + if err := os.MkdirAll(tm.storagePath, 0700); err != nil { + return fmt.Errorf("failed to create cert storage directory: %w", err) + } + return nil +} + +func (tm *tlsManager) createCertMagicConfig() *certmagic.Config { cfProvider := &cloudflare.Provider{ APIToken: tm.config.CFAPIToken(), } @@ -248,6 +175,13 @@ func (tm *tlsManager) initCertMagic() error { Storage: storage, }) + acmeIssuer := tm.createACMEIssuer(magic, cfProvider) + magic.Issuers = []certmagic.Issuer{acmeIssuer} + + return magic +} + +func (tm *tlsManager) createACMEIssuer(magic *certmagic.Config, cfProvider *cloudflare.Provider) *certmagic.ACMEIssuer { acmeIssuer := certmagic.NewACMEIssuer(magic, certmagic.ACMEIssuer{ Email: tm.config.ACMEEmail(), Agreed: true, @@ -266,9 +200,10 @@ func (tm *tlsManager) initCertMagic() error { log.Printf("Using Let's Encrypt production server") } - magic.Issuers = []certmagic.Issuer{acmeIssuer} - tm.magic = magic + return acmeIssuer +} +func (tm *tlsManager) obtainCertificates(magic *certmagic.Config) error { domains := []string{tm.config.Domain(), "*." + tm.config.Domain()} log.Printf("Requesting certificates for: %v", domains) @@ -311,3 +246,190 @@ func (tm *tlsManager) getCertificate(hello *tls.ClientHelloInfo) (*tls.Certifica return tm.userCert, nil } + +func validateCertDomains(certPath, domain string) bool { + cert, err := loadAndParseCertificate(certPath) + if err != nil { + return false + } + + if !isCertificateValid(cert) { + return false + } + + return certCoversRequiredDomains(cert, domain) +} + +func loadAndParseCertificate(certPath string) (*x509.Certificate, error) { + certPEM, err := os.ReadFile(certPath) + if err != nil { + log.Printf("Failed to read certificate: %v", err) + return nil, err + } + + block, _ := pem.Decode(certPEM) + if block == nil { + log.Printf("Failed to decode PEM block from certificate") + return nil, fmt.Errorf("failed to decode PEM block") + } + + cert, err := x509.ParseCertificate(block.Bytes) + if err != nil { + log.Printf("Failed to parse certificate: %v", err) + return nil, err + } + + return cert, nil +} + +func isCertificateValid(cert *x509.Certificate) bool { + now := time.Now() + + if now.After(cert.NotAfter) { + log.Printf("Certificate has expired (NotAfter: %v)", cert.NotAfter) + return false + } + + thirtyDaysFromNow := now.Add(30 * 24 * time.Hour) + if thirtyDaysFromNow.After(cert.NotAfter) { + log.Printf("Certificate expiring soon (NotAfter: %v), will use CertMagic for renewal", cert.NotAfter) + return false + } + + return true +} + +func certCoversRequiredDomains(cert *x509.Certificate, domain string) bool { + certDomains := extractCertDomains(cert) + hasBase, hasWildcard := checkDomainCoverage(certDomains, domain) + + logDomainCoverage(hasBase, hasWildcard, domain) + return hasBase && hasWildcard +} + +func extractCertDomains(cert *x509.Certificate) []string { + var domains []string + if cert.Subject.CommonName != "" { + domains = append(domains, cert.Subject.CommonName) + } + domains = append(domains, cert.DNSNames...) + return domains +} + +func checkDomainCoverage(certDomains []string, domain string) (hasBase, hasWildcard bool) { + wildcardDomain := "*." + domain + + for _, d := range certDomains { + if d == domain { + hasBase = true + } + if d == wildcardDomain { + hasWildcard = true + } + } + + return hasBase, hasWildcard +} + +func logDomainCoverage(hasBase, hasWildcard bool, domain string) { + if !hasBase { + log.Printf("Certificate does not cover base domain: %s", domain) + } + if !hasWildcard { + log.Printf("Certificate does not cover wildcard domain: *.%s", domain) + } +} + +type certWatcher struct { + tm *tlsManager + lastCertMod time.Time + lastKeyMod time.Time +} + +func newCertWatcher(tm *tlsManager) *certWatcher { + watcher := &certWatcher{tm: tm} + watcher.initializeModTimes() + return watcher +} + +func (cw *certWatcher) initializeModTimes() { + if info, err := os.Stat(cw.tm.certPath); err == nil { + cw.lastCertMod = info.ModTime() + } + if info, err := os.Stat(cw.tm.keyPath); err == nil { + cw.lastKeyMod = info.ModTime() + } +} + +func (cw *certWatcher) watch() { + ticker := time.NewTicker(30 * time.Second) + defer ticker.Stop() + + for range ticker.C { + if cw.checkAndReloadCerts() { + return + } + } +} + +func (cw *certWatcher) checkAndReloadCerts() bool { + certInfo, keyInfo, err := cw.getFileInfo() + if err != nil { + return false + } + + if !cw.filesModified(certInfo, keyInfo) { + return false + } + + return cw.handleCertificateChange(certInfo, keyInfo) +} + +func (cw *certWatcher) getFileInfo() (os.FileInfo, os.FileInfo, error) { + certInfo, certErr := os.Stat(cw.tm.certPath) + keyInfo, keyErr := os.Stat(cw.tm.keyPath) + + if certErr != nil || keyErr != nil { + return nil, nil, fmt.Errorf("file stat error") + } + + return certInfo, keyInfo, nil +} + +func (cw *certWatcher) filesModified(certInfo, keyInfo os.FileInfo) bool { + return certInfo.ModTime().After(cw.lastCertMod) || keyInfo.ModTime().After(cw.lastKeyMod) +} + +func (cw *certWatcher) handleCertificateChange(certInfo, keyInfo os.FileInfo) bool { + log.Printf("Certificate files changed, reloading...") + + if !validateCertDomains(cw.tm.certPath, cw.tm.config.Domain()) { + return cw.switchToCertMagic() + } + + if err := cw.tm.loadUserCerts(); err != nil { + log.Printf("Failed to reload certificates: %v", err) + return false + } + + cw.updateModTimes(certInfo, keyInfo) + log.Printf("Certificates reloaded successfully") + return false +} + +func (cw *certWatcher) switchToCertMagic() bool { + log.Printf("New certificates don't cover required domains") + + if err := cw.tm.initCertMagic(); err != nil { + log.Printf("Failed to initialize CertMagic: %v", err) + return false + } + + cw.tm.useCertMagic = true + return true +} + +func (cw *certWatcher) updateModTimes(certInfo, keyInfo os.FileInfo) { + cw.lastCertMod = certInfo.ModTime() + cw.lastKeyMod = keyInfo.ModTime() +} diff --git a/internal/transport/tls_test.go b/internal/transport/tls_test.go index 17e7214..1518469 100644 --- a/internal/transport/tls_test.go +++ b/internal/transport/tls_test.go @@ -9,8 +9,11 @@ import ( "encoding/pem" "math/big" "os" + "path/filepath" + "sync" "testing" "time" + "tunnel_pls/internal/config" "tunnel_pls/types" "github.com/stretchr/testify/assert" @@ -39,58 +42,14 @@ func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(type func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } func (m *MockConfig) NodeToken() string { return m.Called().String(0) } - -func TestValidateCertDomains_NotFound(t *testing.T) { - result := ValidateCertDomains("nonexistent.pem", "example.com") - assert.False(t, result) -} - -func TestValidateCertDomains_InvalidPEM(t *testing.T) { - tmpFile, err := os.CreateTemp("", "invalid*.pem") - assert.NoError(t, err) - defer os.Remove(tmpFile.Name()) - - _, _ = tmpFile.WriteString("not a pem") - tmpFile.Close() - - result := ValidateCertDomains(tmpFile.Name(), "example.com") - assert.False(t, result) -} - -func TestTLSManager_getTLSConfig(t *testing.T) { - tm := &tlsManager{ - useCertMagic: false, - } - cfg := tm.getTLSConfig() - assert.NotNil(t, cfg) - assert.Equal(t, uint16(tls.VersionTLS13), cfg.MinVersion) -} - -func TestTLSManager_getCertificate_Magic(t *testing.T) { - tm := &tlsManager{ - useCertMagic: true, - } - hello := &tls.ClientHelloInfo{} - assert.Panics(t, func() { - _, _ = tm.getCertificate(hello) - }) -} - -func TestTLSManager_userCertsExistAndValid(t *testing.T) { - tm := &tlsManager{ - certPath: "nonexistent.pem", - keyPath: "nonexistent.key", - } - assert.False(t, tm.userCertsExistAndValid()) - - keyFile, _ := os.CreateTemp("", "key*.pem") - defer os.Remove(keyFile.Name()) - tm.keyPath = keyFile.Name() - assert.False(t, tm.userCertsExistAndValid()) -} +func (m *MockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } func createTestCert(t *testing.T, domain string, wildcard bool, expired bool, soon bool) (string, string) { - priv, _ := rsa.GenerateKey(rand.Reader, 2048) + t.Helper() + + priv, err := rsa.GenerateKey(rand.Reader, 2048) + assert.NoError(t, err) notAfter := time.Now().Add(365 * 24 * time.Hour) if expired { @@ -116,54 +75,400 @@ func createTestCert(t *testing.T, domain string, wildcard bool, expired bool, so derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv) assert.NoError(t, err) - certOut, _ := os.CreateTemp("", "cert*.pem") - _ = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) + certOut, err := os.CreateTemp("", "cert*.pem") + assert.NoError(t, err) + err = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) + assert.NoError(t, err) certOut.Close() - keyOut, _ := os.CreateTemp("", "key*.pem") - _ = pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) + keyOut, err := os.CreateTemp("", "key*.pem") + assert.NoError(t, err) + err = pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) + assert.NoError(t, err) keyOut.Close() return certOut.Name(), keyOut.Name() } -func TestValidateCertDomains_Success(t *testing.T) { +func setupTestDir(t *testing.T) string { + t.Helper() + + tmpDir, err := os.MkdirTemp("", "tls-test-*") + assert.NoError(t, err) + + t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) + + return tmpDir +} + +func TestValidateCertDomains(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) (certPath string, cleanup func()) + domain string + expected bool + }{ + { + name: "file not found", + setup: func(t *testing.T) (string, func()) { + return "nonexistent.pem", func() {} + }, + domain: "example.com", + expected: false, + }, + { + name: "invalid PEM", + setup: func(t *testing.T) (string, func()) { + tmpFile, err := os.CreateTemp("", "invalid*.pem") + assert.NoError(t, err) + _, err = tmpFile.WriteString("not a pem") + assert.NoError(t, err) + tmpFile.Close() + return tmpFile.Name(), func() { os.Remove(tmpFile.Name()) } + }, + domain: "example.com", + expected: false, + }, + { + name: "valid cert with wildcard", + setup: func(t *testing.T) (string, func()) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + return certPath, func() { + os.Remove(certPath) + os.Remove(keyPath) + } + }, + domain: "example.com", + expected: true, + }, + { + name: "expired cert", + setup: func(t *testing.T) (string, func()) { + certPath, keyPath := createTestCert(t, "example.com", true, true, false) + return certPath, func() { + os.Remove(certPath) + os.Remove(keyPath) + } + }, + domain: "example.com", + expected: false, + }, + { + name: "cert expiring soon", + setup: func(t *testing.T) (string, func()) { + certPath, keyPath := createTestCert(t, "example.com", true, false, true) + return certPath, func() { + os.Remove(certPath) + os.Remove(keyPath) + } + }, + domain: "example.com", + expected: false, + }, + { + name: "missing wildcard", + setup: func(t *testing.T) (string, func()) { + certPath, keyPath := createTestCert(t, "example.com", false, false, false) + return certPath, func() { + os.Remove(certPath) + os.Remove(keyPath) + } + }, + domain: "example.com", + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + certPath, cleanup := tt.setup(t) + defer cleanup() + + result := validateCertDomains(certPath, tt.domain) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestLoadAndParseCertificate(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) (certPath string, cleanup func()) + wantError bool + validate func(t *testing.T, cert *x509.Certificate) + }{ + { + name: "success", + setup: func(t *testing.T) (string, func()) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + return certPath, func() { + os.Remove(certPath) + os.Remove(keyPath) + } + }, + wantError: false, + validate: func(t *testing.T, cert *x509.Certificate) { + assert.Equal(t, "example.com", cert.Subject.CommonName) + }, + }, + { + name: "file not found", + setup: func(t *testing.T) (string, func()) { + return "nonexistent.pem", func() {} + }, + wantError: true, + validate: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + certPath, cleanup := tt.setup(t) + defer cleanup() + + cert, err := loadAndParseCertificate(certPath) + + if tt.wantError { + assert.Error(t, err) + assert.Nil(t, cert) + } else { + assert.NoError(t, err) + assert.NotNil(t, cert) + if tt.validate != nil { + tt.validate(t, cert) + } + } + }) + } +} + +func TestIsCertificateValid(t *testing.T) { + tests := []struct { + name string + expired bool + soon bool + expected bool + }{ + { + name: "valid certificate", + expired: false, + soon: false, + expected: true, + }, + { + name: "expired certificate", + expired: true, + soon: false, + expected: false, + }, + { + name: "expiring soon", + expired: false, + soon: true, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, tt.expired, tt.soon) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + cert, err := loadAndParseCertificate(certPath) + assert.NoError(t, err) + + result := isCertificateValid(cert) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestExtractCertDomains(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) defer os.Remove(certPath) defer os.Remove(keyPath) - result := ValidateCertDomains(certPath, "example.com") - assert.True(t, result) + cert, err := loadAndParseCertificate(certPath) + assert.NoError(t, err) + + domains := extractCertDomains(cert) + assert.Contains(t, domains, "example.com") + assert.Contains(t, domains, "*.example.com") } -func TestValidateCertDomains_Expired(t *testing.T) { - certPath, keyPath := createTestCert(t, "example.com", true, true, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) +func TestCheckDomainCoverage(t *testing.T) { + tests := []struct { + name string + certDomains []string + domain string + wantBase bool + wantWildcard bool + }{ + { + name: "both covered", + certDomains: []string{"example.com", "*.example.com"}, + domain: "example.com", + wantBase: true, + wantWildcard: true, + }, + { + name: "only base", + certDomains: []string{"example.com"}, + domain: "example.com", + wantBase: true, + wantWildcard: false, + }, + { + name: "only wildcard", + certDomains: []string{"*.example.com"}, + domain: "example.com", + wantBase: false, + wantWildcard: true, + }, + { + name: "neither", + certDomains: []string{"other.com"}, + domain: "example.com", + wantBase: false, + wantWildcard: false, + }, + } - result := ValidateCertDomains(certPath, "example.com") - assert.False(t, result) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + hasBase, hasWildcard := checkDomainCoverage(tt.certDomains, tt.domain) + assert.Equal(t, tt.wantBase, hasBase) + assert.Equal(t, tt.wantWildcard, hasWildcard) + }) + } } -func TestValidateCertDomains_ExpiringSoon(t *testing.T) { - certPath, keyPath := createTestCert(t, "example.com", true, false, true) - defer os.Remove(certPath) - defer os.Remove(keyPath) - - result := ValidateCertDomains(certPath, "example.com") - assert.False(t, result) +func TestTLSManager_getTLSConfig(t *testing.T) { + tm := &tlsManager{ + useCertMagic: false, + } + cfg := tm.getTLSConfig() + assert.NotNil(t, cfg) + assert.Equal(t, uint16(tls.VersionTLS13), cfg.MinVersion) + assert.Equal(t, uint16(tls.VersionTLS13), cfg.MaxVersion) + assert.NotNil(t, cfg.GetCertificate) } -func TestValidateCertDomains_MissingWildcard(t *testing.T) { - certPath, keyPath := createTestCert(t, "example.com", false, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) +func TestTLSManager_getCertificate(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) *tlsManager + wantError bool + errorContains string + }{ + { + name: "no certificate available", + setup: func(t *testing.T) *tlsManager { + return &tlsManager{ + useCertMagic: false, + userCert: nil, + } + }, + wantError: true, + errorContains: "no certificate available", + }, + { + name: "with user certificate", + setup: func(t *testing.T) *tlsManager { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) - result := ValidateCertDomains(certPath, "example.com") - assert.False(t, result) + cert, err := tls.LoadX509KeyPair(certPath, keyPath) + assert.NoError(t, err) + + return &tlsManager{ + useCertMagic: false, + userCert: &cert, + } + }, + wantError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tm := tt.setup(t) + hello := &tls.ClientHelloInfo{ + ServerName: "example.com", + } + + cert, err := tm.getCertificate(hello) + + if tt.wantError { + assert.Error(t, err) + assert.Nil(t, cert) + if tt.errorContains != "" { + assert.Contains(t, err.Error(), tt.errorContains) + } + } else { + assert.NoError(t, err) + assert.NotNil(t, cert) + } + }) + } } -func TestTLSManager_loadUserCerts_Success(t *testing.T) { +func TestTLSManager_userCertsExistAndValid(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) *tlsManager + expected bool + }{ + { + name: "no files", + setup: func(t *testing.T) *tlsManager { + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + return &tlsManager{ + config: mockCfg, + certPath: "nonexistent.pem", + keyPath: "nonexistent.key", + } + }, + expected: false, + }, + { + name: "missing key file", + setup: func(t *testing.T) *tlsManager { + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { os.Remove(certPath) }) + os.Remove(keyPath) + + return &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + }, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tm := tt.setup(t) + result := tm.userCertsExistAndValid() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestTLSManager_certFilesExist(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) defer os.Remove(certPath) defer os.Remove(keyPath) @@ -172,7 +477,706 @@ func TestTLSManager_loadUserCerts_Success(t *testing.T) { certPath: certPath, keyPath: keyPath, } + + result := tm.certFilesExist() + assert.True(t, result) +} + +func TestTLSManager_loadUserCerts(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) *tlsManager + wantError bool + }{ + { + name: "success", + setup: func(t *testing.T) *tlsManager { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + return &tlsManager{ + certPath: certPath, + keyPath: keyPath, + } + }, + wantError: false, + }, + { + name: "invalid path", + setup: func(t *testing.T) *tlsManager { + return &tlsManager{ + certPath: "nonexistent.pem", + keyPath: "nonexistent.key", + } + }, + wantError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tm := tt.setup(t) + err := tm.loadUserCerts() + + if tt.wantError { + assert.Error(t, err) + assert.Nil(t, tm.userCert) + } else { + assert.NoError(t, err) + assert.NotNil(t, tm.userCert) + } + }) + } +} + +func TestCreateTLSManager(t *testing.T) { + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("TLSStoragePath").Return(tmpDir) + + tm := createTLSManager(mockCfg) + + assert.NotNil(t, tm) + assert.Equal(t, mockCfg, tm.config) + assert.Equal(t, filepath.Join(tmpDir, "cert.pem"), tm.certPath) + assert.Equal(t, filepath.Join(tmpDir, "privkey.pem"), tm.keyPath) + assert.Equal(t, filepath.Join(tmpDir, "certmagic"), tm.storagePath) +} + +func TestNewCertWatcher(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + mockCfg := &MockConfig{} + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + watcher := newCertWatcher(tm) + + assert.NotNil(t, watcher) + assert.Equal(t, tm, watcher.tm) + assert.False(t, watcher.lastCertMod.IsZero()) + assert.False(t, watcher.lastKeyMod.IsZero()) +} + +func TestCertWatcher_filesModified(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + mockCfg := &MockConfig{} + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + watcher := newCertWatcher(tm) + + certInfo, err := os.Stat(certPath) + assert.NoError(t, err) + keyInfo, err := os.Stat(keyPath) + assert.NoError(t, err) + + result := watcher.filesModified(certInfo, keyInfo) + assert.False(t, result) + + watcher.lastCertMod = time.Now().Add(-1 * time.Hour) + + result = watcher.filesModified(certInfo, keyInfo) + assert.True(t, result) +} + +func TestCertWatcher_updateModTimes(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + mockCfg := &MockConfig{} + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + watcher := newCertWatcher(tm) + + certInfo, err := os.Stat(certPath) + assert.NoError(t, err) + keyInfo, err := os.Stat(keyPath) + assert.NoError(t, err) + + time.Sleep(10 * time.Millisecond) + watcher.updateModTimes(certInfo, keyInfo) + + assert.Equal(t, certInfo.ModTime(), watcher.lastCertMod) + assert.Equal(t, keyInfo.ModTime(), watcher.lastKeyMod) +} + +func TestCertWatcher_getFileInfo(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) *tlsManager + wantError bool + validate func(t *testing.T, certInfo, keyInfo os.FileInfo) + }{ + { + name: "success", + setup: func(t *testing.T) *tlsManager { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + return &tlsManager{ + config: &MockConfig{}, + certPath: certPath, + keyPath: keyPath, + } + }, + wantError: false, + validate: func(t *testing.T, certInfo, keyInfo os.FileInfo) { + assert.NotNil(t, certInfo) + assert.NotNil(t, keyInfo) + }, + }, + { + name: "missing cert file", + setup: func(t *testing.T) *tlsManager { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + os.Remove(certPath) + t.Cleanup(func() { os.Remove(keyPath) }) + + return &tlsManager{ + config: &MockConfig{}, + certPath: certPath, + keyPath: keyPath, + } + }, + wantError: true, + }, + { + name: "missing key file", + setup: func(t *testing.T) *tlsManager { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + os.Remove(keyPath) + t.Cleanup(func() { os.Remove(certPath) }) + + return &tlsManager{ + config: &MockConfig{}, + certPath: certPath, + keyPath: keyPath, + } + }, + wantError: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tm := tt.setup(t) + watcher := newCertWatcher(tm) + + certInfo, keyInfo, err := watcher.getFileInfo() + + if tt.wantError { + assert.Error(t, err) + assert.Nil(t, certInfo) + assert.Nil(t, keyInfo) + } else { + assert.NoError(t, err) + if tt.validate != nil { + tt.validate(t, certInfo, keyInfo) + } + } + }) + } +} + +func TestCertWatcher_checkAndReloadCerts(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) (*tlsManager, *certWatcher) + expected bool + }{ + { + name: "file error", + setup: func(t *testing.T) (*tlsManager, *certWatcher) { + tm := &tlsManager{ + config: &MockConfig{}, + certPath: "nonexistent.pem", + keyPath: "nonexistent.key", + } + return tm, newCertWatcher(tm) + }, + expected: false, + }, + { + name: "no modification", + setup: func(t *testing.T) (*tlsManager, *certWatcher) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + tm := &tlsManager{ + config: &MockConfig{}, + certPath: certPath, + keyPath: keyPath, + } + return tm, newCertWatcher(tm) + }, + expected: false, + }, + { + name: "with modification", + setup: func(t *testing.T) (*tlsManager, *certWatcher) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + err := tm.loadUserCerts() + assert.NoError(t, err) + + watcher := newCertWatcher(tm) + watcher.lastCertMod = time.Now().Add(-1 * time.Hour) + + return tm, watcher + }, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, watcher := tt.setup(t) + result := watcher.checkAndReloadCerts() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestCertWatcher_handleCertificateChange(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) + expected bool + }{ + { + name: "successful reload", + setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + watcher := newCertWatcher(tm) + + certInfo, _ := os.Stat(certPath) + keyInfo, _ := os.Stat(keyPath) + + return tm, watcher, certInfo, keyInfo + }, + expected: false, + }, + { + name: "invalid cert triggers certmagic", + setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { + certPath, keyPath := createTestCert(t, "example.com", false, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + mockCfg.On("CFAPIToken").Return("") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + storagePath: tmpDir, + } + + watcher := newCertWatcher(tm) + + certInfo, _ := os.Stat(certPath) + keyInfo, _ := os.Stat(keyPath) + + return tm, watcher, certInfo, keyInfo + }, + expected: false, + }, + { + name: "load error", + setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: "nonexistent.key", + } + + watcher := newCertWatcher(tm) + + certInfo, _ := os.Stat(certPath) + keyInfo, _ := os.Stat(keyPath) + + return tm, watcher, certInfo, keyInfo + }, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, watcher, certInfo, keyInfo := tt.setup(t) + result := watcher.handleCertificateChange(certInfo, keyInfo) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestCertWatcher_switchToCertMagic(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) *tlsManager + expected bool + }{ + { + name: "with staging token", + setup: func(t *testing.T) *tlsManager { + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + mockCfg.On("CFAPIToken").Return("test-token") + mockCfg.On("ACMEEmail").Return("test@example.com") + mockCfg.On("ACMEStaging").Return(true) + + return &tlsManager{ + config: mockCfg, + storagePath: tmpDir, + } + }, + expected: false, + }, + { + name: "missing token", + setup: func(t *testing.T) *tlsManager { + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + mockCfg.On("CFAPIToken").Return("") + + return &tlsManager{ + config: mockCfg, + storagePath: tmpDir, + } + }, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tm := tt.setup(t) + watcher := newCertWatcher(tm) + result := watcher.switchToCertMagic() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestCertWatcher_watch(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) (*tlsManager, *certWatcher) + expected bool + }{ + { + name: "exits on certmagic switch attempt", + setup: func(t *testing.T) (*tlsManager, *certWatcher) { + certPath, keyPath := createTestCert(t, "example.com", false, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + mockCfg.On("CFAPIToken").Return("") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + storagePath: tmpDir, + } + + watcher := newCertWatcher(tm) + watcher.lastCertMod = time.Now().Add(-1 * time.Hour) + watcher.lastKeyMod = time.Now().Add(-1 * time.Hour) + + return tm, watcher + }, + expected: false, + }, + { + name: "continues on no modification", + setup: func(t *testing.T) (*tlsManager, *certWatcher) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + + return tm, newCertWatcher(tm) + }, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, watcher := tt.setup(t) + result := watcher.checkAndReloadCerts() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestCertWatcher_watch_Integration(t *testing.T) { + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + mockCfg := &MockConfig{} + mockCfg.On("Domain").Return("example.com") + + tm := &tlsManager{ + config: mockCfg, + certPath: certPath, + keyPath: keyPath, + } + err := tm.loadUserCerts() assert.NoError(t, err) + initialCert := tm.userCert + + watcher := newCertWatcher(tm) + + go watcher.watch() + + time.Sleep(50 * time.Millisecond) + + newCertPath, newKeyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(newCertPath) + defer os.Remove(newKeyPath) + + newCertData, err := os.ReadFile(newCertPath) + assert.NoError(t, err) + newKeyData, err := os.ReadFile(newKeyPath) + assert.NoError(t, err) + + err = os.WriteFile(certPath, newCertData, 0644) + assert.NoError(t, err) + err = os.WriteFile(keyPath, newKeyData, 0644) + assert.NoError(t, err) + + time.Sleep(100 * time.Millisecond) + assert.NotNil(t, tm.userCert) + assert.Equal(t, initialCert, tm.userCert) +} + +func TestNewTLSConfig(t *testing.T) { + tests := []struct { + name string + setup func(t *testing.T) config.Config + wantError bool + errorMsg string + validate func(t *testing.T, cfg *tls.Config) + }{ + { + name: "with valid user certs", + setup: func(t *testing.T) config.Config { + globalTLSManager = nil + tlsManagerOnce = sync.Once{} + + tmpDir := setupTestDir(t) + + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + t.Cleanup(func() { + os.Remove(certPath) + os.Remove(keyPath) + }) + + certData, err := os.ReadFile(certPath) + assert.NoError(t, err) + keyData, err := os.ReadFile(keyPath) + assert.NoError(t, err) + + err = os.WriteFile(filepath.Join(tmpDir, "cert.pem"), certData, 0644) + assert.NoError(t, err) + err = os.WriteFile(filepath.Join(tmpDir, "privkey.pem"), keyData, 0644) + assert.NoError(t, err) + + mockCfg := &MockConfig{} + mockCfg.On("TLSStoragePath").Return(tmpDir) + mockCfg.On("Domain").Return("example.com") + + return mockCfg + }, + wantError: false, + validate: func(t *testing.T, cfg *tls.Config) { + assert.Equal(t, uint16(tls.VersionTLS13), cfg.MinVersion) + assert.NotNil(t, cfg.GetCertificate) + }, + }, + { + name: "missing certs requires certmagic", + setup: func(t *testing.T) config.Config { + globalTLSManager = nil + tlsManagerOnce = sync.Once{} + + tmpDir := setupTestDir(t) + + mockCfg := &MockConfig{} + mockCfg.On("TLSStoragePath").Return(tmpDir) + mockCfg.On("Domain").Return("example.com") + mockCfg.On("CFAPIToken").Return("") + + return mockCfg + }, + wantError: true, + errorMsg: "CF_API_TOKEN", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := tt.setup(t) + tlsConfig, err := NewTLSConfig(cfg) + + if tt.wantError { + assert.Error(t, err) + if tt.errorMsg != "" { + assert.Contains(t, err.Error(), tt.errorMsg) + } + } else { + assert.NoError(t, err) + assert.NotNil(t, tlsConfig) + if tt.validate != nil { + tt.validate(t, tlsConfig) + } + } + }) + } +} + +func TestNewTLSConfig_Singleton(t *testing.T) { + globalTLSManager = nil + tlsManagerOnce = sync.Once{} + + tmpDir := setupTestDir(t) + + certPath, keyPath := createTestCert(t, "example.com", true, false, false) + defer os.Remove(certPath) + defer os.Remove(keyPath) + + certData, err := os.ReadFile(certPath) + assert.NoError(t, err) + keyData, err := os.ReadFile(keyPath) + assert.NoError(t, err) + + err = os.WriteFile(filepath.Join(tmpDir, "cert.pem"), certData, 0644) + assert.NoError(t, err) + err = os.WriteFile(filepath.Join(tmpDir, "privkey.pem"), keyData, 0644) + assert.NoError(t, err) + + mockCfg := &MockConfig{} + mockCfg.On("TLSStoragePath").Return(tmpDir) + mockCfg.On("Domain").Return("example.com") + + tlsConfig1, err1 := NewTLSConfig(mockCfg) + tlsConfig2, err2 := NewTLSConfig(mockCfg) + + assert.NoError(t, err1) + assert.NoError(t, err2) + assert.NotNil(t, tlsConfig1) + assert.NotNil(t, tlsConfig2) + + assert.Equal(t, tlsConfig1.MinVersion, tlsConfig2.MinVersion) + assert.Equal(t, tlsConfig1.MaxVersion, tlsConfig2.MaxVersion) + assert.Equal(t, tlsConfig1.SessionTicketsDisabled, tlsConfig2.SessionTicketsDisabled) + assert.Equal(t, tlsConfig1.ClientAuth, tlsConfig2.ClientAuth) + + hello := &tls.ClientHelloInfo{ServerName: "example.com"} + cert1, err1 := tlsConfig1.GetCertificate(hello) + cert2, err2 := tlsConfig2.GetCertificate(hello) + + assert.NoError(t, err1) + assert.NoError(t, err2) + assert.NotNil(t, cert1) + assert.NotNil(t, cert2) + + assert.Equal(t, cert1, cert2) } From 1ed9f3631faa6368cfd4df8b782a18337714e9a4 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 17:50:22 +0700 Subject: [PATCH 27/47] fix: correct buffer pool usage to avoid type assertion error --- session/forwarder/forwarder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index 7ea47b4..c602565 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -58,7 +58,7 @@ func New(config config.Config, slug slug.Slug, conn ssh.Conn) Forwarder { func (f *forwarder) copyWithBuffer(dst io.Writer, src io.Reader) (written int64, err error) { buf := f.bufferPool.Get().([]byte) - defer f.bufferPool.Put(&buf) + defer f.bufferPool.Put(buf) return io.CopyBuffer(dst, src, buf) } From 09aa92a0aee1f5107da7a609e61ca6d22a393816 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 17:55:26 +0700 Subject: [PATCH 28/47] fix: properly initialize tlsStoragePath in config load --- internal/config/config_test.go | 36 ++++++++++++++++++---------------- internal/config/loader.go | 2 ++ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 4aa7dc4..effbcaf 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -267,23 +267,24 @@ func TestParse(t *testing.T) { func TestGetters(t *testing.T) { envs := map[string]string{ - "DOMAIN": "example.com", - "PORT": "2222", - "HTTP_PORT": "80", - "HTTPS_PORT": "443", - "TLS_ENABLED": "true", - "TLS_REDIRECT": "true", - "ACME_EMAIL": "test@example.com", - "CF_API_TOKEN": "token", - "ACME_STAGING": "true", - "ALLOWED_PORTS": "1000-2000", - "BUFFER_SIZE": "16384", - "PPROF_ENABLED": "true", - "PPROF_PORT": "7070", - "MODE": "standalone", - "GRPC_ADDRESS": "127.0.0.1", - "GRPC_PORT": "9090", - "NODE_TOKEN": "ntoken", + "DOMAIN": "example.com", + "PORT": "2222", + "HTTP_PORT": "80", + "HTTPS_PORT": "443", + "TLS_ENABLED": "true", + "TLS_REDIRECT": "true", + "TLS_STORAGE_PATH": "certs/tls/", + "ACME_EMAIL": "test@example.com", + "CF_API_TOKEN": "token", + "ACME_STAGING": "true", + "ALLOWED_PORTS": "1000-2000", + "BUFFER_SIZE": "16384", + "PPROF_ENABLED": "true", + "PPROF_PORT": "7070", + "MODE": "standalone", + "GRPC_ADDRESS": "127.0.0.1", + "GRPC_PORT": "9090", + "NODE_TOKEN": "ntoken", } os.Clearenv() @@ -300,6 +301,7 @@ func TestGetters(t *testing.T) { assert.Equal(t, "443", cfg.HTTPSPort()) assert.Equal(t, true, cfg.TLSEnabled()) assert.Equal(t, true, cfg.TLSRedirect()) + assert.Equal(t, "certs/tls/", cfg.TLSStoragePath()) assert.Equal(t, "test@example.com", cfg.ACMEEmail()) assert.Equal(t, "token", cfg.CFAPIToken()) assert.Equal(t, true, cfg.ACMEStaging()) diff --git a/internal/config/loader.go b/internal/config/loader.go index aeb32bb..a1fde22 100644 --- a/internal/config/loader.go +++ b/internal/config/loader.go @@ -57,6 +57,7 @@ func parse() (*config, error) { tlsEnabled := getenvBool("TLS_ENABLED", false) tlsRedirect := tlsEnabled && getenvBool("TLS_REDIRECT", false) + tlsStoragePath := getenv("TLS_STORAGE_PATH", "certs/tls/") acmeEmail := getenv("ACME_EMAIL", "admin@"+domain) acmeStaging := getenvBool("ACME_STAGING", false) @@ -92,6 +93,7 @@ func parse() (*config, error) { keyLoc: keyLoc, tlsEnabled: tlsEnabled, tlsRedirect: tlsRedirect, + tlsStoragePath: tlsStoragePath, acmeEmail: acmeEmail, cfAPIToken: cfToken, acmeStaging: acmeStaging, From 211745dc26cb43174b40f2a3c7f110813b44dfca Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 19:16:31 +0700 Subject: [PATCH 29/47] test(slug): add unit tests for slug behavior --- session/slug/slug_test.go | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 session/slug/slug_test.go diff --git a/session/slug/slug_test.go b/session/slug/slug_test.go new file mode 100644 index 0000000..3e192af --- /dev/null +++ b/session/slug/slug_test.go @@ -0,0 +1,104 @@ +package slug + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" +) + +type SlugTestSuite struct { + suite.Suite + slug Slug +} + +func (suite *SlugTestSuite) SetupTest() { + suite.slug = New() +} + +func TestNew(t *testing.T) { + s := New() + + assert.NotNil(t, s, "New() should return a non-nil Slug") + assert.Implements(t, (*Slug)(nil), s, "New() should return a type that implements Slug interface") + assert.Equal(t, "", s.String(), "New() should initialize with empty string") +} + +func (suite *SlugTestSuite) TestString() { + assert.Equal(suite.T(), "", suite.slug.String(), "String() should return empty string initially") + + suite.slug.Set("test-slug") + assert.Equal(suite.T(), "test-slug", suite.slug.String(), "String() should return the set value") +} + +func (suite *SlugTestSuite) TestSet() { + testCases := []struct { + name string + input string + expected string + }{ + { + name: "simple slug", + input: "hello-world", + expected: "hello-world", + }, + { + name: "empty string", + input: "", + expected: "", + }, + { + name: "slug with numbers", + input: "test-123", + expected: "test-123", + }, + { + name: "slug with special characters", + input: "hello_world-123", + expected: "hello_world-123", + }, + { + name: "overwrite existing slug", + input: "new-slug", + expected: "new-slug", + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + suite.slug.Set(tc.input) + assert.Equal(suite.T(), tc.expected, suite.slug.String()) + }) + } +} + +func (suite *SlugTestSuite) TestMultipleSet() { + suite.slug.Set("first-slug") + assert.Equal(suite.T(), "first-slug", suite.slug.String()) + + suite.slug.Set("second-slug") + assert.Equal(suite.T(), "second-slug", suite.slug.String()) + + suite.slug.Set("") + assert.Equal(suite.T(), "", suite.slug.String()) +} + +func TestSlugInterface(t *testing.T) { + var _ Slug = (*slug)(nil) + var _ Slug = New() +} + +func TestSlugIsolation(t *testing.T) { + slug1 := New() + slug2 := New() + + slug1.Set("slug-one") + slug2.Set("slug-two") + + assert.Equal(t, "slug-one", slug1.String(), "First slug should maintain its value") + assert.Equal(t, "slug-two", slug2.String(), "Second slug should maintain its value") +} + +func TestSlugTestSuite(t *testing.T) { + suite.Run(t, new(SlugTestSuite)) +} From 04c9ddbc136d8b072c27886cf7b699b4342d0e19 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 20:28:30 +0700 Subject: [PATCH 30/47] test(lifecycle): add unit tests for lifecycle behavior --- internal/registry/registry_test.go | 4 + internal/transport/httphandler_test.go | 5 + session/lifecycle/lifecycle.go | 10 +- session/lifecycle/lifecycle_test.go | 322 +++++++++++++++++++++++++ 4 files changed, 338 insertions(+), 3 deletions(-) create mode 100644 session/lifecycle/lifecycle_test.go diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index 9b3d026..ce3c14b 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -33,6 +33,10 @@ func (m *mockSession) Detail() *types.Detail { type mockLifecycle struct{ user string } +func (ml *mockLifecycle) Channel() ssh.Channel { + return nil +} + func (ml *mockLifecycle) Connection() ssh.Conn { return nil } func (ml *mockLifecycle) PortRegistry() port.Port { return nil } func (ml *mockLifecycle) SetChannel(channel ssh.Channel) { _ = channel } diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index 3159366..984f9b1 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -100,6 +100,11 @@ type MockLifecycle struct { mock.Mock } +func (m *MockLifecycle) Channel() ssh.Channel { + args := m.Called() + return args.Get(0).(ssh.Channel) +} + func (m *MockLifecycle) Connection() ssh.Conn { args := m.Called() return args.Get(0).(ssh.Conn) diff --git a/session/lifecycle/lifecycle.go b/session/lifecycle/lifecycle.go index 234bff8..2d9dd3e 100644 --- a/session/lifecycle/lifecycle.go +++ b/session/lifecycle/lifecycle.go @@ -54,6 +54,7 @@ func New(conn ssh.Conn, forwarder Forwarder, slugManager slug.Slug, port portUti type Lifecycle interface { Connection() ssh.Conn + Channel() ssh.Channel PortRegistry() portUtil.Port User() string SetChannel(channel ssh.Channel) @@ -74,16 +75,19 @@ func (l *lifecycle) User() string { func (l *lifecycle) SetChannel(channel ssh.Channel) { l.channel = channel } + +func (l *lifecycle) Channel() ssh.Channel { + return l.channel +} + func (l *lifecycle) Connection() ssh.Conn { return l.conn } + func (l *lifecycle) SetStatus(status types.SessionStatus) { l.mu.Lock() defer l.mu.Unlock() l.status = status - if status == types.SessionStatusRUNNING && l.startedAt.IsZero() { - l.startedAt = time.Now() - } } func (l *lifecycle) IsActive() bool { diff --git a/session/lifecycle/lifecycle_test.go b/session/lifecycle/lifecycle_test.go new file mode 100644 index 0000000..5a8deb0 --- /dev/null +++ b/session/lifecycle/lifecycle_test.go @@ -0,0 +1,322 @@ +package lifecycle + +import ( + "errors" + "io" + "net" + "testing" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "golang.org/x/crypto/ssh" +) + +type MockSessionRegistry struct { + mock.Mock +} + +func (m *MockSessionRegistry) Remove(key types.SessionKey) { + m.Called(key) +} + +type MockForwarder struct { + mock.Mock +} + +func (m *MockForwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { + args := m.Called(origin) + return args.Get(0).([]byte) +} + +func (m *MockForwarder) WriteBadGatewayResponse(dst io.Writer) { + m.Called(dst) +} + +func (m *MockForwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { + m.Called(dst, src) +} + +func (m *MockForwarder) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockForwarder) TunnelType() types.TunnelType { + args := m.Called() + return args.Get(0).(types.TunnelType) +} + +func (m *MockForwarder) ForwardedPort() uint16 { + args := m.Called() + return args.Get(0).(uint16) +} + +func (m *MockForwarder) SetType(tunnelType types.TunnelType) { + m.Called(tunnelType) +} + +func (m *MockForwarder) SetForwardedPort(port uint16) { + m.Called(port) +} + +func (m *MockForwarder) SetListener(listener net.Listener) { + m.Called(listener) +} + +func (m *MockForwarder) Listener() net.Listener { + args := m.Called() + return args.Get(0).(net.Listener) +} + +func (m *MockForwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(payload) + if args.Get(0) == nil { + return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) + } + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +type MockPort struct { + mock.Mock +} + +func (m *MockPort) AddRange(startPort, endPort uint16) error { + return m.Called(startPort, endPort).Error(0) +} +func (m *MockPort) Unassigned() (uint16, bool) { + args := m.Called() + var port uint16 + if args.Get(0) != nil { + switch v := args.Get(0).(type) { + case int: + port = uint16(v) + case uint16: + port = v + case uint32: + port = uint16(v) + case int32: + port = uint16(v) + case float64: + port = uint16(v) + default: + port = uint16(args.Int(0)) + } + } + return port, args.Bool(1) +} +func (m *MockPort) SetStatus(port uint16, assigned bool) error { + return m.Called(port, assigned).Error(0) +} +func (m *MockPort) Claim(port uint16) bool { + return m.Called(port).Bool(0) +} + +type MockSlug struct { + mock.Mock +} + +func (ms *MockSlug) Set(slug string) { + ms.Called(slug) +} +func (ms *MockSlug) String() string { + return ms.Called().String(0) +} + +type MockSSHConn struct { + ssh.Conn + mock.Mock +} + +func (m *MockSSHConn) Close() error { + args := m.Called() + return args.Error(0) +} + +type MockSSHChannel struct { + ssh.Channel + mock.Mock +} + +func (m *MockSSHChannel) Close() error { + return m.Called().Error(0) +} + +type mockNewChannel struct { + ssh.NewChannel + mock.Mock +} + +func (m *mockNewChannel) Accept() (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called() + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +func (m *MockSSHConn) OpenChannel(name string, data []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(name, data) + if args.Get(0) == nil { + return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) + } + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +func TestNew(t *testing.T) { + mockSSHConn := new(MockSSHConn) + mockForwarder := &MockForwarder{} + mockSlug := &MockSlug{} + mockPort := &MockPort{} + mockSessionRegistry := &MockSessionRegistry{} + + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") + + assert.NotNil(t, mockLifecycle.Connection()) + assert.NotNil(t, mockLifecycle.User()) + assert.NotNil(t, mockLifecycle.PortRegistry()) + assert.NotNil(t, mockLifecycle.StartedAt()) +} + +func TestLifecycle_User(t *testing.T) { + mockSSHConn := new(MockSSHConn) + mockForwarder := &MockForwarder{} + mockSlug := &MockSlug{} + mockPort := &MockPort{} + mockSessionRegistry := &MockSessionRegistry{} + + user := "mas-fuad" + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, user) + assert.Equal(t, user, mockLifecycle.User()) +} + +func TestLifecycle_SetChannel(t *testing.T) { + mockSSHConn := new(MockSSHConn) + mockForwarder := &MockForwarder{} + mockSlug := &MockSlug{} + mockPort := &MockPort{} + mockSessionRegistry := &MockSessionRegistry{} + + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") + + mockSSHChannel := &MockSSHChannel{} + + mockLifecycle.SetChannel(mockSSHChannel) + + assert.Equal(t, mockSSHChannel, mockLifecycle.Channel()) +} + +func TestLifecycle_SetStatus(t *testing.T) { + mockSSHConn := new(MockSSHConn) + mockForwarder := &MockForwarder{} + mockSlug := &MockSlug{} + mockPort := &MockPort{} + mockSessionRegistry := &MockSessionRegistry{} + + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") + + assert.NotNil(t, mockLifecycle.StartedAt()) +} + +func TestLifecycle_IsActive(t *testing.T) { + mockSSHConn := new(MockSSHConn) + mockForwarder := &MockForwarder{} + mockSlug := &MockSlug{} + mockPort := &MockPort{} + mockSessionRegistry := &MockSessionRegistry{} + + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") + + mockLifecycle.SetStatus(types.SessionStatusRUNNING) + assert.True(t, mockLifecycle.IsActive()) +} + +func TestLifecycle_Close(t *testing.T) { + tests := []struct { + name string + tunnelType types.TunnelType + connCloseErr error + channelCloseErr error + expectErr bool + alreadyClosed bool + }{ + { + name: "Close HTTP forwarding success", + tunnelType: types.TunnelTypeHTTP, + expectErr: false, + }, + { + name: "Close TCP forwarding success", + tunnelType: types.TunnelTypeTCP, + expectErr: false, + }, + { + name: "Close with conn close error", + tunnelType: types.TunnelTypeHTTP, + connCloseErr: errors.New("conn close error"), + expectErr: true, + }, + { + name: "Close with channel close error", + tunnelType: types.TunnelTypeHTTP, + channelCloseErr: errors.New("channel close error"), + expectErr: true, + }, + { + name: "Close when already closed", + tunnelType: types.TunnelTypeHTTP, + alreadyClosed: true, + expectErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockSSHConn := &MockSSHConn{} + mockSSHConn.On("Close").Return(tt.connCloseErr) + + mockForwarder := &MockForwarder{} + mockForwarder.On("TunnelType").Return(tt.tunnelType) + if tt.tunnelType == types.TunnelTypeTCP { + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + mockForwarder.On("Close").Return(nil) + } + + mockSlug := &MockSlug{} + mockSlug.On("String").Return("test-slug") + + mockPort := &MockPort{} + if tt.tunnelType == types.TunnelTypeTCP { + mockPort.On("SetStatus", uint16(8080), false).Return(nil) + } + + mockSessionRegistry := &MockSessionRegistry{} + mockSessionRegistry.On("Remove", mock.Anything).Return() + + mockSSHChannel := &MockSSHChannel{} + mockSSHChannel.On("Close").Return(tt.channelCloseErr) + + mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") + + mockLifecycle.SetStatus(types.SessionStatusRUNNING) + mockLifecycle.SetChannel(mockSSHChannel) + + if tt.alreadyClosed { + mockLifecycle.Close() + } + + err := mockLifecycle.Close() + + if tt.expectErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + assert.False(t, mockLifecycle.IsActive()) + + mockSSHConn.AssertExpectations(t) + mockForwarder.AssertExpectations(t) + mockSlug.AssertExpectations(t) + mockPort.AssertExpectations(t) + mockSessionRegistry.AssertExpectations(t) + mockSSHChannel.AssertExpectations(t) + }) + } +} From 8fee8bf92e3abf30f814aa74bb4414ced4b0b551 Mon Sep 17 00:00:00 2001 From: bagas Date: Sat, 24 Jan 2026 23:47:51 +0700 Subject: [PATCH 31/47] test(server): add unit test for handleConnection --- server/server_test.go | 707 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 648 insertions(+), 59 deletions(-) diff --git a/server/server_test.go b/server/server_test.go index c35073a..572fa1f 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" "tunnel_pls/internal/registry" + "tunnel_pls/session/slug" "tunnel_pls/types" "github.com/stretchr/testify/assert" @@ -18,11 +19,11 @@ import ( "google.golang.org/grpc" ) -type mockRandom struct { +type MockRandom struct { mock.Mock } -func (m *mockRandom) String(length int) (string, error) { +func (m *MockRandom) String(length int) (string, error) { args := m.Called(length) return args.String(0), args.Error(1) } @@ -46,17 +47,30 @@ func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0 func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } func (m *MockConfig) PprofPort() string { return m.Called().String(0) } -func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } -func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } -func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } -func (m *MockConfig) NodeToken() string { return m.Called().String(0) } -func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { + args := m.Called() + if args.Get(0) == nil { + return 0 + } + switch v := args.Get(0).(type) { + case types.ServerMode: + return v + case int: + return types.ServerMode(v) + default: + return types.ServerMode(args.Int(0)) + } +} +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } -type mockRegistry struct { +type MockSessionRegistry struct { mock.Mock } -func (m *mockRegistry) Get(key types.SessionKey) (registry.Session, error) { +func (m *MockSessionRegistry) Get(key registry.Key) (registry.Session, error) { args := m.Called(key) if args.Get(0) == nil { return nil, args.Error(1) @@ -64,7 +78,7 @@ func (m *mockRegistry) Get(key types.SessionKey) (registry.Session, error) { return args.Get(0).(registry.Session), args.Error(1) } -func (m *mockRegistry) GetWithUser(user string, key types.SessionKey) (registry.Session, error) { +func (m *MockSessionRegistry) GetWithUser(user string, key registry.Key) (registry.Session, error) { args := m.Called(user, key) if args.Get(0) == nil { return nil, args.Error(1) @@ -72,77 +86,85 @@ func (m *mockRegistry) GetWithUser(user string, key types.SessionKey) (registry. return args.Get(0).(registry.Session), args.Error(1) } -func (m *mockRegistry) Register(key types.SessionKey, session registry.Session) bool { - return m.Called(key, session).Bool(0) +func (m *MockSessionRegistry) Update(user string, oldKey, newKey registry.Key) error { + args := m.Called(user, oldKey, newKey) + return args.Error(0) } -func (m *mockRegistry) Update(user string, oldKey types.SessionKey, newKey types.SessionKey) error { - return m.Called(user, oldKey, newKey).Error(0) +func (m *MockSessionRegistry) Register(key registry.Key, session registry.Session) bool { + args := m.Called(key, session) + return args.Bool(0) } -func (m *mockRegistry) Remove(key types.SessionKey) { +func (m *MockSessionRegistry) Remove(key registry.Key) { m.Called(key) } -func (m *mockRegistry) GetAllSessionFromUser(user string) []registry.Session { - return m.Called(user).Get(0).([]registry.Session) +func (m *MockSessionRegistry) GetAllSessionFromUser(user string) []registry.Session { + args := m.Called(user) + return args.Get(0).([]registry.Session) } -type mockGrpcClient struct { +func (m *MockSessionRegistry) Slug() slug.Slug { + args := m.Called() + return args.Get(0).(slug.Slug) +} + +type MockGRPCClient struct { mock.Mock } -func (m *mockGrpcClient) SubscribeEvents(ctx context.Context, identity string, authToken string) error { - return m.Called(ctx, identity, authToken).Error(0) -} - -func (m *mockGrpcClient) ClientConn() *grpc.ClientConn { +func (m *MockGRPCClient) ClientConn() *grpc.ClientConn { args := m.Called() - if args.Get(0) == nil { - return nil - } return args.Get(0).(*grpc.ClientConn) } -func (m *mockGrpcClient) AuthorizeConn(ctx context.Context, token string) (bool, string, error) { +func (m *MockGRPCClient) AuthorizeConn(ctx context.Context, token string) (authorized bool, user string, err error) { args := m.Called(ctx, token) return args.Bool(0), args.String(1), args.Error(2) } -func (m *mockGrpcClient) CheckServerHealth(ctx context.Context) error { - return m.Called(ctx).Error(0) +func (m *MockGRPCClient) CheckServerHealth(ctx context.Context) error { + args := m.Called(ctx) + return args.Error(0) } -func (m *mockGrpcClient) Close() error { - return m.Called().Error(0) +func (m *MockGRPCClient) SubscribeEvents(ctx context.Context, domain, token string) error { + args := m.Called(ctx, domain, token) + return args.Error(0) } -type mockPort struct { +func (m *MockGRPCClient) Close() error { + args := m.Called() + return args.Error(0) +} + +type MockPort struct { mock.Mock } -func (m *mockPort) AddRange(startPort, endPort uint16) error { +func (m *MockPort) AddRange(startPort, endPort uint16) error { return m.Called(startPort, endPort).Error(0) } -func (m *mockPort) Unassigned() (uint16, bool) { +func (m *MockPort) Unassigned() (uint16, bool) { args := m.Called() return uint16(args.Int(0)), args.Bool(1) } -func (m *mockPort) SetStatus(port uint16, assigned bool) error { +func (m *MockPort) SetStatus(port uint16, assigned bool) error { return m.Called(port, assigned).Error(0) } -func (m *mockPort) Claim(port uint16) bool { +func (m *MockPort) Claim(port uint16) bool { return m.Called(port).Bool(0) } -type mockListener struct { +type MockListener struct { mock.Mock } -func (m *mockListener) Accept() (net.Conn, error) { +func (m *MockListener) Accept() (net.Conn, error) { args := m.Called() if args.Get(0) == nil { return nil, args.Error(1) @@ -150,14 +172,22 @@ func (m *mockListener) Accept() (net.Conn, error) { return args.Get(0).(net.Conn), args.Error(1) } -func (m *mockListener) Close() error { +func (m *MockListener) Close() error { return m.Called().Error(0) } -func (m *mockListener) Addr() net.Addr { +func (m *MockListener) Addr() net.Addr { return m.Called().Get(0).(net.Addr) } +type MockSession struct { + mock.Mock +} + +func (m *MockSession) Start() error { + return m.Called().Error(0) +} + func getTestSSHConfig() (*ssh.ServerConfig, ssh.Signer) { key, _ := rsa.GenerateKey(rand.Reader, 2048) signer, _ := ssh.NewSignerFromKey(key) @@ -169,11 +199,11 @@ func getTestSSHConfig() (*ssh.ServerConfig, ssh.Signer) { } func TestNew(t *testing.T) { - mr := new(mockRandom) + mr := new(MockRandom) mc := new(MockConfig) - mreg := new(mockRegistry) - mg := new(mockGrpcClient) - mp := new(mockPort) + mreg := new(MockSessionRegistry) + mg := new(MockGRPCClient) + mp := new(MockPort) sc, _ := getTestSSHConfig() tests := []struct { @@ -222,27 +252,46 @@ func TestNew(t *testing.T) { } func TestClose(t *testing.T) { - mr := new(mockRandom) + mr := new(MockRandom) mc := new(MockConfig) - mreg := new(mockRegistry) - mg := new(mockGrpcClient) - mp := new(mockPort) + mreg := new(MockSessionRegistry) + mg := new(MockGRPCClient) + mp := new(MockPort) sc, _ := getTestSSHConfig() - s, _ := New(mr, mc, sc, mreg, mg, mp, "0") - err := s.Close() - assert.NoError(t, err) + t.Run("successful close", func(t *testing.T) { + s, _ := New(mr, mc, sc, mreg, mg, mp, "0") + err := s.Close() + assert.NoError(t, err) + }) - err = s.Close() - assert.Error(t, err) + t.Run("close already closed listener", func(t *testing.T) { + s, _ := New(mr, mc, sc, mreg, mg, mp, "0") + _ = s.Close() + err := s.Close() + assert.Error(t, err) + }) + + t.Run("close with nil listener", func(t *testing.T) { + s := &server{ + sshListener: nil, + } + defer func() { + if r := recover(); r != nil { + assert.NotNil(t, r) + } + }() + _ = s.Close() + t.Fatal("expected panic for nil listener") + }) } func TestStart(t *testing.T) { - mr := new(mockRandom) + mr := new(MockRandom) mc := new(MockConfig) - mreg := new(mockRegistry) - mg := new(mockGrpcClient) - mp := new(mockPort) + mreg := new(MockSessionRegistry) + mg := new(MockGRPCClient) + mp := new(MockPort) sc, _ := getTestSSHConfig() t.Run("normal stop", func(t *testing.T) { @@ -254,8 +303,8 @@ func TestStart(t *testing.T) { s.Start() }) - t.Run("accept error", func(t *testing.T) { - ml := new(mockListener) + t.Run("accept error - temporary error continues loop", func(t *testing.T) { + ml := new(MockListener) s := &server{ sshListener: ml, sshPort: "0", @@ -267,4 +316,544 @@ func TestStart(t *testing.T) { s.Start() ml.AssertExpectations(t) }) + + t.Run("accept error - immediate close", func(t *testing.T) { + ml := new(MockListener) + s := &server{ + sshListener: ml, + sshPort: "0", + } + + ml.On("Accept").Return(nil, net.ErrClosed).Once() + + s.Start() + ml.AssertExpectations(t) + }) + + t.Run("accept success - connection fails SSH handshake", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockGrpcClient := &MockGRPCClient{} + mockPort := &MockPort{} + + sshConfig, _ := getTestSSHConfig() + + serverConn, clientConn := net.Pipe() + + mockListener := &MockListener{} + mockListener.On("Accept").Return(serverConn, nil).Once() + mockListener.On("Accept").Return(nil, net.ErrClosed).Once() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshListener: mockListener, + sshConfig: sshConfig, + grpcClient: mockGrpcClient, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + go s.Start() + + time.Sleep(50 * time.Millisecond) + clientConn.Close() + time.Sleep(100 * time.Millisecond) + + mockListener.AssertExpectations(t) + }) + + t.Run("accept success - valid SSH connection without auth", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + sshConfig, _ := getTestSSHConfig() + + serverConn, clientConn := net.Pipe() + + mockListener := &MockListener{} + mockListener.On("Accept").Return(serverConn, nil).Once() + mockListener.On("Accept").Return(nil, net.ErrClosed).Once() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshListener: mockListener, + sshConfig: sshConfig, + grpcClient: nil, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + go s.Start() + + time.Sleep(50 * time.Millisecond) + clientConn.Close() + time.Sleep(100 * time.Millisecond) + + mockListener.AssertExpectations(t) + }) +} + +func TestHandleConnection(t *testing.T) { + t.Run("SSH handshake fails - connection closed", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockGrpcClient := &MockGRPCClient{} + mockPort := &MockPort{} + + sshConfig, _ := getTestSSHConfig() + + serverConn, clientConn := net.Pipe() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: sshConfig, + grpcClient: mockGrpcClient, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + clientConn.Close() + s.handleConnection(serverConn) + }) + + // SSH SERVER SUCH PAIN IN THE ASS TO BE UNIT TEST, I FUCKING HATE THIS + // GONNA IMPLEMENT THIS UNIT TEST LATER + + //t.Run("SSH handshake fails - invalid protocol", func(t *testing.T) { + // mockRandom := &MockRandom{} + // mockConfig := &MockConfig{} + // mockSessionRegistry := &MockSessionRegistry{} + // mockGrpcClient := &MockGRPCClient{} + // mockPort := &MockPort{} + // + // sshConfig, _ := getTestSSHConfig() + // + // serverConn, clientConn := net.Pipe() + // + // s := &server{ + // randomizer: mockRandom, + // config: mockConfig, + // sshPort: "0", + // sshConfig: sshConfig, + // grpcClient: mockGrpcClient, + // sessionRegistry: mockSessionRegistry, + // portRegistry: mockPort, + // } + // + // done := make(chan bool, 1) + // + // go func() { + // s.handleConnection(serverConn) + // done <- true + // }() + // + // go func() { + // clientConn.Write([]byte("invalid ssh protocol\n")) + // clientConn.Close() + // }() + // + // select { + // case <-done: + // case <-time.After(1 * time.Second): + // t.Fatal("handleConnection did not complete in time") + // } + //}) + + t.Run("SSH connection established without gRPC client", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + serverConfig, _ := getTestSSHConfig() + + mockConfig.On("Domain").Return("test.com") + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("SSHPort").Return("2200") + mockRandom.On("String", mock.Anything).Return("ilovefemboy", nil) + mockSessionRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + mockSessionRegistry.On("Remove", mock.Anything).Return(nil) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer listener.Close() + + serverAddr := listener.Addr().String() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: serverConfig, + grpcClient: nil, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + done := make(chan bool, 1) + + go func() { + conn, err := listener.Accept() + if err != nil { + return + } + s.handleConnection(conn) + done <- true + }() + + time.Sleep(50 * time.Millisecond) + + clientConfig := &ssh.ClientConfig{ + User: "testuser", + Auth: []ssh.AuthMethod{ssh.Password("password")}, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + Timeout: 2 * time.Second, + } + + go func() { + client, err := ssh.Dial("tcp", serverAddr, clientConfig) + if err != nil { + t.Logf("Client dial failed: %v", err) + return + } + defer client.Close() + + type forwardPayload struct { + BindAddr string + BindPort uint32 + } + + payload := ssh.Marshal(forwardPayload{ + BindAddr: "localhost", + BindPort: 80, + }) + + _, _, err = client.SendRequest("tcpip-forward", true, payload) + if err != nil { + t.Logf("Forward request failed: %v", err) + } + + time.Sleep(500 * time.Millisecond) + }() + + select { + case <-done: + t.Log("handleConnection completed") + case <-time.After(5 * time.Second): + t.Fatal("handleConnection did not complete in time") + } + }) + + t.Run("SSH connection established with gRPC authorization", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockGrpcClient := &MockGRPCClient{} + mockPort := &MockPort{} + + serverConfig, _ := getTestSSHConfig() + + mockGrpcClient.On("AuthorizeConn", mock.Anything, "testuser").Return(true, "authorized_user", nil) + mockConfig.On("Domain").Return("test.com") + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("SSHPort").Return("2200") + mockRandom.On("String", mock.Anything).Return("ilovefemboy", nil) + mockSessionRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + mockSessionRegistry.On("Remove", mock.Anything).Return(nil) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer listener.Close() + + serverAddr := listener.Addr().String() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: serverConfig, + grpcClient: mockGrpcClient, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + done := make(chan bool, 1) + + go func() { + conn, err := listener.Accept() + if err != nil { + return + } + s.handleConnection(conn) + done <- true + }() + + time.Sleep(50 * time.Millisecond) + + clientConfig := &ssh.ClientConfig{ + User: "testuser", + Auth: []ssh.AuthMethod{ssh.Password("password")}, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + Timeout: 2 * time.Second, + } + + go func() { + client, err := ssh.Dial("tcp", serverAddr, clientConfig) + if err != nil { + t.Logf("Client dial failed: %v", err) + return + } + defer client.Close() + + type forwardPayload struct { + BindAddr string + BindPort uint32 + } + + payload := ssh.Marshal(forwardPayload{ + BindAddr: "localhost", + BindPort: 80, + }) + + _, _, err = client.SendRequest("tcpip-forward", true, payload) + if err != nil { + t.Logf("Forward request failed: %v", err) + } + + time.Sleep(500 * time.Millisecond) + }() + + select { + case <-done: + mockGrpcClient.AssertExpectations(t) + case <-time.After(5 * time.Second): + t.Fatal("handleConnection did not complete in time") + } + }) + + t.Run("SSH connection with gRPC authorization error", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockGrpcClient := &MockGRPCClient{} + mockPort := &MockPort{} + + serverConfig, _ := getTestSSHConfig() + + mockGrpcClient.On("AuthorizeConn", mock.Anything, "testuser").Return(true, "authorized_user", nil) + mockConfig.On("Domain").Return("test.com") + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("SSHPort").Return("2200") + mockRandom.On("String", mock.Anything).Return("ilovefemboy", nil) + mockSessionRegistry.On("Register", mock.Anything, mock.Anything).Return(true) + mockSessionRegistry.On("Remove", mock.Anything).Return(nil) + + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer listener.Close() + + serverAddr := listener.Addr().String() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: serverConfig, + grpcClient: mockGrpcClient, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + done := make(chan bool, 1) + + go func() { + conn, err := listener.Accept() + if err != nil { + return + } + s.handleConnection(conn) + done <- true + }() + + time.Sleep(50 * time.Millisecond) + + clientConfig := &ssh.ClientConfig{ + User: "testuser", + Auth: []ssh.AuthMethod{ssh.Password("password")}, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + Timeout: 2 * time.Second, + } + + go func() { + client, err := ssh.Dial("tcp", serverAddr, clientConfig) + if err != nil { + t.Logf("Client dial failed: %v", err) + return + } + defer client.Close() + + type forwardPayload struct { + BindAddr string + BindPort uint32 + } + + payload := ssh.Marshal(forwardPayload{ + BindAddr: "localhost", + BindPort: 8080, + }) + + _, _, err = client.SendRequest("tcpip-forward", true, payload) + if err != nil { + t.Logf("Forward request failed: %v", err) + } + + time.Sleep(500 * time.Millisecond) + }() + + select { + case <-done: + mockGrpcClient.AssertExpectations(t) + case <-time.After(5 * time.Second): + t.Fatal("handleConnection did not complete in time") + } + }) + + t.Run("connection cleanup on close", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + serverConfig, _ := getTestSSHConfig() + + serverConn, clientConn := net.Pipe() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: serverConfig, + grpcClient: nil, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + done := make(chan bool, 1) + + go func() { + s.handleConnection(serverConn) + done <- true + }() + + clientConn.Close() + + select { + case <-done: + case <-time.After(1 * time.Second): + t.Fatal("handleConnection did not complete in time") + } + }) +} + +func TestIntegration(t *testing.T) { + t.Run("full server lifecycle", func(t *testing.T) { + mr := new(MockRandom) + mc := new(MockConfig) + mreg := new(MockSessionRegistry) + mg := new(MockGRPCClient) + mp := new(MockPort) + sc, _ := getTestSSHConfig() + + s, err := New(mr, mc, sc, mreg, mg, mp, "0") + assert.NoError(t, err) + assert.NotNil(t, s) + + go func() { + time.Sleep(100 * time.Millisecond) + err := s.Close() + assert.NoError(t, err) + }() + + s.Start() + }) + + t.Run("multiple connections", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + sshConfig, _ := getTestSSHConfig() + + conn1Server, conn1Client := net.Pipe() + conn2Server, conn2Client := net.Pipe() + + mockListener := &MockListener{} + mockListener.On("Accept").Return(conn1Server, nil).Once() + mockListener.On("Accept").Return(conn2Server, nil).Once() + mockListener.On("Accept").Return(nil, net.ErrClosed).Once() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshListener: mockListener, + sshConfig: sshConfig, + grpcClient: nil, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + go s.Start() + + time.Sleep(50 * time.Millisecond) + conn1Client.Close() + time.Sleep(50 * time.Millisecond) + conn2Client.Close() + time.Sleep(100 * time.Millisecond) + + mockListener.AssertExpectations(t) + }) +} + +func TestErrorHandling(t *testing.T) { + t.Run("write error during SSH handshake", func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSessionRegistry := &MockSessionRegistry{} + mockPort := &MockPort{} + + sshConfig, _ := getTestSSHConfig() + + serverConn, clientConn := net.Pipe() + clientConn.Close() + + s := &server{ + randomizer: mockRandom, + config: mockConfig, + sshPort: "0", + sshConfig: sshConfig, + grpcClient: nil, + sessionRegistry: mockSessionRegistry, + portRegistry: mockPort, + } + + s.handleConnection(serverConn) + }) } From b8c6359820dc201e9df3b4f52a16e317227ecb1c Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 12:21:25 +0700 Subject: [PATCH 32/47] refactor: remove custom parsing functions and use ssh.Marshal/ssh.Unmarshal for serialization --- internal/transport/tcp.go | 1 - session/forwarder/forwarder.go | 50 +++++------------- session/session.go | 95 +++++++++++----------------------- session/session_test.go | 82 +++-------------------------- 4 files changed, 50 insertions(+), 178 deletions(-) diff --git a/internal/transport/tcp.go b/internal/transport/tcp.go index 91ab0b0..9ea2354 100644 --- a/internal/transport/tcp.go +++ b/internal/transport/tcp.go @@ -57,7 +57,6 @@ func (tt *tcp) handleTcp(conn net.Conn) { channel, reqs, err := tt.forwarder.OpenForwardedChannel(payload) if err != nil { log.Printf("Failed to open forwarded-tcpip channel: %v", err) - return } diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index c602565..43bde3e 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -1,8 +1,6 @@ package forwarder import ( - "bytes" - "encoding/binary" "errors" "fmt" "io" @@ -189,42 +187,20 @@ func (f *forwarder) Close() error { } func (f *forwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { - var buf bytes.Buffer - - host, originPort := parseAddr(origin.String()) - - writeSSHString(&buf, "localhost") - err := binary.Write(&buf, binary.BigEndian, uint32(f.ForwardedPort())) - if err != nil { - log.Printf("Failed to write string to buffer: %v", err) - return nil - } - - writeSSHString(&buf, host) - err = binary.Write(&buf, binary.BigEndian, uint32(originPort)) - if err != nil { - log.Printf("Failed to write string to buffer: %v", err) - return nil - } - - return buf.Bytes() -} - -func parseAddr(addr string) (string, uint16) { - host, portStr, err := net.SplitHostPort(addr) - if err != nil { - log.Printf("Failed to parse origin address: %s from address %s", err.Error(), addr) - return "0.0.0.0", uint16(0) - } + host, portStr, _ := net.SplitHostPort(origin.String()) port, _ := strconv.Atoi(portStr) - return host, uint16(port) -} -func writeSSHString(buffer *bytes.Buffer, str string) { - err := binary.Write(buffer, binary.BigEndian, uint32(len(str))) - if err != nil { - log.Printf("Failed to write string to buffer: %v", err) - return + forwardPayload := struct { + DestAddr string + DestPort uint32 + OriginAddr string + OriginPort uint32 + }{ + DestAddr: "localhost", + DestPort: uint32(f.ForwardedPort()), + OriginAddr: host, + OriginPort: uint32(port), } - buffer.WriteString(str) + + return ssh.Marshal(forwardPayload) } diff --git a/session/session.go b/session/session.go index e5d4cc2..cc27c4c 100644 --- a/session/session.go +++ b/session/session.go @@ -1,7 +1,6 @@ package session import ( - "bytes" "encoding/binary" "errors" "fmt" @@ -173,13 +172,11 @@ func (s *session) setupInteractiveMode(channel ssh.NewChannel) error { } func (s *session) handleMissingForwardRequest() error { - err := s.interaction.Send(fmt.Sprintf("PortRegistry forwarding request not received. Ensure you ran the correct command with -R flag. Example: ssh %s -p %s -R 80:localhost:3000", s.config.Domain(), s.config.SSHPort())) + err := s.interaction.Send(fmt.Sprintf("Port forwarding request not received. Ensure you ran the correct command with -R flag. Example: ssh %s -p %s -R 80:localhost:3000", s.config.Domain(), s.config.SSHPort())) if err != nil { return err } - if err = s.lifecycle.Close(); err != nil { - log.Printf("failed to close session: %v", err) - } + return fmt.Errorf("no forwarding Request") } @@ -239,8 +236,7 @@ func (s *session) HandleGlobalRequest(GlobalRequest <-chan *ssh.Request) error { for req := range GlobalRequest { switch req.Type { case "shell", "pty-req": - err := req.Reply(true, nil) - if err != nil { + if err := req.Reply(true, nil); err != nil { return err } case "window-change": @@ -249,8 +245,7 @@ func (s *session) HandleGlobalRequest(GlobalRequest <-chan *ssh.Request) error { } default: log.Println("Unknown request type:", req.Type) - err := req.Reply(false, nil) - if err != nil { + if err := req.Reply(false, nil); err != nil { return err } } @@ -258,24 +253,24 @@ func (s *session) HandleGlobalRequest(GlobalRequest <-chan *ssh.Request) error { return nil } -func (s *session) parseForwardPayload(payloadReader io.Reader) (address string, port uint16, err error) { - address, err = readSSHString(payloadReader) - if err != nil { - return "", 0, err +func (s *session) parseForwardPayload(payload []byte) (address string, port uint16, err error) { + var forwardPayload struct { + BindAddr string + BindPort uint32 } - var rawPortToBind uint32 - if err = binary.Read(payloadReader, binary.BigEndian, &rawPortToBind); err != nil { - return "", 0, err + if err = ssh.Unmarshal(payload, &forwardPayload); err != nil { + return "", 0, fmt.Errorf("failed to unmarshal forward payload: %w", err) } - if rawPortToBind > 65535 { + if forwardPayload.BindPort > 65535 { return "", 0, fmt.Errorf("port is larger than allowed port of 65535") } - port = uint16(rawPortToBind) + port = uint16(forwardPayload.BindPort) + if isBlockedPort(port) { - return "", 0, fmt.Errorf("port is block") + return "", 0, fmt.Errorf("port is blocked") } if port == 0 { @@ -283,10 +278,10 @@ func (s *session) parseForwardPayload(payloadReader io.Reader) (address string, if !ok { return "", 0, fmt.Errorf("no available port") } - return address, unassigned, err + return forwardPayload.BindAddr, unassigned, nil } - return address, port, err + return forwardPayload.BindAddr, port, nil } func (s *session) denyForwardingRequest(req *ssh.Request, key *types.SessionKey, listener io.Closer, msg string) error { @@ -294,37 +289,25 @@ func (s *session) denyForwardingRequest(req *ssh.Request, key *types.SessionKey, if key != nil { s.registry.Remove(*key) } + if listener != nil { - if err := listener.Close(); err != nil { - errs = append(errs, fmt.Errorf("close listener: %w", err)) - } - } - if err := req.Reply(false, nil); err != nil { - errs = append(errs, fmt.Errorf("reply request: %w", err)) - } - if err := s.lifecycle.Close(); err != nil { - errs = append(errs, fmt.Errorf("close session: %w", err)) + errs = append(errs, listener.Close()) } + + errs = append(errs, req.Reply(false, nil)) + errs = append(errs, s.lifecycle.Close()) errs = append(errs, fmt.Errorf("deny forwarding request: %s", msg)) return errors.Join(errs...) } -func (s *session) approveForwardingRequest(req *ssh.Request, port uint16) (err error) { - buf := new(bytes.Buffer) - err = binary.Write(buf, binary.BigEndian, uint32(port)) - if err != nil { - return err - } - - err = req.Reply(true, buf.Bytes()) - if err != nil { - return err - } - return nil -} - func (s *session) finalizeForwarding(req *ssh.Request, portToBind uint16, listener net.Listener, tunnelType types.TunnelType, slug string) error { - err := s.approveForwardingRequest(req, portToBind) + replyPayload := struct { + BoundPort uint32 + }{ + BoundPort: uint32(portToBind), + } + err := req.Reply(true, ssh.Marshal(replyPayload)) + if err != nil { return err } @@ -342,9 +325,7 @@ func (s *session) finalizeForwarding(req *ssh.Request, portToBind uint16, listen } func (s *session) HandleTCPIPForward(req *ssh.Request) error { - reader := bytes.NewReader(req.Payload) - - address, port, err := s.parseForwardPayload(reader) + address, port, err := s.parseForwardPayload(req.Payload) if err != nil { return s.denyForwardingRequest(req, nil, nil, fmt.Sprintf("cannot parse forwarded payload: %s", err.Error())) } @@ -376,13 +357,13 @@ func (s *session) HandleHTTPForward(req *ssh.Request, portToBind uint16) error { func (s *session) HandleTCPForward(req *ssh.Request, addr string, portToBind uint16) error { if claimed := s.lifecycle.PortRegistry().Claim(portToBind); !claimed { - return s.denyForwardingRequest(req, nil, nil, fmt.Sprintf("PortRegistry %d is already in use or restricted", portToBind)) + return s.denyForwardingRequest(req, nil, nil, fmt.Sprintf("Port %d is already in use or restricted", portToBind)) } tcpServer := transport.NewTCPServer(portToBind, s.forwarder) listener, err := tcpServer.Listen() if err != nil { - return s.denyForwardingRequest(req, nil, listener, fmt.Sprintf("PortRegistry %d is already in use or restricted", portToBind)) + return s.denyForwardingRequest(req, nil, listener, fmt.Sprintf("Port %d is already in use or restricted", portToBind)) } key := types.SessionKey{Id: fmt.Sprintf("%d", portToBind), Type: types.TunnelTypeTCP} @@ -405,20 +386,6 @@ func (s *session) HandleTCPForward(req *ssh.Request, addr string, portToBind uin return nil } -func readSSHString(reader io.Reader) (string, error) { - var length uint32 - if err := binary.Read(reader, binary.BigEndian, &length); err != nil { - return "", err - } - strBytes := make([]byte, length) - if length > 0 { - if _, err := io.ReadFull(reader, strBytes); err != nil { - return "", err - } - } - return string(strBytes), nil -} - func isBlockedPort(port uint16) bool { if port == 80 || port == 443 { return false diff --git a/session/session_test.go b/session/session_test.go index 3d41d04..0e87834 100644 --- a/session/session_test.go +++ b/session/session_test.go @@ -1,7 +1,6 @@ package session import ( - "bytes" "crypto/rand" "crypto/rsa" "crypto/x509" @@ -287,52 +286,6 @@ func TestIsBlockedPort(t *testing.T) { } } -func TestReadSSHString(t *testing.T) { - tests := []struct { - name string - input []byte - want string - wantErr bool - }{ - { - name: "valid string", - input: append([]byte{0, 0, 0, 4}, []byte("test")...), - want: "test", - wantErr: false, - }, - { - name: "empty string", - input: []byte{0, 0, 0, 0}, - want: "", - wantErr: false, - }, - { - name: "short length", - input: []byte{0, 0, 0}, - want: "", - wantErr: true, - }, - { - name: "missing payload", - input: []byte{0, 0, 0, 4, 'a', 'b'}, - want: "", - wantErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := readSSHString(bytes.NewReader(tt.input)) - if tt.wantErr { - assert.Error(t, err) - } else { - assert.NoError(t, err) - assert.Equal(t, tt.want, got) - } - }) - } -} - func TestHandleGlobalRequest(t *testing.T) { _, sReqs, _, cConn, cleanup := setupSSH(t) defer cleanup() @@ -1033,7 +986,7 @@ func TestParseForwardPayload_Errors(t *testing.T) { s := &session{} t.Run("Short Address", func(t *testing.T) { - _, _, err := s.parseForwardPayload(bytes.NewReader([]byte{0, 0, 0, 4})) + _, _, err := s.parseForwardPayload([]byte{0, 0, 0, 4}) if err == nil { t.Error("expected error, got nil") } @@ -1041,7 +994,7 @@ func TestParseForwardPayload_Errors(t *testing.T) { t.Run("Short Port", func(t *testing.T) { payload := append([]byte{0, 0, 0, 4}, []byte("addr")...) - _, _, err := s.parseForwardPayload(bytes.NewReader(payload)) + _, _, err := s.parseForwardPayload(payload) if err == nil { t.Error("expected error, got nil") } @@ -1052,7 +1005,7 @@ func TestParseForwardPayload_Errors(t *testing.T) { portBuf := make([]byte, 4) binary.BigEndian.PutUint32(portBuf, 22) payload = append(payload, portBuf...) - _, _, err := s.parseForwardPayload(bytes.NewReader(payload)) + _, _, err := s.parseForwardPayload(payload) if err == nil { t.Error("expected error, got nil") } else if !strings.Contains(err.Error(), "port is block") { @@ -1160,11 +1113,7 @@ func TestDenyForwardingRequest_Full(t *testing.T) { req := getReq(t, cConn, sReqs) mCloser := &mockCloser{err: fmt.Errorf("close error")} err := s.denyForwardingRequest(req, nil, mCloser, "error") - if err == nil { - t.Error("expected error, got nil") - } else if !strings.Contains(err.Error(), "close listener: close error") { - t.Errorf("expected error to contain %q, got %q", "close listener: close error", err.Error()) - } + assert.Error(t, err, net.ErrClosed) }) t.Run("Reply error", func(t *testing.T) { @@ -1174,27 +1123,8 @@ func TestDenyForwardingRequest_Full(t *testing.T) { cConn.Close() time.Sleep(100 * time.Millisecond) - err := s.denyForwardingRequest(req, nil, nil, "error") - if err == nil { - t.Error("expected error, got nil") - } else if !strings.Contains(err.Error(), "reply request") { - t.Errorf("expected error to contain %q, got %q", "reply request", err.Error()) - } - }) - - t.Run("Lifecycle Close error", func(t *testing.T) { - s, _, _, sReqs, cConn, cleanup := setup(t) - defer cleanup() - req := getReq(t, cConn, sReqs) - mLife := &mockLifecycle{closeErr: fmt.Errorf("life close error")} - s.lifecycle = mLife - - err := s.denyForwardingRequest(req, nil, nil, "error") - if err == nil { - t.Error("expected error, got nil") - } else if !strings.Contains(err.Error(), "close session: life close error") { - t.Errorf("expected error to contain %q, got %q", "close session: life close error", err.Error()) - } + err := s.denyForwardingRequest(req, nil, nil, assert.AnError.Error()) + assert.Error(t, err, assert.AnError) }) } From 9785a97973922e0f9a339acc386ab5680d0cb5ac Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 13:47:57 +0700 Subject: [PATCH 33/47] refactor: remove duplicate channel management helpers from HTTP handler --- internal/transport/httphandler.go | 58 +++--------------- internal/transport/httphandler_test.go | 81 ++++++-------------------- internal/transport/tcp.go | 8 ++- internal/transport/tcp_test.go | 8 +-- internal/transport/transport_test.go | 15 ----- session/forwarder/forwarder.go | 12 ++-- 6 files changed, 43 insertions(+), 139 deletions(-) delete mode 100644 internal/transport/transport_test.go diff --git a/internal/transport/httphandler.go b/internal/transport/httphandler.go index 2a43f95..411a3f9 100644 --- a/internal/transport/httphandler.go +++ b/internal/transport/httphandler.go @@ -2,6 +2,7 @@ package transport import ( "bufio" + "context" "errors" "fmt" "io" @@ -19,8 +20,6 @@ import ( "golang.org/x/crypto/ssh" ) -var openChannelTimeout = 5 * time.Second - type httpHandler struct { domain string sessionRegistry registry.Registry @@ -139,13 +138,17 @@ func (hh *httpHandler) handlePingRequest(slug string, conn net.Conn) bool { } func (hh *httpHandler) forwardRequest(hw stream.HTTP, initialRequest header.RequestHeader, sshSession registry.Session) { - channel, err := hh.openForwardedChannel(hw, sshSession) + payload := sshSession.Forwarder().CreateForwardedTCPIPPayload(hw.RemoteAddr()) + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + defer cancel() + channel, reqs, err := sshSession.Forwarder().OpenForwardedChannel(ctx, payload) if err != nil { - log.Printf("Failed to establish channel: %v", err) - sshSession.Forwarder().WriteBadGatewayResponse(hw) + log.Printf("Failed to open forwarded-tcpip channel: %v", err) return } + go ssh.DiscardRequests(reqs) + defer func() { err = channel.Close() if err != nil && !errors.Is(err, io.EOF) { @@ -162,51 +165,6 @@ func (hh *httpHandler) forwardRequest(hw stream.HTTP, initialRequest header.Requ sshSession.Forwarder().HandleConnection(hw, channel) } -func (hh *httpHandler) openForwardedChannel(hw stream.HTTP, sshSession registry.Session) (ssh.Channel, error) { - payload := sshSession.Forwarder().CreateForwardedTCPIPPayload(hw.RemoteAddr()) - - type channelResult struct { - channel ssh.Channel - reqs <-chan *ssh.Request - err error - } - - resultChan := make(chan channelResult, 1) - - go func() { - channel, reqs, err := sshSession.Lifecycle().Connection().OpenChannel("forwarded-tcpip", payload) - select { - case resultChan <- channelResult{channel, reqs, err}: - default: - hh.cleanupUnusedChannel(channel, reqs) - } - }() - - select { - case result := <-resultChan: - if result.err != nil { - return nil, result.err - } - go ssh.DiscardRequests(result.reqs) - return result.channel, nil - case <-time.After(openChannelTimeout): - go func() { - result := <-resultChan - hh.cleanupUnusedChannel(result.channel, result.reqs) - }() - return nil, errors.New("timeout opening forwarded-tcpip channel") - } -} - -func (hh *httpHandler) cleanupUnusedChannel(channel ssh.Channel, reqs <-chan *ssh.Request) { - if channel != nil { - if err := channel.Close(); err != nil { - log.Printf("Failed to close unused channel: %v", err) - } - go ssh.DiscardRequests(reqs) - } -} - func (hh *httpHandler) setupMiddlewares(hw stream.HTTP) { fingerprintMiddleware := middleware.NewTunnelFingerprint() forwardedForMiddleware := middleware.NewForwardedFor(hw.RemoteAddr()) diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index 984f9b1..b4e592a 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -2,6 +2,7 @@ package transport import ( "bytes" + "context" "fmt" "io" "net" @@ -220,8 +221,8 @@ func (m *MockForwarder) Listener() net.Listener { return args.Get(0).(net.Listener) } -func (m *MockForwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called(payload) +func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(ctx, payload) if args.Get(0) == nil { return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) } @@ -358,12 +359,10 @@ func TestHandler(t *testing.T) { isTLS: true, redirectTLS: false, request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), - expected: []byte("HTTP/1.1 502 Bad Gateway\r\n\r\n"), + expected: []byte(""), setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) msr.On("Get", types.SessionKey{ Id: "test", @@ -371,15 +370,9 @@ func TestHandler(t *testing.T) { }).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), fmt.Errorf("open channel failed")) - mockForwarder.On("WriteBadGatewayResponse", mock.Anything).Run(func(args mock.Arguments) { - w := args.Get(0).(io.Writer) - _, _ = w.Write([]byte("HTTP/1.1 502 Bad Gateway\r\n\r\n")) - }) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), fmt.Errorf("open channel failed")) }, }, { @@ -391,8 +384,6 @@ func TestHandler(t *testing.T) { setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) mockSSHChannel := new(MockSSHChannel) msr.On("Get", types.SessionKey{ @@ -401,13 +392,11 @@ func TestHandler(t *testing.T) { }).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) mockSSHChannel.On("Close").Return(nil) @@ -427,8 +416,6 @@ func TestHandler(t *testing.T) { setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) mockSSHChannel := new(MockSSHChannel) msr.On("Get", types.SessionKey{ @@ -437,13 +424,11 @@ func TestHandler(t *testing.T) { }).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(nil) @@ -524,18 +509,15 @@ func TestHandler(t *testing.T) { setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) mockSSHChannel := new(MockSSHChannel) msr.On("Get", mock.Anything).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) + reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(nil) @@ -560,19 +542,16 @@ func TestHandler(t *testing.T) { setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) + mockSSHChannel := new(MockSSHChannel) + msr.On("Get", mock.MatchedBy(func(k types.SessionKey) bool { return k.Id == "test" })).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) - mockLifecycle := new(MockLifecycle) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockSSHConn := new(MockSSHConn) - mockLifecycle.On("Connection").Return(mockSSHConn) - mockSSHChannel := new(MockSSHChannel) reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Close").Return(nil) }, setupConn: func() (net.Conn, net.Conn) { @@ -592,18 +571,14 @@ func TestHandler(t *testing.T) { setupMocks: func(msr *MockSessionRegistry) { mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) mockSSHChannel := new(MockSSHChannel) msr.On("Get", mock.Anything).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(fmt.Errorf("close error")) @@ -619,38 +594,20 @@ func TestHandler(t *testing.T) { isTLS: true, redirectTLS: false, request: []byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n"), - expected: []byte("HTTP/1.1 502 Bad Gateway\r\n\r\n"), + expected: []byte(""), setupMocks: func(msr *MockSessionRegistry) { - oldTimeout := openChannelTimeout - openChannelTimeout = 10 * time.Millisecond - t.Cleanup(func() { - openChannelTimeout = oldTimeout - time.Sleep(100 * time.Millisecond) - }) - mockSession := new(MockSession) mockForwarder := new(MockForwarder) - mockLifecycle := new(MockLifecycle) - mockSSHConn := new(MockSSHConn) - mockSSHChannel := new(MockSSHChannel) msr.On("Get", mock.Anything).Return(mockSession, nil) mockSession.On("Forwarder").Return(mockForwarder) - mockSession.On("Lifecycle").Return(mockLifecycle) - mockLifecycle.On("Connection").Return(mockSSHConn) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) - mockForwarder.On("WriteBadGatewayResponse", mock.Anything).Run(func(args mock.Arguments) { - w := args.Get(0).(io.Writer) - _, _ = w.Write([]byte("HTTP/1.1 502 Bad Gateway\r\n\r\n")) - }) - reqCh := make(chan *ssh.Request) - mockSSHConn.On("OpenChannel", "forwarded-tcpip", []byte("payload")).Run(func(args mock.Arguments) { - time.Sleep(50 * time.Millisecond) - }).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) - - mockSSHChannel.On("Close").Return(fmt.Errorf("cleanup close error")) + mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Run(func(args mock.Arguments) { + ctx := args.Get(0).(context.Context) + <-ctx.Done() + }).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), context.DeadlineExceeded) }, }, } @@ -740,7 +697,7 @@ func TestHandler(t *testing.T) { } else { assert.Equal(t, string(tt.expected), string(response)) } - case <-time.After(2 * time.Second): + case <-time.After(10 * time.Second): if clientConn != nil { t.Fatal("Test timeout - no response received") } diff --git a/internal/transport/tcp.go b/internal/transport/tcp.go index 9ea2354..26c61b7 100644 --- a/internal/transport/tcp.go +++ b/internal/transport/tcp.go @@ -1,11 +1,13 @@ package transport import ( + "context" "errors" "fmt" "io" "log" "net" + "time" "golang.org/x/crypto/ssh" ) @@ -17,7 +19,7 @@ type tcp struct { type Forwarder interface { CreateForwardedTCPIPPayload(origin net.Addr) []byte - OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) + OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) HandleConnection(dst io.ReadWriter, src ssh.Channel) } @@ -54,7 +56,9 @@ func (tt *tcp) handleTcp(conn net.Conn) { } }() payload := tt.forwarder.CreateForwardedTCPIPPayload(conn.RemoteAddr()) - channel, reqs, err := tt.forwarder.OpenForwardedChannel(payload) + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + defer cancel() + channel, reqs, err := tt.forwarder.OpenForwardedChannel(ctx, payload) if err != nil { log.Printf("Failed to open forwarded-tcpip channel: %v", err) return diff --git a/internal/transport/tcp_test.go b/internal/transport/tcp_test.go index d7c3f8b..e8a5790 100644 --- a/internal/transport/tcp_test.go +++ b/internal/transport/tcp_test.go @@ -75,7 +75,7 @@ func TestTCPServer_Serve_Success(t *testing.T) { payload := []byte("test-payload") mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) reqs := make(chan *ssh.Request) - mf.On("OpenForwardedChannel", payload).Return(new(MockSSHChannel), (<-chan *ssh.Request)(reqs), nil) + mf.On("OpenForwardedChannel", mock.Anything, payload).Return(new(MockSSHChannel), (<-chan *ssh.Request)(reqs), nil) mf.On("HandleConnection", mock.Anything, mock.Anything).Return() go func() { @@ -104,7 +104,7 @@ func TestTCPServer_handleTcp_Success(t *testing.T) { reqs := make(chan *ssh.Request) mockChannel := new(MockSSHChannel) - mf.On("OpenForwardedChannel", payload).Return(mockChannel, (<-chan *ssh.Request)(reqs), nil) + mf.On("OpenForwardedChannel", mock.Anything, payload).Return(mockChannel, (<-chan *ssh.Request)(reqs), nil) mf.On("HandleConnection", serverConn, mockChannel).Return() @@ -123,7 +123,7 @@ func TestTCPServer_handleTcp_CloseError(t *testing.T) { payload := []byte("test-payload") mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) - mf.On("OpenForwardedChannel", payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + mf.On("OpenForwardedChannel", mock.Anything, payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) srv.handleTcp(mc) mc.AssertExpectations(t) @@ -138,7 +138,7 @@ func TestTCPServer_handleTcp_OpenChannelError(t *testing.T) { payload := []byte("test-payload") mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) - mf.On("OpenForwardedChannel", payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + mf.On("OpenForwardedChannel", mock.Anything, payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) srv.handleTcp(serverConn) diff --git a/internal/transport/transport_test.go b/internal/transport/transport_test.go deleted file mode 100644 index 016445d..0000000 --- a/internal/transport/transport_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package transport - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestTransportInterface(t *testing.T) { - var _ Transport = (*httpServer)(nil) - var _ Transport = (*https)(nil) - var _ Transport = (*tcp)(nil) - - assert.True(t, true) -} diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index 43bde3e..1520bb6 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -1,6 +1,7 @@ package forwarder import ( + "context" "errors" "fmt" "io" @@ -8,7 +9,6 @@ import ( "net" "strconv" "sync" - "time" "tunnel_pls/internal/config" "tunnel_pls/session/slug" "tunnel_pls/types" @@ -25,7 +25,7 @@ type Forwarder interface { ForwardedPort() uint16 HandleConnection(dst io.ReadWriter, src ssh.Channel) CreateForwardedTCPIPPayload(origin net.Addr) []byte - OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) + OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) WriteBadGatewayResponse(dst io.Writer) Close() error } @@ -60,7 +60,7 @@ func (f *forwarder) copyWithBuffer(dst io.Writer, src io.Reader) (written int64, return io.CopyBuffer(dst, src, buf) } -func (f *forwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { +func (f *forwarder) OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { type channelResult struct { channel ssh.Channel reqs <-chan *ssh.Request @@ -72,7 +72,7 @@ func (f *forwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *s channel, reqs, err := f.conn.OpenChannel("forwarded-tcpip", payload) select { case resultChan <- channelResult{channel, reqs, err}: - default: + case <-ctx.Done(): if channel != nil { err = channel.Close() if err != nil { @@ -87,8 +87,8 @@ func (f *forwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *s select { case result := <-resultChan: return result.channel, result.reqs, result.err - case <-time.After(5 * time.Second): - return nil, nil, errors.New("timeout opening forwarded-tcpip channel") + case <-ctx.Done(): + return nil, nil, fmt.Errorf("context cancelled: %w", ctx.Err()) } } From 384bb98f48f12982613618e4a75c2c3cb6fcece9 Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 18:14:29 +0700 Subject: [PATCH 34/47] test(stream): migrate mocking to testify --- internal/http/stream/stream_test.go | 506 +++++++++++++++++++--------- 1 file changed, 346 insertions(+), 160 deletions(-) diff --git a/internal/http/stream/stream_test.go b/internal/http/stream/stream_test.go index 65c660b..60c9d65 100644 --- a/internal/http/stream/stream_test.go +++ b/internal/http/stream/stream_test.go @@ -9,66 +9,160 @@ import ( "tunnel_pls/internal/http/header" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" ) -type mockAddr struct { - addr string +type MockAddr struct { + mock.Mock } -func (m *mockAddr) String() string { return m.addr } -func (m *mockAddr) Network() string { return "tcp" } - -type mockRequestMiddleware struct { - err error +func (m *MockAddr) String() string { + args := m.Called() + return args.String(0) } -func (m *mockRequestMiddleware) HandleRequest(h header.RequestHeader) error { - if m.err == nil { - h.Set("X-Middleware", "true") - } - return m.err +func (m *MockAddr) Network() string { + args := m.Called() + return args.String(0) } -type mockResponseMiddleware struct { - err error +type MockRequestMiddleware struct { + mock.Mock } -func (m *mockResponseMiddleware) HandleResponse(h header.ResponseHeader, body []byte) error { - if m.err == nil { - h.Set("X-Resp-Middleware", "true") - } - return m.err +func (m *MockRequestMiddleware) HandleRequest(h header.RequestHeader) error { + args := m.Called(h) + return args.Error(0) } -type mockReadWriter struct { +type MockResponseMiddleware struct { + mock.Mock +} + +func (m *MockResponseMiddleware) HandleResponse(h header.ResponseHeader, body []byte) error { + args := m.Called(h, body) + return args.Error(0) +} + +type MockReadWriter struct { + mock.Mock bytes.Buffer - closed bool - writeClosed bool } -func (m *mockReadWriter) Close() error { - m.closed = true - return nil +func (m *MockReadWriter) Read(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) } -func (m *mockReadWriter) CloseWrite() error { - m.writeClosed = true - return nil +func (m *MockReadWriter) Write(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *MockReadWriter) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockReadWriter) CloseWrite() error { + args := m.Called() + return args.Error(0) +} + +type MockReadWriterOnlyCloser struct { + mock.Mock + bytes.Buffer +} + +func (m *MockReadWriterOnlyCloser) Read(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *MockReadWriterOnlyCloser) Write(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *MockReadWriterOnlyCloser) Close() error { + args := m.Called() + return args.Error(0) +} + +type MockWriterOnly struct { + mock.Mock +} + +func (m *MockWriterOnly) Write(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *MockWriterOnly) Read(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +type MockReader struct { + mock.Mock +} + +func (m *MockReader) Read(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +type MockWriter struct { + mock.Mock +} + +func (m *MockWriter) Write(p []byte) (int, error) { + ret := m.Called(p) + + var n int + var err error + + switch v := ret.Get(0).(type) { + case func([]byte) int: + n = v(p) + case int: + n = v + default: + n = len(p) + } + + switch v := ret.Get(1).(type) { + case func([]byte) error: + err = v(p) + case error: + err = v + default: + err = nil + } + + return n, err +} + +func (m *MockWriter) Close() error { + args := m.Called() + return args.Error(0) } func TestHTTPMethods(t *testing.T) { - addr := &mockAddr{addr: "1.2.3.4:1234"} - rw := &mockReadWriter{} + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + rw := new(MockReadWriter) hs := New(rw, rw, addr) assert.Equal(t, addr, hs.RemoteAddr()) - reqMW := &mockRequestMiddleware{} + reqMW := new(MockRequestMiddleware) hs.UseRequestMiddleware(reqMW) assert.Equal(t, 1, len(hs.RequestMiddlewares())) assert.Equal(t, reqMW, hs.RequestMiddlewares()[0]) - respMW := &mockResponseMiddleware{} + respMW := new(MockResponseMiddleware) hs.UseResponseMiddleware(respMW) assert.Equal(t, 1, len(hs.ResponseMiddlewares())) assert.Equal(t, respMW, hs.ResponseMiddlewares()[0]) @@ -78,19 +172,21 @@ func TestHTTPMethods(t *testing.T) { } func TestApplyMiddlewares(t *testing.T) { - addr := &mockAddr{addr: "1.2.3.4:1234"} - tests := []struct { name string - setup func(HTTP) + setup func(HTTP, *MockRequestMiddleware, *MockResponseMiddleware) apply func(HTTP, header.RequestHeader, header.ResponseHeader) error verify func(*testing.T, header.RequestHeader, header.ResponseHeader) expectErr bool }{ { name: "apply request middleware success", - setup: func(hs HTTP) { - hs.UseRequestMiddleware(&mockRequestMiddleware{}) + setup: func(hs HTTP, reqMW *MockRequestMiddleware, respMW *MockResponseMiddleware) { + reqMW.On("HandleRequest", mock.Anything).Run(func(args mock.Arguments) { + h := args.Get(0).(header.RequestHeader) + h.Set("X-Middleware", "true") + }).Return(nil) + hs.UseRequestMiddleware(reqMW) }, apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { return hs.ApplyRequestMiddlewares(reqH) @@ -101,8 +197,12 @@ func TestApplyMiddlewares(t *testing.T) { }, { name: "apply response middleware success", - setup: func(hs HTTP) { - hs.UseResponseMiddleware(&mockResponseMiddleware{}) + setup: func(hs HTTP, reqMW *MockRequestMiddleware, respMW *MockResponseMiddleware) { + respMW.On("HandleResponse", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { + h := args.Get(0).(header.ResponseHeader) + h.Set("X-Resp-Middleware", "true") + }).Return(nil) + hs.UseResponseMiddleware(respMW) }, apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { return hs.ApplyResponseMiddlewares(respH, []byte("body")) @@ -113,8 +213,9 @@ func TestApplyMiddlewares(t *testing.T) { }, { name: "apply request middleware error", - setup: func(hs HTTP) { - hs.UseRequestMiddleware(&mockRequestMiddleware{err: assert.AnError}) + setup: func(hs HTTP, reqMW *MockRequestMiddleware, respMW *MockResponseMiddleware) { + reqMW.On("HandleRequest", mock.Anything).Return(assert.AnError) + hs.UseRequestMiddleware(reqMW) }, apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { return hs.ApplyRequestMiddlewares(reqH) @@ -123,8 +224,9 @@ func TestApplyMiddlewares(t *testing.T) { }, { name: "apply response middleware error", - setup: func(hs HTTP) { - hs.UseResponseMiddleware(&mockResponseMiddleware{err: assert.AnError}) + setup: func(hs HTTP, reqMW *MockRequestMiddleware, respMW *MockResponseMiddleware) { + respMW.On("HandleResponse", mock.Anything, mock.Anything).Return(assert.AnError) + hs.UseResponseMiddleware(respMW) }, apply: func(hs HTTP, reqH header.RequestHeader, respH header.ResponseHeader) error { return hs.ApplyResponseMiddlewares(respH, []byte("body")) @@ -137,9 +239,17 @@ func TestApplyMiddlewares(t *testing.T) { t.Run(tt.name, func(t *testing.T) { reqH, _ := header.NewRequest([]byte("GET / HTTP/1.1\r\n\r\n")) respH, _ := header.NewResponse([]byte("HTTP/1.1 200 OK\r\n\r\n")) - rw := &mockReadWriter{} + + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + rw := new(MockReadWriter) hs := New(rw, rw, addr) - tt.setup(hs) + + reqMW := new(MockRequestMiddleware) + respMW := new(MockResponseMiddleware) + tt.setup(hs, reqMW, respMW) + err := tt.apply(hs, reqH, respH) if tt.expectErr { assert.Error(t, err) @@ -149,83 +259,96 @@ func TestApplyMiddlewares(t *testing.T) { tt.verify(t, reqH, respH) } } + + reqMW.AssertExpectations(t) + respMW.AssertExpectations(t) }) } } -type mockWriterOnly struct { - bytes.Buffer -} - func TestCloseMethods(t *testing.T) { - addr := &mockAddr{addr: "1.2.3.4:1234"} - tests := []struct { name string - writer any + setup func() (io.Writer, io.Reader) op func(HTTP) error - verify func(*testing.T, any) + verify func(*testing.T, io.Writer) }{ { - name: "Close success", - writer: &mockReadWriter{}, - op: func(hs HTTP) error { return hs.Close() }, - verify: func(t *testing.T, w any) { - assert.True(t, w.(*mockReadWriter).closed) + name: "Close success", + setup: func() (io.Writer, io.Reader) { + rw := new(MockReadWriter) + rw.On("Close").Return(nil) + return rw, rw + }, + op: func(hs HTTP) error { return hs.Close() }, + verify: func(t *testing.T, w io.Writer) { + w.(*MockReadWriter).AssertCalled(t, "Close") }, }, { - name: "CloseWrite with CloseWrite implementation", - writer: &mockReadWriter{}, - op: func(hs HTTP) error { return hs.CloseWrite() }, - verify: func(t *testing.T, w any) { - assert.True(t, w.(*mockReadWriter).writeClosed) + name: "CloseWrite with CloseWrite implementation", + setup: func() (io.Writer, io.Reader) { + rw := new(MockReadWriter) + rw.On("CloseWrite").Return(nil) + return rw, rw + }, + op: func(hs HTTP) error { return hs.CloseWrite() }, + verify: func(t *testing.T, w io.Writer) { + w.(*MockReadWriter).AssertCalled(t, "CloseWrite") }, }, { - name: "CloseWrite fallback to Close", - writer: &mockReadWriterOnlyCloser{}, - op: func(hs HTTP) error { return hs.CloseWrite() }, - verify: func(t *testing.T, w any) { - assert.True(t, w.(*mockReadWriterOnlyCloser).closed) + name: "CloseWrite fallback to Close", + setup: func() (io.Writer, io.Reader) { + rw := new(MockReadWriterOnlyCloser) + rw.On("Close").Return(nil) + return rw, rw + }, + op: func(hs HTTP) error { return hs.CloseWrite() }, + verify: func(t *testing.T, w io.Writer) { + w.(*MockReadWriterOnlyCloser).AssertCalled(t, "Close") }, }, { - name: "Close with No Closer", - writer: &mockWriterOnly{}, - op: func(hs HTTP) error { return hs.Close() }, + name: "Close with No Closer", + setup: func() (io.Writer, io.Reader) { + w := new(MockWriterOnly) + r := new(MockReader) + return w, r + }, + op: func(hs HTTP) error { return hs.Close() }, }, { - name: "CloseWrite with No CloseWrite and No Closer", - writer: &mockWriterOnly{}, - op: func(hs HTTP) error { return hs.CloseWrite() }, + name: "CloseWrite with No CloseWrite and No Closer", + setup: func() (io.Writer, io.Reader) { + w := new(MockWriterOnly) + r := new(MockReader) + return w, r + }, + op: func(hs HTTP) error { return hs.CloseWrite() }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - hs := New(tt.writer.(io.Writer), tt.writer.(io.Reader), addr) + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + w, r := tt.setup() + hs := New(w, r, addr) + assert.NotPanics(t, func() { err := tt.op(hs) assert.NoError(t, err) }) + if tt.verify != nil { - tt.verify(t, tt.writer) + tt.verify(t, w) } }) } } -type mockReadWriterOnlyCloser struct { - bytes.Buffer - closed bool -} - -func (m *mockReadWriterOnlyCloser) Close() error { - m.closed = true - return nil -} - func TestSplitHeaderAndBody(t *testing.T) { tests := []struct { name string @@ -319,6 +442,7 @@ func TestRead(t *testing.T) { expectRead int expectErr bool middlewareErr error + isHTTP bool }{ { name: "valid http request", @@ -326,6 +450,7 @@ func TestRead(t *testing.T) { readLen: 100, expectContent: "Body", expectRead: 54, + isHTTP: true, }, { name: "non-http data", @@ -333,6 +458,7 @@ func TestRead(t *testing.T) { readLen: 100, expectContent: "Some random data\r\n\r\nMore data", expectRead: 29, + isHTTP: false, }, { name: "no delimiter", @@ -340,6 +466,7 @@ func TestRead(t *testing.T) { readLen: 100, expectContent: "Partial data without delimiter", expectRead: 30, + isHTTP: false, }, { name: "middleware error", @@ -347,20 +474,45 @@ func TestRead(t *testing.T) { readLen: 100, middlewareErr: assert.AnError, expectErr: true, + isHTTP: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rw := &mockReadWriter{} - rw.Write(tt.input) - hs := New(rw, rw, &mockAddr{}) - if tt.middlewareErr != nil { - hs.UseRequestMiddleware(&mockRequestMiddleware{err: tt.middlewareErr}) + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + reader := new(MockReader) + writer := new(MockWriterOnly) + + if tt.expectErr || tt.name == "valid http request" { + reader.On("Read", mock.Anything).Run(func(args mock.Arguments) { + p := args.Get(0).([]byte) + copy(p, tt.input) + }).Return(len(tt.input), io.EOF).Once() } else { - hs.UseRequestMiddleware(&mockRequestMiddleware{}) + reader.On("Read", mock.Anything).Run(func(args mock.Arguments) { + p := args.Get(0).([]byte) + copy(p, tt.input) + }).Return(len(tt.input), nil).Once() } + hs := New(writer, reader, addr) + + reqMW := new(MockRequestMiddleware) + if tt.isHTTP { + if tt.middlewareErr != nil { + reqMW.On("HandleRequest", mock.Anything).Return(tt.middlewareErr) + } else { + reqMW.On("HandleRequest", mock.Anything).Run(func(args mock.Arguments) { + h := args.Get(0).(header.RequestHeader) + h.Set("X-Middleware", "true") + }).Return(nil) + } + } + hs.UseRequestMiddleware(reqMW) + p := make([]byte, tt.readLen) n, err := hs.Read(p) @@ -379,6 +531,11 @@ func TestRead(t *testing.T) { assert.Equal(t, tt.expectContent, string(p[:n])) } } + + if tt.isHTTP { + reqMW.AssertExpectations(t) + } + reader.AssertExpectations(t) }) } } @@ -390,6 +547,7 @@ func TestWrite(t *testing.T) { expectWritten string expectErr bool middlewareErr error + isHTTP bool }{ { name: "valid http response in one write", @@ -397,6 +555,7 @@ func TestWrite(t *testing.T) { []byte("HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nBody"), }, expectWritten: "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nX-Resp-Middleware: true\r\n\r\nBody", + isHTTP: true, }, { name: "valid http response in multiple writes", @@ -406,6 +565,7 @@ func TestWrite(t *testing.T) { []byte("Body"), }, expectWritten: "HTTP/1.1 200 OK\r\nContent-Length: 4\r\nX-Resp-Middleware: true\r\n\r\nBody", + isHTTP: true, }, { name: "non-http data", @@ -413,6 +573,7 @@ func TestWrite(t *testing.T) { []byte("Random data with delimiter\r\n\r\nFlush"), }, expectWritten: "Random data with delimiter\r\n\r\nFlush", + isHTTP: false, }, { name: "bypass buffering", @@ -422,6 +583,7 @@ func TestWrite(t *testing.T) { }, expectWritten: "HTTP/1.1 200 OK\r\nX-Resp-Middleware: true\r\n\r\n" + "HTTP/1.1 200 OK\r\nX-Resp-Middleware: true\r\n\r\n", + isHTTP: true, }, { name: "middleware error", @@ -430,18 +592,40 @@ func TestWrite(t *testing.T) { }, middlewareErr: assert.AnError, expectErr: true, + isHTTP: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - rw := &mockReadWriter{} - hs := New(rw, rw, &mockAddr{}) - if tt.middlewareErr != nil { - hs.UseResponseMiddleware(&mockResponseMiddleware{err: tt.middlewareErr}) - } else { - hs.UseResponseMiddleware(&mockResponseMiddleware{}) + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + var writtenData bytes.Buffer + writer := new(MockWriter) + + writer.On("Write", mock.Anything).Run(func(args mock.Arguments) { + p := args.Get(0).([]byte) + writtenData.Write(p) + }).Return(func(p []byte) int { + return len(p) + }, nil) + + reader := new(MockReader) + hs := New(writer, reader, addr) + + respMW := new(MockResponseMiddleware) + if tt.isHTTP { + if tt.middlewareErr != nil { + respMW.On("HandleResponse", mock.Anything, mock.Anything).Return(tt.middlewareErr) + } else { + respMW.On("HandleResponse", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { + h := args.Get(0).(header.ResponseHeader) + h.Set("X-Resp-Middleware", "true") + }).Return(nil) + } } + hs.UseResponseMiddleware(respMW) var totalN int var err error @@ -458,8 +642,8 @@ func TestWrite(t *testing.T) { assert.Error(t, err) } else { assert.NoError(t, err) + written := writtenData.String() if strings.HasPrefix(tt.expectWritten, "HTTP/") { - written := rw.String() assert.Contains(t, written, "HTTP/1.1 200 OK\r\n") assert.Contains(t, written, "X-Resp-Middleware: true\r\n") if strings.Contains(tt.expectWritten, "Content-Length: 4") { @@ -467,43 +651,71 @@ func TestWrite(t *testing.T) { } assert.True(t, strings.HasSuffix(written, "\r\n\r\nBody") || strings.HasSuffix(written, "\r\n\r\n")) } else { - assert.Equal(t, tt.expectWritten, rw.String()) + assert.Equal(t, tt.expectWritten, written) } } + + if tt.isHTTP { + respMW.AssertExpectations(t) + } + if tt.middlewareErr == nil { + writer.AssertExpectations(t) + } }) } } func TestWriteErrors(t *testing.T) { - addr := &mockAddr{addr: "1.2.3.4:1234"} - tests := []struct { - name string - writer any - data []byte + name string + setup func() (io.Writer, io.Reader) + data []byte }{ { - name: "write error in writeHeaderAndBody", - writer: &mockErrorWriteCloser{}, - data: []byte("HTTP/1.1 200 OK\r\n\r\n"), + name: "write error in writeHeaderAndBody", + setup: func() (io.Writer, io.Reader) { + writer := new(MockWriter) + writer.On("Write", mock.Anything).Return(0, assert.AnError) + reader := new(MockReader) + return writer, reader + }, + data: []byte("HTTP/1.1 200 OK\r\n\r\n"), }, { - name: "write error in writeHeaderAndBody second write", - writer: &mockFailSecondWriteCloser{}, - data: []byte("HTTP/1.1 200 OK\r\n\r\nBody"), + name: "write error in writeHeaderAndBody second write", + setup: func() (io.Writer, io.Reader) { + writer := new(MockWriter) + writer.On("Write", mock.Anything).Return(len([]byte("HTTP/1.1 200 OK\r\n\r\n")), nil).Once() + writer.On("Write", mock.Anything).Return(0, assert.AnError).Once() + reader := new(MockReader) + return writer, reader + }, + data: []byte("HTTP/1.1 200 OK\r\n\r\nBody"), }, { - name: "write error in writeRawBuffer", - writer: &mockErrorWriteCloser{}, - data: []byte("Not HTTP\r\n\r\nFlush"), + name: "write error in writeRawBuffer", + setup: func() (io.Writer, io.Reader) { + writer := new(MockWriter) + writer.On("Write", mock.Anything).Return(0, assert.AnError) + reader := new(MockReader) + return writer, reader + }, + data: []byte("Not HTTP\r\n\r\nFlush"), }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - hs := New(tt.writer.(io.Writer), tt.writer.(io.Reader), addr) + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + w, r := tt.setup() + hs := New(w, r, addr) + _, err := hs.Write(tt.data) assert.Error(t, err) + + w.(*MockWriter).AssertExpectations(t) }) } } @@ -511,14 +723,21 @@ func TestWriteErrors(t *testing.T) { func TestReadEOF(t *testing.T) { tests := []struct { name string - reader io.Reader + setup func() io.Reader expectN int expectErr error expectContent string }{ { - name: "read eof", - reader: &mockEOFReader{}, + name: "read eof", + setup: func() io.Reader { + reader := new(MockReader) + reader.On("Read", mock.Anything).Run(func(args mock.Arguments) { + p := args.Get(0).([]byte) + copy(p, "data") + }).Return(4, io.EOF) + return reader + }, expectN: 4, expectErr: io.EOF, expectContent: "data", @@ -527,53 +746,20 @@ func TestReadEOF(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - hs := New(nil, tt.reader, &mockAddr{}) + addr := new(MockAddr) + addr.On("String").Return("1.2.3.4:1234") + + reader := tt.setup() + hs := New(nil, reader, addr) + p := make([]byte, 100) n, err := hs.Read(p) + assert.Equal(t, tt.expectN, n) assert.Equal(t, tt.expectErr, err) assert.Equal(t, tt.expectContent, string(p[:n])) + + reader.(*MockReader).AssertExpectations(t) }) } } - -type mockEOFReader struct { - mockReadWriter -} - -func (m *mockEOFReader) Read(p []byte) (int, error) { - copy(p, "data") - return 4, io.EOF -} - -type mockFailSecondWriteCloser struct { - count int -} - -func (m *mockFailSecondWriteCloser) Write(p []byte) (int, error) { - m.count++ - if m.count == 2 { - return 0, assert.AnError - } - return len(p), nil -} - -func (m *mockFailSecondWriteCloser) Close() error { return nil } -func (m *mockFailSecondWriteCloser) Read(p []byte) (int, error) { return 0, nil } - -type mockErrorWriteCloser struct { - closed bool -} - -func (m *mockErrorWriteCloser) Write(p []byte) (int, error) { - return 0, assert.AnError -} - -func (m *mockErrorWriteCloser) Close() error { - m.closed = true - return nil -} - -func (m *mockErrorWriteCloser) Read(p []byte) (int, error) { - return 0, nil -} From 2ee24c8d510eb8453ab9814ea216a1b1ff63b95d Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 18:17:37 +0700 Subject: [PATCH 35/47] test(config): add test for keyloc and header size --- internal/config/config.go | 2 ++ internal/config/config_test.go | 30 ++++++++++++++++++++++++++++++ internal/config/loader.go | 15 ++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/internal/config/config.go b/internal/config/config.go index 19bbc49..3e6c9e1 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -23,6 +23,7 @@ type Config interface { AllowedPortsEnd() uint16 BufferSize() int + HeaderSize() int PprofEnabled() bool PprofPort() string @@ -60,6 +61,7 @@ func (c *config) ACMEStaging() bool { return c.acmeStaging } func (c *config) AllowedPortsStart() uint16 { return c.allowedPortsStart } func (c *config) AllowedPortsEnd() uint16 { return c.allowedPortsEnd } func (c *config) BufferSize() int { return c.bufferSize } +func (c *config) HeaderSize() int { return c.headerSize } func (c *config) PprofEnabled() bool { return c.pprofEnabled } func (c *config) PprofPort() string { return c.pprofPort } func (c *config) Mode() types.ServerMode { return c.mode } diff --git a/internal/config/config_test.go b/internal/config/config_test.go index effbcaf..b102094 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -188,6 +188,32 @@ func TestParseBufferSize(t *testing.T) { } } +func TestParseHeaderSize(t *testing.T) { + tests := []struct { + name string + val string + expect int + }{ + {"valid size", "8192", 8192}, + {"default size", "", 4096}, + {"too small", "1024", 4096}, + {"too large", "2000000", 4096}, + {"invalid format", "abc", 4096}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.val != "" { + t.Setenv("MAX_HEADER_SIZE", tt.val) + } else { + os.Unsetenv("MAX_HEADER_SIZE") + } + size := parseHeaderSize() + assert.Equal(t, tt.expect, size) + }) + } +} + func TestParse(t *testing.T) { tests := []struct { name string @@ -271,6 +297,7 @@ func TestGetters(t *testing.T) { "PORT": "2222", "HTTP_PORT": "80", "HTTPS_PORT": "443", + "KEY_LOC": "certs/ssh/id_rsa", "TLS_ENABLED": "true", "TLS_REDIRECT": "true", "TLS_STORAGE_PATH": "certs/tls/", @@ -279,6 +306,7 @@ func TestGetters(t *testing.T) { "ACME_STAGING": "true", "ALLOWED_PORTS": "1000-2000", "BUFFER_SIZE": "16384", + "MAX_HEADER_SIZE": "4096", "PPROF_ENABLED": "true", "PPROF_PORT": "7070", "MODE": "standalone", @@ -299,6 +327,7 @@ func TestGetters(t *testing.T) { assert.Equal(t, "2222", cfg.SSHPort()) assert.Equal(t, "80", cfg.HTTPPort()) assert.Equal(t, "443", cfg.HTTPSPort()) + assert.Equal(t, "certs/ssh/id_rsa", cfg.KeyLoc()) assert.Equal(t, true, cfg.TLSEnabled()) assert.Equal(t, true, cfg.TLSRedirect()) assert.Equal(t, "certs/tls/", cfg.TLSStoragePath()) @@ -308,6 +337,7 @@ func TestGetters(t *testing.T) { assert.Equal(t, uint16(1000), cfg.AllowedPortsStart()) assert.Equal(t, uint16(2000), cfg.AllowedPortsEnd()) assert.Equal(t, 16384, cfg.BufferSize()) + assert.Equal(t, 4096, cfg.HeaderSize()) assert.Equal(t, true, cfg.PprofEnabled()) assert.Equal(t, "7070", cfg.PprofPort()) assert.Equal(t, types.ServerMode(types.ServerModeSTANDALONE), cfg.Mode()) diff --git a/internal/config/loader.go b/internal/config/loader.go index a1fde22..5cbfe1f 100644 --- a/internal/config/loader.go +++ b/internal/config/loader.go @@ -31,7 +31,8 @@ type config struct { allowedPortsEnd uint16 bufferSize int - + headerSize int + pprofEnabled bool pprofPort string @@ -73,6 +74,7 @@ func parse() (*config, error) { } bufferSize := parseBufferSize() + headerSize := parseHeaderSize() pprofEnabled := getenvBool("PPROF_ENABLED", false) pprofPort := getenv("PPROF_PORT", "6060") @@ -100,6 +102,7 @@ func parse() (*config, error) { allowedPortsStart: start, allowedPortsEnd: end, bufferSize: bufferSize, + headerSize: headerSize, pprofEnabled: pprofEnabled, pprofPort: pprofPort, mode: mode, @@ -161,6 +164,16 @@ func parseBufferSize() int { return size } +func parseHeaderSize() int { + raw := getenv("MAX_HEADER_SIZE", "4096") + size, err := strconv.Atoi(raw) + if err != nil || size < 4096 || size > 131072 { + log.Println("Invalid BUFFER_SIZE, falling back to 4096") + return 4096 + } + return size +} + func getenv(key, def string) string { if v := os.Getenv(key); v != "" { return v From 4041681be645b01c16054a516a7ac26b220c630a Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 18:45:08 +0700 Subject: [PATCH 36/47] refactor(header): NewRequest to accept only []byte --- internal/http/header/header_test.go | 119 +--------------------------- internal/http/header/parser.go | 71 ----------------- internal/http/header/request.go | 32 +++++--- 3 files changed, 24 insertions(+), 198 deletions(-) diff --git a/internal/http/header/header_test.go b/internal/http/header/header_test.go index 5207b1c..b3f9228 100644 --- a/internal/http/header/header_test.go +++ b/internal/http/header/header_test.go @@ -1,15 +1,13 @@ package header import ( - "bufio" "bytes" - "io" "testing" "github.com/stretchr/testify/assert" ) -func TestNewRequestFromBytes(t *testing.T) { +func TestNewRequest(t *testing.T) { tests := []struct { name string data []byte @@ -93,94 +91,6 @@ func TestNewRequestFromBytes(t *testing.T) { } } -func TestNewRequestFromReader(t *testing.T) { - tests := []struct { - name string - data []byte - expectErr bool - errContains string - expectEOF bool - expectMethod string - expectPath string - expectVersion string - expectHeaders map[string]string - }{ - { - name: "success", - data: []byte("POST /api HTTP/1.1\r\nContent-Type: application/json\r\n\r\n"), - expectErr: false, - expectMethod: "POST", - expectPath: "/api", - expectVersion: "HTTP/1.1", - expectHeaders: map[string]string{ - "Content-Type": "application/json", - }, - }, - { - name: "read error on start line", - data: []byte{}, - expectErr: true, - expectEOF: true, - }, - { - name: "invalid start line", - data: []byte("INVALID\n\n"), - expectErr: true, - errContains: "invalid start line", - }, - { - name: "read error on headers", - data: []byte("GET / HTTP/1.1\nHost: example.com"), - expectErr: true, - expectEOF: true, - }, - { - name: "multiple colons in header", - data: []byte("GET / HTTP/1.1\r\nX-Custom: value:with:colons\r\n\r\n"), - expectErr: false, - expectMethod: "GET", - expectPath: "/", - expectVersion: "HTTP/1.1", - expectHeaders: map[string]string{ - "X-Custom": "value:with:colons", - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - br := bufio.NewReader(bytes.NewReader(tt.data)) - req, err := NewRequest(br) - if tt.expectErr { - assert.Error(t, err) - if tt.expectEOF { - assert.Equal(t, io.EOF, err) - } - if tt.errContains != "" { - assert.Contains(t, err.Error(), tt.errContains) - } - assert.Nil(t, req) - } else { - assert.NoError(t, err) - assert.NotNil(t, req) - assert.Equal(t, tt.expectMethod, req.Method()) - assert.Equal(t, tt.expectPath, req.Path()) - assert.Equal(t, tt.expectVersion, req.Version()) - for k, v := range tt.expectHeaders { - assert.Equal(t, v, req.Value(k)) - } - } - }) - } -} - -func TestNewRequestUnsupportedType(t *testing.T) { - req, err := NewRequest(123) - assert.Error(t, err) - assert.Contains(t, err.Error(), "unsupported type: int") - assert.Nil(t, req) -} - func TestRequestHeaderMethods(t *testing.T) { data := []byte("GET / HTTP/1.1\r\nHost: original\r\n\r\n") req, _ := NewRequest(data) @@ -315,30 +225,3 @@ func TestSetRemainingHeaders(t *testing.T) { }) } } - -func TestParseHeadersFromReaderEdgeCases(t *testing.T) { - tests := []struct { - name string - data []byte - expectHeaders map[string]string - }{ - { - name: "malformed header line", - data: []byte("GET / HTTP/1.1\r\nMalformedLine\r\nK1: V1\r\n\r\n"), - expectHeaders: map[string]string{ - "K1": "V1", - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - br := bufio.NewReader(bytes.NewReader(tt.data)) - req, err := parseHeadersFromReader(br) - assert.NoError(t, err) - for k, v := range tt.expectHeaders { - assert.Equal(t, v, req.Value(k)) - } - }) - } -} diff --git a/internal/http/header/parser.go b/internal/http/header/parser.go index 861c49e..9a58d59 100644 --- a/internal/http/header/parser.go +++ b/internal/http/header/parser.go @@ -1,7 +1,6 @@ package header import ( - "bufio" "bytes" "fmt" ) @@ -36,31 +35,6 @@ func setRemainingHeaders(remaining []byte, header interface { } } -func parseHeadersFromBytes(headerData []byte) (RequestHeader, error) { - header := &requestHeader{ - headers: make(map[string]string, 16), - } - - lineEnd := bytes.Index(headerData, []byte("\r\n")) - if lineEnd == -1 { - return nil, fmt.Errorf("invalid request: no CRLF found in start line") - } - - startLine := headerData[:lineEnd] - header.startLine = startLine - var err error - header.method, header.path, header.version, err = parseStartLine(startLine) - if err != nil { - return nil, err - } - - remaining := headerData[lineEnd+2:] - - setRemainingHeaders(remaining, header) - - return header, nil -} - func parseStartLine(startLine []byte) (method, path, version string, err error) { firstSpace := bytes.IndexByte(startLine, ' ') if firstSpace == -1 { @@ -80,51 +54,6 @@ func parseStartLine(startLine []byte) (method, path, version string, err error) return method, path, version, nil } -func parseHeadersFromReader(br *bufio.Reader) (RequestHeader, error) { - header := &requestHeader{ - headers: make(map[string]string, 16), - } - - startLineBytes, err := br.ReadSlice('\n') - if err != nil { - return nil, err - } - - startLineBytes = bytes.TrimRight(startLineBytes, "\r\n") - header.startLine = make([]byte, len(startLineBytes)) - copy(header.startLine, startLineBytes) - - header.method, header.path, header.version, err = parseStartLine(header.startLine) - if err != nil { - return nil, err - } - - for { - lineBytes, err := br.ReadSlice('\n') - if err != nil { - return nil, err - } - - lineBytes = bytes.TrimRight(lineBytes, "\r\n") - - if len(lineBytes) == 0 { - break - } - - colonIdx := bytes.IndexByte(lineBytes, ':') - if colonIdx == -1 { - continue - } - - key := bytes.TrimSpace(lineBytes[:colonIdx]) - value := bytes.TrimSpace(lineBytes[colonIdx+1:]) - - header.headers[string(key)] = string(value) - } - - return header, nil -} - func finalize(startLine []byte, headers map[string]string) []byte { size := len(startLine) + 2 for key, val := range headers { diff --git a/internal/http/header/request.go b/internal/http/header/request.go index 1fbe57a..e35f169 100644 --- a/internal/http/header/request.go +++ b/internal/http/header/request.go @@ -1,19 +1,33 @@ package header import ( - "bufio" + "bytes" "fmt" ) -func NewRequest(r interface{}) (RequestHeader, error) { - switch v := r.(type) { - case []byte: - return parseHeadersFromBytes(v) - case *bufio.Reader: - return parseHeadersFromReader(v) - default: - return nil, fmt.Errorf("unsupported type: %T", r) +func NewRequest(headerData []byte) (RequestHeader, error) { + header := &requestHeader{ + headers: make(map[string]string, 16), } + + lineEnd := bytes.Index(headerData, []byte("\r\n")) + if lineEnd == -1 { + return nil, fmt.Errorf("invalid request: no CRLF found in start line") + } + + startLine := headerData[:lineEnd] + header.startLine = startLine + var err error + header.method, header.path, header.version, err = parseStartLine(startLine) + if err != nil { + return nil, err + } + + remaining := headerData[lineEnd+2:] + + setRemainingHeaders(remaining, header) + + return header, nil } func (req *requestHeader) Value(key string) string { From 79fd292a77cf45820d1affaa2034023398656632 Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 18:47:54 +0700 Subject: [PATCH 37/47] feat(http): add http header size limit for initial request --- internal/bootstrap/bootstrap.go | 4 +- internal/bootstrap/bootstrap_test.go | 1 + internal/grpc/client/client_test.go | 1 + internal/transport/http.go | 13 ++-- internal/transport/http_test.go | 43 +++++++++---- internal/transport/httphandler.go | 36 +++++++---- internal/transport/httphandler_test.go | 87 +++++++++++++++++++++++--- internal/transport/https.go | 15 +++-- internal/transport/https_test.go | 44 ++++++++----- internal/transport/tls_test.go | 1 + server/server_test.go | 1 + 11 files changed, 182 insertions(+), 64 deletions(-) diff --git a/internal/bootstrap/bootstrap.go b/internal/bootstrap/bootstrap.go index bd8645f..6c3a1f9 100644 --- a/internal/bootstrap/bootstrap.go +++ b/internal/bootstrap/bootstrap.go @@ -98,7 +98,7 @@ func (b *Bootstrap) startGRPCClient(ctx context.Context, conf config.Config, err } func startHTTPServer(conf config.Config, registry registry.Registry, errChan chan<- error) { - httpserver := transport.NewHTTPServer(conf.Domain(), conf.HTTPPort(), registry, conf.TLSRedirect()) + httpserver := transport.NewHTTPServer(conf, registry) ln, err := httpserver.Listen() if err != nil { errChan <- fmt.Errorf("failed to start http server: %w", err) @@ -115,7 +115,7 @@ func startHTTPSServer(conf config.Config, registry registry.Registry, errChan ch errChan <- fmt.Errorf("failed to create TLS config: %w", err) return } - httpsServer := transport.NewHTTPSServer(conf.Domain(), conf.HTTPSPort(), registry, conf.TLSRedirect(), tlsCfg) + httpsServer := transport.NewHTTPSServer(conf, registry, tlsCfg) ln, err := httpsServer.Listen() if err != nil { errChan <- fmt.Errorf("failed to create TLS config: %w", err) diff --git a/internal/bootstrap/bootstrap_test.go b/internal/bootstrap/bootstrap_test.go index 13778c7..6586ea3 100644 --- a/internal/bootstrap/bootstrap_test.go +++ b/internal/bootstrap/bootstrap_test.go @@ -131,6 +131,7 @@ func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) HeaderSize() int { return m.Called().Int(0) } func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } func (m *MockConfig) PprofPort() string { return m.Called().String(0) } func (m *MockConfig) Mode() types.ServerMode { diff --git a/internal/grpc/client/client_test.go b/internal/grpc/client/client_test.go index 3964cf0..f19a0b9 100644 --- a/internal/grpc/client/client_test.go +++ b/internal/grpc/client/client_test.go @@ -887,6 +887,7 @@ func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) HeaderSize() int { return m.Called().Int(0) } func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } func (m *MockConfig) PprofPort() string { return m.Called().String(0) } func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } diff --git a/internal/transport/http.go b/internal/transport/http.go index 8ea5c4d..5c4648d 100644 --- a/internal/transport/http.go +++ b/internal/transport/http.go @@ -4,27 +4,28 @@ import ( "errors" "log" "net" + "tunnel_pls/internal/config" "tunnel_pls/internal/registry" ) type httpServer struct { handler *httpHandler - port string + config config.Config } -func NewHTTPServer(domain, port string, sessionRegistry registry.Registry, redirectTLS bool) Transport { +func NewHTTPServer(config config.Config, sessionRegistry registry.Registry) Transport { return &httpServer{ - handler: newHTTPHandler(domain, sessionRegistry, redirectTLS), - port: port, + handler: newHTTPHandler(config, sessionRegistry), + config: config, } } func (ht *httpServer) Listen() (net.Listener, error) { - return net.Listen("tcp", ":"+ht.port) + return net.Listen("tcp", ":"+ht.config.HTTPPort()) } func (ht *httpServer) Serve(listener net.Listener) error { - log.Printf("HTTP server is starting on port %s", ht.port) + log.Printf("HTTP server is starting on port %s", ht.config.HTTPPort()) for { conn, err := listener.Accept() if err != nil { diff --git a/internal/transport/http_test.go b/internal/transport/http_test.go index 348dbb0..3922eb0 100644 --- a/internal/transport/http_test.go +++ b/internal/transport/http_test.go @@ -13,24 +13,27 @@ import ( func TestNewHTTPServer(t *testing.T) { msr := new(MockSessionRegistry) - domain := "example.com" - port := "8080" - redirectTLS := true + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) - srv := NewHTTPServer(domain, port, msr, redirectTLS) + srv := NewHTTPServer(mockConfig, msr) assert.NotNil(t, srv) httpSrv, ok := srv.(*httpServer) assert.True(t, ok) - assert.Equal(t, port, httpSrv.port) - assert.Equal(t, domain, httpSrv.handler.domain) assert.Equal(t, msr, httpSrv.handler.sessionRegistry) - assert.Equal(t, redirectTLS, httpSrv.handler.redirectTLS) + assert.NotNil(t, srv) } func TestHTTPServer_Listen(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPServer("example.com", "0", msr, false) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) + srv := NewHTTPServer(mockConfig, msr) listener, err := srv.Listen() assert.NoError(t, err) @@ -40,7 +43,11 @@ func TestHTTPServer_Listen(t *testing.T) { func TestHTTPServer_Serve(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPServer("example.com", "0", msr, false) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) + srv := NewHTTPServer(mockConfig, msr) listener, err := net.Listen("tcp", "127.0.0.1:0") assert.NoError(t, err) @@ -56,7 +63,11 @@ func TestHTTPServer_Serve(t *testing.T) { func TestHTTPServer_Serve_AcceptError(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPServer("example.com", "0", msr, false) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) + srv := NewHTTPServer(mockConfig, msr) ml := new(mockListener) ml.On("Accept").Return(nil, errors.New("accept error")).Once() @@ -69,17 +80,23 @@ func TestHTTPServer_Serve_AcceptError(t *testing.T) { func TestHTTPServer_Serve_Success(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPServer("example.com", "0", msr, false) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) + mockConfig.On("HeaderSize").Return(4096) + mockConfig.On("TLSRedirect").Return(false) + srv := NewHTTPServer(mockConfig, msr) listener, err := net.Listen("tcp", "127.0.0.1:0") assert.NoError(t, err) - port := listener.Addr().(*net.TCPAddr).Port + listenerport := listener.Addr().(*net.TCPAddr).Port go func() { _ = srv.Serve(listener) }() - conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port)) + conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", listenerport)) assert.NoError(t, err) _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) diff --git a/internal/transport/httphandler.go b/internal/transport/httphandler.go index 411a3f9..7e2135a 100644 --- a/internal/transport/httphandler.go +++ b/internal/transport/httphandler.go @@ -1,7 +1,7 @@ package transport import ( - "bufio" + "bytes" "context" "errors" "fmt" @@ -11,6 +11,7 @@ import ( "net/http" "strings" "time" + "tunnel_pls/internal/config" "tunnel_pls/internal/http/header" "tunnel_pls/internal/http/stream" "tunnel_pls/internal/middleware" @@ -21,16 +22,14 @@ import ( ) type httpHandler struct { - domain string + config config.Config sessionRegistry registry.Registry - redirectTLS bool } -func newHTTPHandler(domain string, sessionRegistry registry.Registry, redirectTLS bool) *httpHandler { +func newHTTPHandler(config config.Config, sessionRegistry registry.Registry) *httpHandler { return &httpHandler{ - domain: domain, + config: config, sessionRegistry: sessionRegistry, - redirectTLS: redirectTLS, } } @@ -56,10 +55,25 @@ func (hh *httpHandler) badRequest(conn net.Conn) error { func (hh *httpHandler) Handler(conn net.Conn, isTLS bool) { defer hh.closeConnection(conn) - dstReader := bufio.NewReader(conn) - reqhf, err := header.NewRequest(dstReader) + _ = conn.SetReadDeadline(time.Now().Add(10 * time.Second)) + buf := make([]byte, hh.config.HeaderSize()) + n, err := conn.Read(buf) + if err != nil { + _ = hh.badRequest(conn) + return + } + + if idx := bytes.Index(buf[:n], []byte("\r\n\r\n")); idx == -1 { + _ = hh.badRequest(conn) + return + } + + _ = conn.SetReadDeadline(time.Time{}) + + reqhf, err := header.NewRequest(buf[:n]) if err != nil { log.Printf("Error creating request header: %v", err) + _ = hh.badRequest(conn) return } @@ -70,7 +84,7 @@ func (hh *httpHandler) Handler(conn net.Conn, isTLS bool) { } if hh.shouldRedirectToTLS(isTLS) { - _ = hh.redirect(conn, http.StatusMovedPermanently, fmt.Sprintf("https://%s.%s/\r\n", slug, hh.domain)) + _ = hh.redirect(conn, http.StatusMovedPermanently, fmt.Sprintf("https://%s.%s/\r\n", slug, hh.config.Domain())) return } @@ -87,7 +101,7 @@ func (hh *httpHandler) Handler(conn net.Conn, isTLS bool) { return } - hw := stream.New(conn, dstReader, conn.RemoteAddr()) + hw := stream.New(conn, conn, conn.RemoteAddr()) defer func(hw stream.HTTP) { err = hw.Close() if err != nil { @@ -113,7 +127,7 @@ func (hh *httpHandler) extractSlug(reqhf header.RequestHeader) (string, error) { } func (hh *httpHandler) shouldRedirectToTLS(isTLS bool) bool { - return !isTLS && hh.redirectTLS + return !isTLS && hh.config.TLSRedirect() } func (hh *httpHandler) handlePingRequest(slug string, conn net.Conn) bool { diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index b4e592a..b6df77f 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -230,11 +230,30 @@ func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, payload []byte } type MockConn struct { - net.Conn mock.Mock ReadBuffer *bytes.Buffer } +func (m *MockConn) LocalAddr() net.Addr { + args := m.Called() + return args.Get(0).(net.Addr) +} + +func (m *MockConn) SetDeadline(t time.Time) error { + args := m.Called(t) + return args.Error(0) +} + +func (m *MockConn) SetReadDeadline(t time.Time) error { + args := m.Called(t) + return args.Error(0) +} + +func (m *MockConn) SetWriteDeadline(t time.Time) error { + args := m.Called(t) + return args.Error(0) +} + func (m *MockConn) Read(b []byte) (n int, err error) { if m.ReadBuffer != nil { return m.ReadBuffer.Read(b) @@ -245,6 +264,9 @@ func (m *MockConn) Read(b []byte) (n int, err error) { func (m *MockConn) Write(b []byte) (n int, err error) { args := m.Called(b) + if args.Int(0) == -1 { + return len(b), args.Error(1) + } return args.Int(0), args.Error(1) } @@ -269,11 +291,12 @@ func (c *wrappedConn) RemoteAddr() net.Addr { func TestNewHTTPHandler(t *testing.T) { msr := new(MockSessionRegistry) - hh := newHTTPHandler("domain", msr, true) + mockConfig := &MockConfig{} + mockConfig.On("Domain").Return("domain") + mockConfig.On("TLSRedirect").Return(false) + hh := newHTTPHandler(mockConfig, msr) assert.NotNil(t, hh) - assert.Equal(t, "domain", hh.domain) assert.Equal(t, msr, hh.sessionRegistry) - assert.True(t, hh.redirectTLS) } func TestHandler(t *testing.T) { @@ -318,8 +341,8 @@ func TestHandler(t *testing.T) { name: "redirect to TLS", isTLS: false, redirectTLS: true, - request: []byte("GET / HTTP/1.1\r\nHost: example.domain\r\n\r\n"), - expected: []byte("HTTP/1.1 301 Moved Permanently\r\nLocation: https://example.domain/\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"), + request: []byte("GET / HTTP/1.1\r\nHost: tunnel.example.com\r\n\r\n"), + expected: []byte("HTTP/1.1 301 Moved Permanently\r\nLocation: https://tunnel.example.com/\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"), setupMocks: func(msr *MockSessionRegistry) { }, }, @@ -350,7 +373,25 @@ func TestHandler(t *testing.T) { isTLS: false, redirectTLS: false, request: []byte("INVALID\r\n\r\n"), - expected: []byte(""), + expected: []byte("HTTP/1.1 400 Bad Request\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "bad request - header too large", + isTLS: false, + redirectTLS: false, + request: []byte(fmt.Sprintf("GET / HTTP/1.1\r\nHost: test.domain\r\n%s\r\n\r\n", strings.Repeat("test", 10000))), + expected: []byte("HTTP/1.1 400 Bad Request\r\n\r\n"), + setupMocks: func(msr *MockSessionRegistry) { + }, + }, + { + name: "bad request - no request", + isTLS: false, + redirectTLS: false, + request: []byte(""), + expected: []byte("HTTP/1.1 400 Bad Request\r\n\r\n"), setupMocks: func(msr *MockSessionRegistry) { }, }, @@ -453,7 +494,8 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: example.domain\r\n\r\n")) - mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) + mc.On("Write", mock.Anything).Return(-1, fmt.Errorf("write error")) mc.On("Close").Return(nil) return mc, nil }, @@ -467,11 +509,27 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\n\r\n")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) mc.On("Close").Return(nil) return mc, nil }, }, + { + name: "read error - connection failure", + isTLS: false, + redirectTLS: false, + request: []byte(""), + expected: []byte(""), + setupConn: func() (net.Conn, net.Conn) { + mc := new(MockConn) + mc.On("SetReadDeadline", mock.Anything).Return(nil) + mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) + mc.On("Read", mock.Anything).Return(0, fmt.Errorf("connection reset by peer")) + mc.On("Close").Return(nil) + return mc, nil + }, + }, { name: "handle ping request - write failure", isTLS: true, @@ -481,6 +539,7 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) mc.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) mc.On("Close").Return(nil) return mc, nil @@ -495,6 +554,7 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: ping.domain\r\n\r\n")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) mc.On("Write", mock.Anything).Return(182, nil) mc.On("Close").Return(fmt.Errorf("close error")) return mc, nil @@ -527,6 +587,7 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) mc.On("Close").Return(fmt.Errorf("stream close error")).Times(2) addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:12345") mc.On("RemoteAddr").Return(addr) @@ -557,6 +618,7 @@ func TestHandler(t *testing.T) { setupConn: func() (net.Conn, net.Conn) { mc := new(MockConn) mc.ReadBuffer = bytes.NewBuffer([]byte("GET / HTTP/1.1\r\nHost: test.domain\r\n\r\n")) + mc.On("SetReadDeadline", mock.Anything).Return(nil) mc.On("Close").Return(nil).Times(2) mc.On("RemoteAddr").Return(&net.IPAddr{IP: net.ParseIP("127.0.0.1")}) return mc, nil @@ -615,10 +677,15 @@ func TestHandler(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockSessionRegistry := new(MockSessionRegistry) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return("example.com") + mockConfig.On("HTTPPort").Return(port) + mockConfig.On("HeaderSize").Return(4096) + mockConfig.On("TLSRedirect").Return(true) hh := &httpHandler{ - domain: "domain", sessionRegistry: mockSessionRegistry, - redirectTLS: tt.redirectTLS, + config: mockConfig, } if tt.setupMocks != nil { diff --git a/internal/transport/https.go b/internal/transport/https.go index 10be94f..f1076bf 100644 --- a/internal/transport/https.go +++ b/internal/transport/https.go @@ -5,31 +5,30 @@ import ( "errors" "log" "net" + "tunnel_pls/internal/config" "tunnel_pls/internal/registry" ) type https struct { + config config.Config tlsConfig *tls.Config httpHandler *httpHandler - domain string - port string } -func NewHTTPSServer(domain, port string, sessionRegistry registry.Registry, redirectTLS bool, tlsConfig *tls.Config) Transport { +func NewHTTPSServer(config config.Config, sessionRegistry registry.Registry, tlsConfig *tls.Config) Transport { return &https{ + config: config, tlsConfig: tlsConfig, - httpHandler: newHTTPHandler(domain, sessionRegistry, redirectTLS), - domain: domain, - port: port, + httpHandler: newHTTPHandler(config, sessionRegistry), } } func (ht *https) Listen() (net.Listener, error) { - return tls.Listen("tcp", ":"+ht.port, ht.tlsConfig) + return tls.Listen("tcp", ":"+ht.config.HTTPSPort(), ht.tlsConfig) } func (ht *https) Serve(listener net.Listener) error { - log.Printf("HTTPS server is starting on port %s", ht.port) + log.Printf("HTTPS server is starting on port %s", ht.config.HTTPSPort()) for { conn, err := listener.Accept() if err != nil { diff --git a/internal/transport/https_test.go b/internal/transport/https_test.go index e956430..cf09592 100644 --- a/internal/transport/https_test.go +++ b/internal/transport/https_test.go @@ -13,31 +13,32 @@ import ( func TestNewHTTPSServer(t *testing.T) { msr := new(MockSessionRegistry) - domain := "example.com" - port := "443" - redirectTLS := false + mockConfig := &MockConfig{} + port := "0" tlsConfig := &tls.Config{} - - srv := NewHTTPSServer(domain, port, msr, redirectTLS, tlsConfig) + mockConfig.On("Domain").Return(mockConfig) + mockConfig.On("HTTPSPort").Return(port) + srv := NewHTTPSServer(mockConfig, msr, tlsConfig) assert.NotNil(t, srv) httpsSrv, ok := srv.(*https) assert.True(t, ok) - assert.Equal(t, port, httpsSrv.port) - assert.Equal(t, domain, httpsSrv.domain) assert.Equal(t, tlsConfig, httpsSrv.tlsConfig) assert.Equal(t, msr, httpsSrv.httpHandler.sessionRegistry) } func TestHTTPSServer_Listen(t *testing.T) { msr := new(MockSessionRegistry) - + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return(mockConfig) + mockConfig.On("HTTPSPort").Return(port) tlsConfig := &tls.Config{ GetCertificate: func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { return nil, nil }, } - srv := NewHTTPSServer("example.com", "0", msr, false, tlsConfig) + srv := NewHTTPSServer(mockConfig, msr, tlsConfig) listener, err := srv.Listen() if err != nil { @@ -50,7 +51,11 @@ func TestHTTPSServer_Listen(t *testing.T) { func TestHTTPSServer_Serve(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return(mockConfig) + mockConfig.On("HTTPSPort").Return(port) + srv := NewHTTPSServer(mockConfig, msr, &tls.Config{}) listener, err := net.Listen("tcp", "127.0.0.1:0") assert.NoError(t, err) @@ -66,7 +71,12 @@ func TestHTTPSServer_Serve(t *testing.T) { func TestHTTPSServer_Serve_AcceptError(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return(mockConfig) + mockConfig.On("HTTPSPort").Return(port) + srv := NewHTTPSServer(mockConfig, msr, &tls.Config{}) ml := new(mockListener) ml.On("Accept").Return(nil, errors.New("accept error")).Once() @@ -79,17 +89,23 @@ func TestHTTPSServer_Serve_AcceptError(t *testing.T) { func TestHTTPSServer_Serve_Success(t *testing.T) { msr := new(MockSessionRegistry) - srv := NewHTTPSServer("example.com", "0", msr, false, &tls.Config{}) + mockConfig := &MockConfig{} + port := "0" + mockConfig.On("Domain").Return(mockConfig) + mockConfig.On("HTTPSPort").Return(port) + mockConfig.On("HeaderSize").Return(4096) + + srv := NewHTTPSServer(mockConfig, msr, &tls.Config{}) listener, err := net.Listen("tcp", "127.0.0.1:0") assert.NoError(t, err) - port := listener.Addr().(*net.TCPAddr).Port + listenerport := listener.Addr().(*net.TCPAddr).Port go func() { _ = srv.Serve(listener) }() - conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port)) + conn, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", listenerport)) assert.NoError(t, err) _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) diff --git a/internal/transport/tls_test.go b/internal/transport/tls_test.go index 1518469..12e656d 100644 --- a/internal/transport/tls_test.go +++ b/internal/transport/tls_test.go @@ -36,6 +36,7 @@ func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) HeaderSize() int { return m.Called().Int(0) } func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } func (m *MockConfig) PprofPort() string { return m.Called().String(0) } func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } diff --git a/server/server_test.go b/server/server_test.go index 572fa1f..9b7dd88 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -45,6 +45,7 @@ func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) HeaderSize() int { return m.Called().Int(0) } func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } func (m *MockConfig) PprofPort() string { return m.Called().String(0) } func (m *MockConfig) Mode() types.ServerMode { From 65df01fee5efc80a0a3e728350a7684dac1d9663 Mon Sep 17 00:00:00 2001 From: bagas Date: Sun, 25 Jan 2026 20:49:12 +0700 Subject: [PATCH 38/47] refactor(forwarder): remove CreateForwardedTCPIPPayload method - OpenForwardedChannel now privately calls CreateForwardedTCPIPPayload - Removed an unused function --- internal/transport/httphandler.go | 3 +-- internal/transport/httphandler_test.go | 25 ++++++++----------------- internal/transport/tcp.go | 6 ++---- internal/transport/tcp_test.go | 17 ++++------------- session/forwarder/forwarder.go | 19 +++++-------------- session/lifecycle/lifecycle_test.go | 4 ---- 6 files changed, 20 insertions(+), 54 deletions(-) diff --git a/internal/transport/httphandler.go b/internal/transport/httphandler.go index 7e2135a..67aa6fb 100644 --- a/internal/transport/httphandler.go +++ b/internal/transport/httphandler.go @@ -152,10 +152,9 @@ func (hh *httpHandler) handlePingRequest(slug string, conn net.Conn) bool { } func (hh *httpHandler) forwardRequest(hw stream.HTTP, initialRequest header.RequestHeader, sshSession registry.Session) { - payload := sshSession.Forwarder().CreateForwardedTCPIPPayload(hw.RemoteAddr()) ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() - channel, reqs, err := sshSession.Forwarder().OpenForwardedChannel(ctx, payload) + channel, reqs, err := sshSession.Forwarder().OpenForwardedChannel(ctx, hw.RemoteAddr()) if err != nil { log.Printf("Failed to open forwarded-tcpip channel: %v", err) return diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index b6df77f..de1dd24 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -176,15 +176,6 @@ type MockForwarder struct { mock.Mock } -func (m *MockForwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { - args := m.Called(origin) - return args.Get(0).([]byte) -} - -func (m *MockForwarder) WriteBadGatewayResponse(dst io.Writer) { - m.Called(dst) -} - func (m *MockForwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { m.Called(dst, src) } @@ -221,8 +212,8 @@ func (m *MockForwarder) Listener() net.Listener { return args.Get(0).(net.Listener) } -func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called(ctx, payload) +func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(ctx, origin) if args.Get(0) == nil { return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) } @@ -413,7 +404,7 @@ func TestHandler(t *testing.T) { mockSession.On("Forwarder").Return(mockForwarder) mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), fmt.Errorf("open channel failed")) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), fmt.Errorf("open channel failed")) }, }, { @@ -437,7 +428,7 @@ func TestHandler(t *testing.T) { mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, fmt.Errorf("write error")) mockSSHChannel.On("Close").Return(nil) @@ -469,7 +460,7 @@ func TestHandler(t *testing.T) { mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(nil) @@ -577,7 +568,7 @@ func TestHandler(t *testing.T) { mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(nil) @@ -640,7 +631,7 @@ func TestHandler(t *testing.T) { mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) reqCh := make(chan *ssh.Request) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockSSHChannel, (<-chan *ssh.Request)(reqCh), nil) mockSSHChannel.On("Write", mock.Anything).Return(0, nil) mockSSHChannel.On("Close").Return(fmt.Errorf("close error")) @@ -666,7 +657,7 @@ func TestHandler(t *testing.T) { mockForwarder.On("CreateForwardedTCPIPPayload", mock.Anything).Return([]byte("payload")) - mockForwarder.On("OpenForwardedChannel", mock.Anything, []byte("payload")).Run(func(args mock.Arguments) { + mockForwarder.On("OpenForwardedChannel", mock.Anything, mock.Anything).Run(func(args mock.Arguments) { ctx := args.Get(0).(context.Context) <-ctx.Done() }).Return((ssh.Channel)(nil), (<-chan *ssh.Request)(nil), context.DeadlineExceeded) diff --git a/internal/transport/tcp.go b/internal/transport/tcp.go index 26c61b7..34ea3c2 100644 --- a/internal/transport/tcp.go +++ b/internal/transport/tcp.go @@ -18,8 +18,7 @@ type tcp struct { } type Forwarder interface { - CreateForwardedTCPIPPayload(origin net.Addr) []byte - OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) + OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) HandleConnection(dst io.ReadWriter, src ssh.Channel) } @@ -55,10 +54,9 @@ func (tt *tcp) handleTcp(conn net.Conn) { log.Printf("Failed to close connection: %v", err) } }() - payload := tt.forwarder.CreateForwardedTCPIPPayload(conn.RemoteAddr()) ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() - channel, reqs, err := tt.forwarder.OpenForwardedChannel(ctx, payload) + channel, reqs, err := tt.forwarder.OpenForwardedChannel(ctx, conn.RemoteAddr()) if err != nil { log.Printf("Failed to open forwarded-tcpip channel: %v", err) return diff --git a/internal/transport/tcp_test.go b/internal/transport/tcp_test.go index e8a5790..409e6f1 100644 --- a/internal/transport/tcp_test.go +++ b/internal/transport/tcp_test.go @@ -72,10 +72,8 @@ func TestTCPServer_Serve_Success(t *testing.T) { assert.NoError(t, err) port := listener.Addr().(*net.TCPAddr).Port - payload := []byte("test-payload") - mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) reqs := make(chan *ssh.Request) - mf.On("OpenForwardedChannel", mock.Anything, payload).Return(new(MockSSHChannel), (<-chan *ssh.Request)(reqs), nil) + mf.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(new(MockSSHChannel), (<-chan *ssh.Request)(reqs), nil) mf.On("HandleConnection", mock.Anything, mock.Anything).Return() go func() { @@ -99,12 +97,9 @@ func TestTCPServer_handleTcp_Success(t *testing.T) { serverConn, clientConn := net.Pipe() defer clientConn.Close() - payload := []byte("test-payload") - mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) - reqs := make(chan *ssh.Request) mockChannel := new(MockSSHChannel) - mf.On("OpenForwardedChannel", mock.Anything, payload).Return(mockChannel, (<-chan *ssh.Request)(reqs), nil) + mf.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(mockChannel, (<-chan *ssh.Request)(reqs), nil) mf.On("HandleConnection", serverConn, mockChannel).Return() @@ -121,9 +116,7 @@ func TestTCPServer_handleTcp_CloseError(t *testing.T) { mc.On("Close").Return(errors.New("close error")) mc.On("RemoteAddr").Return(&net.TCPAddr{}) - payload := []byte("test-payload") - mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) - mf.On("OpenForwardedChannel", mock.Anything, payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + mf.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) srv.handleTcp(mc) mc.AssertExpectations(t) @@ -136,9 +129,7 @@ func TestTCPServer_handleTcp_OpenChannelError(t *testing.T) { serverConn, clientConn := net.Pipe() defer clientConn.Close() - payload := []byte("test-payload") - mf.On("CreateForwardedTCPIPPayload", mock.Anything).Return(payload) - mf.On("OpenForwardedChannel", mock.Anything, payload).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) + mf.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) srv.handleTcp(serverConn) diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index 1520bb6..629fffd 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -24,9 +24,7 @@ type Forwarder interface { TunnelType() types.TunnelType ForwardedPort() uint16 HandleConnection(dst io.ReadWriter, src ssh.Channel) - CreateForwardedTCPIPPayload(origin net.Addr) []byte - OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) - WriteBadGatewayResponse(dst io.Writer) + OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) Close() error } type forwarder struct { @@ -60,7 +58,8 @@ func (f *forwarder) copyWithBuffer(dst io.Writer, src io.Reader) (written int64, return io.CopyBuffer(dst, src, buf) } -func (f *forwarder) OpenForwardedChannel(ctx context.Context, payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { +func (f *forwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) { + payload := createForwardedTCPIPPayload(origin, f.forwardedPort) type channelResult struct { channel ssh.Channel reqs <-chan *ssh.Request @@ -171,14 +170,6 @@ func (f *forwarder) Listener() net.Listener { return f.listener } -func (f *forwarder) WriteBadGatewayResponse(dst io.Writer) { - _, err := dst.Write(types.BadGatewayResponse) - if err != nil { - log.Printf("failed to write Bad Gateway response: %v", err) - return - } -} - func (f *forwarder) Close() error { if f.Listener() != nil { return f.listener.Close() @@ -186,7 +177,7 @@ func (f *forwarder) Close() error { return nil } -func (f *forwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { +func createForwardedTCPIPPayload(origin net.Addr, destPort uint16) []byte { host, portStr, _ := net.SplitHostPort(origin.String()) port, _ := strconv.Atoi(portStr) @@ -197,7 +188,7 @@ func (f *forwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { OriginPort uint32 }{ DestAddr: "localhost", - DestPort: uint32(f.ForwardedPort()), + DestPort: uint32(destPort), OriginAddr: host, OriginPort: uint32(port), } diff --git a/session/lifecycle/lifecycle_test.go b/session/lifecycle/lifecycle_test.go index 5a8deb0..73333e5 100644 --- a/session/lifecycle/lifecycle_test.go +++ b/session/lifecycle/lifecycle_test.go @@ -29,10 +29,6 @@ func (m *MockForwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { return args.Get(0).([]byte) } -func (m *MockForwarder) WriteBadGatewayResponse(dst io.Writer) { - m.Called(dst) -} - func (m *MockForwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { m.Called(dst, src) } From ee1dc3c3cd314d63fb7424e70e1cd6b439342b89 Mon Sep 17 00:00:00 2001 From: bagas Date: Mon, 26 Jan 2026 11:53:00 +0700 Subject: [PATCH 39/47] chore(tests): migrate to Testify for mocking and assertions --- internal/bootstrap/bootstrap_test.go | 4 +- internal/grpc/client/client_test.go | 647 +++++++++--------- internal/middleware/forwardedfor_test.go | 43 +- internal/middleware/tunnelfingerprint_test.go | 61 +- internal/port/port_test.go | 33 +- internal/random/random_test.go | 50 +- internal/registry/registry_test.go | 205 +++--- internal/transport/httphandler_test.go | 13 - session/forwarder/forwarder.go | 11 +- session/lifecycle/lifecycle_test.go | 10 +- 10 files changed, 530 insertions(+), 547 deletions(-) diff --git a/internal/bootstrap/bootstrap_test.go b/internal/bootstrap/bootstrap_test.go index 6586ea3..f5b5c0c 100644 --- a/internal/bootstrap/bootstrap_test.go +++ b/internal/bootstrap/bootstrap_test.go @@ -198,8 +198,8 @@ func (m *MockGRPCClient) ClientConn() *grpc.ClientConn { } func (m *MockGRPCClient) AuthorizeConn(ctx context.Context, token string) (authorized bool, user string, err error) { - m.Called() - return + args := m.Called(ctx, token) + return args.Bool(0), args.String(1), args.Error(2) } func (m *MockGRPCClient) CheckServerHealth(ctx context.Context) error { diff --git a/internal/grpc/client/client_test.go b/internal/grpc/client/client_test.go index f19a0b9..fb2147e 100644 --- a/internal/grpc/client/client_test.go +++ b/internal/grpc/client/client_test.go @@ -8,14 +8,18 @@ import ( "testing" "time" + "tunnel_pls/internal/port" "tunnel_pls/internal/registry" + "tunnel_pls/session/forwarder" "tunnel_pls/session/interaction" "tunnel_pls/session/lifecycle" "tunnel_pls/session/slug" "tunnel_pls/types" proto "git.fossy.my.id/bagas/tunnel-please-grpc/gen" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "golang.org/x/crypto/ssh" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/health/grpc_health_v1" @@ -78,23 +82,15 @@ func TestAuthorizeConn(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mockUserSvc.checkFunc = func(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) { - if in.AuthToken != tt.token { - t.Errorf("expected token %s, got %s", tt.token, in.AuthToken) - } - return tt.mockResp, tt.mockErr - } + mockUserSvc.On("Check", mock.Anything, &proto.CheckRequest{AuthToken: tt.token}, mock.Anything).Return(tt.mockResp, tt.mockErr).Once() auth, user, err := c.AuthorizeConn(context.Background(), tt.token) if (err != nil) != tt.wantErr { t.Errorf("AuthorizeConn() error = %v, wantErr %v", err, tt.wantErr) } - if auth != tt.wantAuth { - t.Errorf("AuthorizeConn() auth = %v, wantAuth %v", auth, tt.wantAuth) - } - if user != tt.wantUser { - t.Errorf("AuthorizeConn() user = %s, wantUser %s", user, tt.wantUser) - } + assert.Equal(t, tt.wantAuth, auth) + assert.Equal(t, tt.wantUser, user) + mockUserSvc.AssertExpectations(t) }) } } @@ -330,25 +326,15 @@ func TestHandleAuthError_WaitFail(t *testing.T) { } func TestProcessEventStream(t *testing.T) { - mockStream := &mockSubscribeClient{} c := &client{} t.Run("UnknownEventType", func(t *testing.T) { - mockStream.recvFunc = func() (*proto.Events, error) { - return &proto.Events{Type: proto.EventType(999)}, nil - } - first := true - mockStream.recvFunc = func() (*proto.Events, error) { - if first { - first = false - return &proto.Events{Type: proto.EventType(999)}, nil - } - return nil, io.EOF - } + mockStream := &mockSubscribeClient{} + mockStream.On("Recv").Return(&proto.Events{Type: proto.EventType(999)}, nil).Once() + mockStream.On("Recv").Return(nil, io.EOF).Once() + err := c.processEventStream(mockStream) - if !errors.Is(err, io.EOF) { - t.Errorf("expected EOF, got %v", err) - } + assert.ErrorIs(t, err, io.EOF) }) t.Run("DispatchSuccess", func(t *testing.T) { @@ -360,87 +346,87 @@ func TestProcessEventStream(t *testing.T) { for _, et := range events { t.Run(et.String(), func(t *testing.T) { - first := true - mockStream.recvFunc = func() (*proto.Events, error) { - if first { - first = false - payload := &proto.Events{Type: et} - switch et { - case proto.EventType_SLUG_CHANGE: - payload.Payload = &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}} - case proto.EventType_GET_SESSIONS: - payload.Payload = &proto.Events_GetSessionsEvent{GetSessionsEvent: &proto.GetSessionsEvent{}} - case proto.EventType_TERMINATE_SESSION: - payload.Payload = &proto.Events_TerminateSessionEvent{TerminateSessionEvent: &proto.TerminateSessionEvent{}} - } - return payload, nil - } - return nil, io.EOF + mockStream := &mockSubscribeClient{} + payload := &proto.Events{Type: et} + switch et { + case proto.EventType_SLUG_CHANGE: + payload.Payload = &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}} + case proto.EventType_GET_SESSIONS: + payload.Payload = &proto.Events_GetSessionsEvent{GetSessionsEvent: &proto.GetSessionsEvent{}} + case proto.EventType_TERMINATE_SESSION: + payload.Payload = &proto.Events_TerminateSessionEvent{TerminateSessionEvent: &proto.TerminateSessionEvent{}} } + + mockStream.On("Recv").Return(payload, nil).Once() + mockStream.On("Recv").Return(nil, io.EOF).Once() + mockReg := &mockRegistry{} - mockReg.getAllSessionFromUserFunc = func(user string) []registry.Session { return nil } - mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } - mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } c.sessionRegistry = mockReg - c.config = &MockConfig{} - c.config.(*MockConfig).On("Domain").Return("test.com") - mockStream.sendFunc = func(n *proto.Node) error { return nil } + mCfg := &MockConfig{} + c.config = mCfg + mCfg.On("Domain").Return("test.com").Maybe() + + switch et { + case proto.EventType_SLUG_CHANGE: + mockReg.On("Get", mock.Anything).Return(nil, errors.New("fail")).Once() + case proto.EventType_GET_SESSIONS: + mockReg.On("GetAllSessionFromUser", mock.Anything).Return(nil).Once() + case proto.EventType_TERMINATE_SESSION: + mockReg.On("GetWithUser", mock.Anything, mock.Anything).Return(nil, errors.New("fail")).Once() + } + mockStream.On("Send", mock.Anything).Return(nil).Once() err := c.processEventStream(mockStream) - if !errors.Is(err, io.EOF) { - t.Errorf("expected EOF, got %v", err) - } + assert.ErrorIs(t, err, io.EOF) }) } }) t.Run("HandlerError", func(t *testing.T) { - first := true - mockStream.recvFunc = func() (*proto.Events, error) { - if first { - first = false - return &proto.Events{Type: proto.EventType_SLUG_CHANGE, Payload: &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}}}, nil - } - return nil, io.EOF - } + mockStream := &mockSubscribeClient{} + mockStream.On("Recv").Return(&proto.Events{ + Type: proto.EventType_SLUG_CHANGE, + Payload: &proto.Events_SlugEvent{SlugEvent: &proto.SlugChangeEvent{}}, + }, nil).Once() + mockReg := &mockRegistry{} - mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return nil, errors.New("fail") } + mockReg.On("Get", mock.Anything).Return(nil, errors.New("fail")).Once() c.sessionRegistry = mockReg - mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Unavailable, "send fail") } + + expectedErr := status.Error(codes.Unavailable, "send fail") + mockStream.On("Send", mock.Anything).Return(expectedErr).Once() err := c.processEventStream(mockStream) - if !errors.Is(err, status.Error(codes.Unavailable, "send fail")) { - t.Errorf("expected send fail error, got %v", err) - } + assert.Equal(t, expectedErr, err) }) } func TestSendNode(t *testing.T) { c := &client{} - mockStream := &mockSubscribeClient{} t.Run("Success", func(t *testing.T) { - mockStream.sendFunc = func(n *proto.Node) error { return nil } + mockStream := &mockSubscribeClient{} + mockStream.On("Send", mock.Anything).Return(nil).Once() err := c.sendNode(mockStream, &proto.Node{}, "context") - if err != nil { - t.Errorf("sendNode error = %v", err) - } + assert.NoError(t, err) + mockStream.AssertExpectations(t) }) t.Run("ConnectionError", func(t *testing.T) { - mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Unavailable, "fail") } + mockStream := &mockSubscribeClient{} + expectedErr := status.Error(codes.Unavailable, "fail") + mockStream.On("Send", mock.Anything).Return(expectedErr).Once() err := c.sendNode(mockStream, &proto.Node{}, "context") - if err == nil { - t.Errorf("expected error") - } + assert.ErrorIs(t, err, expectedErr) + mockStream.AssertExpectations(t) }) t.Run("OtherError", func(t *testing.T) { - mockStream.sendFunc = func(n *proto.Node) error { return status.Error(codes.Internal, "fail") } + mockStream := &mockSubscribeClient{} + mockStream.On("Send", mock.Anything).Return(status.Error(codes.Internal, "fail")).Once() err := c.sendNode(mockStream, &proto.Node{}, "context") - if err != nil { - t.Errorf("expected nil error for non-connection error (logged only)") - } + assert.NoError(t, err) + mockStream.AssertExpectations(t) }) } @@ -462,80 +448,47 @@ func TestHandleSlugChange(t *testing.T) { t.Run("Success", func(t *testing.T) { mockSess := &mockSession{} mockInter := &mockInteraction{} - mockSess.interactionFunc = func() interaction.Interaction { return mockInter } + mockSess.On("Interaction").Return(mockInter).Once() + mockInter.On("Redraw").Return().Once() - mockReg.getFunc = func(key registry.Key) (registry.Session, error) { - if key.Id != "old-slug" { - t.Errorf("expected old-slug, got %s", key.Id) - } - return mockSess, nil - } - mockReg.updateFunc = func(user string, oldKey, newKey registry.Key) error { - if user != "mas-fuad" || oldKey.Id != "old-slug" || newKey.Id != "new-slug" { - t.Errorf("unexpected update args") - } - return nil - } + mockReg.On("Get", types.SessionKey{Id: "old-slug", Type: types.TunnelTypeHTTP}).Return(mockSess, nil).Once() + mockReg.On("Update", "mas-fuad", types.SessionKey{Id: "old-slug", Type: types.TunnelTypeHTTP}, types.SessionKey{Id: "new-slug", Type: types.TunnelTypeHTTP}).Return(nil).Once() - sent := false - mockStream.sendFunc = func(n *proto.Node) error { - sent = true - if n.Type != proto.EventType_SLUG_CHANGE_RESPONSE { - t.Errorf("expected slug change response") - } - resp := n.GetSlugEventResponse() - if !resp.Success { - t.Errorf("expected success") - } - return nil - } + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { + return n.Type == proto.EventType_SLUG_CHANGE_RESPONSE && n.GetSlugEventResponse().Success + })).Return(nil).Once() err := c.handleSlugChange(mockStream, evt) - if err != nil { - t.Errorf("handleSlugChange error = %v", err) - } - if !mockInter.redrawCalled { - t.Errorf("redraw was not called") - } - if !sent { - t.Errorf("response not sent") - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) + mockInter.AssertExpectations(t) }) t.Run("SessionNotFound", func(t *testing.T) { - mockReg.getFunc = func(key registry.Key) (registry.Session, error) { - return nil, errors.New("not found") - } - mockStream.sendFunc = func(n *proto.Node) error { - resp := n.GetSlugEventResponse() - if resp.Success || resp.Message != "not found" { - t.Errorf("unexpected failure response: %v", resp) - } - return nil - } + mockReg.On("Get", mock.Anything).Return(nil, errors.New("not found")).Once() + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { + return !n.GetSlugEventResponse().Success && n.GetSlugEventResponse().Message == "not found" + })).Return(nil).Once() + err := c.handleSlugChange(mockStream, evt) - if err != nil { - t.Errorf("handleSlugChange should return nil if error is handled via response, but it currently returns whatever sendNode returns") - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) }) t.Run("UpdateError", func(t *testing.T) { mockSess := &mockSession{} - mockReg.getFunc = func(key registry.Key) (registry.Session, error) { return mockSess, nil } - mockReg.updateFunc = func(user string, oldKey, newKey registry.Key) error { - return errors.New("update fail") - } - mockStream.sendFunc = func(n *proto.Node) error { - resp := n.GetSlugEventResponse() - if resp.Success || resp.Message != "update fail" { - t.Errorf("unexpected failure response: %v", resp) - } - return nil - } + mockReg.On("Get", mock.Anything).Return(mockSess, nil).Once() + mockReg.On("Update", mock.Anything, mock.Anything, mock.Anything).Return(errors.New("update fail")).Once() + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { + return !n.GetSlugEventResponse().Success && n.GetSlugEventResponse().Message == "update fail" + })).Return(nil).Once() + err := c.handleSlugChange(mockStream, evt) - if err != nil { - t.Errorf("handleSlugChange error = %v", err) - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) }) } @@ -543,7 +496,6 @@ func TestHandleGetSessions(t *testing.T) { mockReg := &mockRegistry{} mockStream := &mockSubscribeClient{} mockCfg := &MockConfig{} - mockCfg.On("Domain").Return("test.com") c := &client{sessionRegistry: mockReg, config: mockCfg} evt := &proto.Events{ @@ -557,43 +509,30 @@ func TestHandleGetSessions(t *testing.T) { t.Run("Success", func(t *testing.T) { now := time.Now() mockSess := &mockSession{} - mockSess.detailFunc = func() *types.Detail { - return &types.Detail{ - ForwardingType: "http", - Slug: "myslug", - UserID: "mas-fuad", - Active: true, - StartedAt: now, - } - } + mockSess.On("Detail").Return(&types.Detail{ + ForwardingType: "http", + Slug: "myslug", + UserID: "mas-fuad", + Active: true, + StartedAt: now, + }).Once() - mockReg.getAllSessionFromUserFunc = func(user string) []registry.Session { - if user != "mas-fuad" { - t.Errorf("expected mas-fuad, got %s", user) - } - return []registry.Session{mockSess} - } + mockReg.On("GetAllSessionFromUser", "mas-fuad").Return([]registry.Session{mockSess}).Once() + mockCfg.On("Domain").Return("test.com").Once() - sent := false - mockStream.sendFunc = func(n *proto.Node) error { - sent = true + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { if n.Type != proto.EventType_GET_SESSIONS { - t.Errorf("expected get sessions response type") + return false } - resp := n.GetGetSessionsEvent() - if len(resp.Details) != 1 || resp.Details[0].Slug != "myslug" { - t.Errorf("unexpected details: %v", resp.Details) - } - return nil - } + details := n.GetGetSessionsEvent().Details + return len(details) == 1 && details[0].Slug == "myslug" + })).Return(nil).Once() err := c.handleGetSessions(mockStream, evt) - if err != nil { - t.Errorf("handleGetSessions error = %v", err) - } - if !sent { - t.Errorf("response not sent") - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) + mockCfg.AssertExpectations(t) }) } @@ -615,41 +554,20 @@ func TestHandleTerminateSession(t *testing.T) { t.Run("Success", func(t *testing.T) { mockSess := &mockSession{} mockLife := &mockLifecycle{} - mockSess.lifecycleFunc = func() lifecycle.Lifecycle { return mockLife } + mockSess.On("Lifecycle").Return(mockLife).Once() + mockLife.On("Close").Return(nil).Once() - closed := false - mockLife.closeFunc = func() error { - closed = true - return nil - } + mockReg.On("GetWithUser", "mas-fuad", types.SessionKey{Id: "myslug", Type: types.TunnelTypeHTTP}).Return(mockSess, nil).Once() - mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { - if user != "mas-fuad" || key.Id != "myslug" || key.Type != types.TunnelTypeHTTP { - t.Errorf("unexpected get args") - } - return mockSess, nil - } - - sent := false - mockStream.sendFunc = func(n *proto.Node) error { - sent = true - resp := n.GetTerminateSessionEventResponse() - if !resp.Success { - t.Errorf("expected success") - } - return nil - } + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { + return n.GetTerminateSessionEventResponse().Success + })).Return(nil).Once() err := c.handleTerminateSession(mockStream, evt) - if err != nil { - t.Errorf("handleTerminateSession error = %v", err) - } - if !closed { - t.Errorf("close was not called") - } - if !sent { - t.Errorf("response not sent") - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) + mockLife.AssertExpectations(t) }) t.Run("TunnelTypeUnknown", func(t *testing.T) { @@ -660,54 +578,46 @@ func TestHandleTerminateSession(t *testing.T) { }, }, } - mockStream.sendFunc = func(n *proto.Node) error { + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { resp := n.GetTerminateSessionEventResponse() - if resp.Success || resp.Message == "" { - t.Errorf("expected failure response") - } - return nil - } + return !resp.Success && resp.Message != "" + })).Return(nil).Once() + err := c.handleTerminateSession(mockStream, badEvt) - if err != nil { - t.Errorf("handleTerminateSession error = %v", err) - } + assert.NoError(t, err) + mockStream.AssertExpectations(t) }) t.Run("SessionNotFound", func(t *testing.T) { - mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { - return nil, errors.New("not found") - } - mockStream.sendFunc = func(n *proto.Node) error { + mockReg.On("GetWithUser", mock.Anything, mock.Anything).Return(nil, errors.New("not found")).Once() + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { resp := n.GetTerminateSessionEventResponse() - if resp.Success || resp.Message != "not found" { - t.Errorf("unexpected failure response: %v", resp) - } - return nil - } + return !resp.Success && resp.Message == "not found" + })).Return(nil).Once() + err := c.handleTerminateSession(mockStream, evt) - if err != nil { - t.Errorf("handleTerminateSession error = %v", err) - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) }) t.Run("CloseError", func(t *testing.T) { mockSess := &mockSession{} mockLife := &mockLifecycle{} - mockSess.lifecycleFunc = func() lifecycle.Lifecycle { return mockLife } - mockLife.closeFunc = func() error { return errors.New("close fail") } - mockReg.getWithUserFunc = func(user string, key registry.Key) (registry.Session, error) { return mockSess, nil } + mockSess.On("Lifecycle").Return(mockLife).Once() + mockLife.On("Close").Return(errors.New("close fail")).Once() + mockReg.On("GetWithUser", mock.Anything, mock.Anything).Return(mockSess, nil).Once() - mockStream.sendFunc = func(n *proto.Node) error { + mockStream.On("Send", mock.MatchedBy(func(n *proto.Node) bool { resp := n.GetTerminateSessionEventResponse() - if resp.Success || resp.Message != "close fail" { - t.Errorf("expected failure response: %v", resp) - } - return nil - } + return !resp.Success && resp.Message == "close fail" + })).Return(nil).Once() + err := c.handleTerminateSession(mockStream, evt) - if err != nil { - t.Errorf("handleTerminateSession error = %v", err) - } + assert.NoError(t, err) + mockReg.AssertExpectations(t) + mockStream.AssertExpectations(t) + mockLife.AssertExpectations(t) }) } @@ -718,42 +628,29 @@ func TestSubscribeAndProcess(t *testing.T) { backoff := time.Second t.Run("SubscribeError", func(t *testing.T) { - mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - return nil, status.Error(codes.Unauthenticated, "unauth") - } + expectedErr := status.Error(codes.Unauthenticated, "unauth") + mockEventSvc.On("Subscribe", mock.Anything, mock.Anything).Return(nil, expectedErr).Once() err := c.subscribeAndProcess(ctx, "id", "token", &backoff) - if !errors.Is(err, status.Error(codes.Unauthenticated, "unauth")) { - t.Errorf("expected unauth error, got %v", err) - } + assert.ErrorIs(t, err, expectedErr) }) t.Run("AuthSendError", func(t *testing.T) { mockStream := &mockSubscribeClient{} - mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - return mockStream, nil - } - mockStream.sendFunc = func(n *proto.Node) error { - return status.Error(codes.Internal, "send fail") - } + mockEventSvc.On("Subscribe", mock.Anything, mock.Anything).Return(mockStream, nil).Once() + expectedErr := status.Error(codes.Internal, "send fail") + mockStream.On("Send", mock.Anything).Return(expectedErr).Once() err := c.subscribeAndProcess(ctx, "id", "token", &backoff) - if !errors.Is(err, status.Error(codes.Internal, "send fail")) { - t.Errorf("expected send fail, got %v", err) - } + assert.ErrorIs(t, err, expectedErr) }) t.Run("StreamError", func(t *testing.T) { mockStream := &mockSubscribeClient{} - mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - return mockStream, nil - } - mockStream.sendFunc = func(n *proto.Node) error { return nil } - mockStream.recvFunc = func() (*proto.Events, error) { - return nil, status.Error(codes.Internal, "stream fail") - } + mockEventSvc.On("Subscribe", mock.Anything, mock.Anything).Return(mockStream, nil).Once() + mockStream.On("Send", mock.Anything).Return(nil).Once() + expectedErr := status.Error(codes.Internal, "stream fail") + mockStream.On("Recv").Return(nil, expectedErr).Once() err := c.subscribeAndProcess(ctx, "id", "token", &backoff) - if !errors.Is(err, status.Error(codes.Internal, "stream fail")) { - t.Errorf("expected stream fail, got %v", err) - } + assert.ErrorIs(t, err, expectedErr) }) } @@ -762,13 +659,10 @@ func TestSubscribeEvents(t *testing.T) { c := &client{eventService: mockEventSvc} t.Run("ReturnsOnError", func(t *testing.T) { - mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - return nil, errors.New("fatal error") - } + expectedErr := errors.New("fatal error") + mockEventSvc.On("Subscribe", mock.Anything, mock.Anything).Return(nil, expectedErr).Once() err := c.SubscribeEvents(context.Background(), "id", "token") - if err == nil || err.Error() != "fatal error" { - t.Errorf("expected fatal error, got %v", err) - } + assert.ErrorIs(t, err, expectedErr) }) t.Run("RetryLoop", func(t *testing.T) { @@ -779,19 +673,11 @@ func TestSubscribeEvents(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) defer cancel() - callCount := 0 - mockEventSvc.subscribeFunc = func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - callCount++ - return nil, status.Error(codes.Unavailable, "unavailable") - } + mockEventSvc.On("Subscribe", mock.Anything, mock.Anything).Return(nil, status.Error(codes.Unavailable, "unavailable")) err := c.SubscribeEvents(ctx, "id", "token") - if !errors.Is(err, context.DeadlineExceeded) && !errors.Is(err, context.Canceled) { - t.Errorf("expected timeout/canceled error, got %v", err) - } - if callCount <= 1 { - t.Errorf("expected multiple calls due to retry, got %d", callCount) - } + assert.True(t, errors.Is(err, context.DeadlineExceeded) || errors.Is(err, context.Canceled)) + mockEventSvc.AssertExpectations(t) }) } @@ -806,33 +692,24 @@ func TestCheckServerHealth(t *testing.T) { c := &client{} t.Run("Success", func(t *testing.T) { - mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { - return &grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_SERVING}, nil - } + mockHealth.On("Check", mock.Anything, mock.Anything, mock.Anything).Return(&grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_SERVING}, nil).Once() err := c.CheckServerHealth(context.Background()) - if err != nil { - t.Errorf("expected nil error, got %v", err) - } + assert.NoError(t, err) + mockHealth.AssertExpectations(t) }) t.Run("Error", func(t *testing.T) { - mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { - return nil, errors.New("health fail") - } + mockHealth.On("Check", mock.Anything, mock.Anything, mock.Anything).Return(nil, errors.New("health fail")).Once() err := c.CheckServerHealth(context.Background()) - if err == nil || err.Error() != "health check failed: health fail" { - t.Errorf("expected health fail error, got %v", err) - } + assert.ErrorContains(t, err, "health check failed: health fail") + mockHealth.AssertExpectations(t) }) t.Run("NotServing", func(t *testing.T) { - mockHealth.checkFunc = func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { - return &grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_NOT_SERVING}, nil - } + mockHealth.On("Check", mock.Anything, mock.Anything, mock.Anything).Return(&grpc_health_v1.HealthCheckResponse{Status: grpc_health_v1.HealthCheckResponse_NOT_SERVING}, nil).Once() err := c.CheckServerHealth(context.Background()) - if err == nil || err.Error() != "server not serving: NOT_SERVING" { - t.Errorf("expected not serving error, got %v", err) - } + assert.ErrorContains(t, err, "server not serving: NOT_SERVING") + mockHealth.AssertExpectations(t) }) } @@ -897,88 +774,192 @@ func (m *MockConfig) NodeToken() string { return m.Called().String(0) } func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } type mockRegistry struct { - registry.Registry - getFunc func(key registry.Key) (registry.Session, error) - getWithUserFunc func(user string, key registry.Key) (registry.Session, error) - updateFunc func(user string, oldKey, newKey registry.Key) error - getAllSessionFromUserFunc func(user string) []registry.Session + mock.Mock } func (m *mockRegistry) Get(key registry.Key) (registry.Session, error) { - return m.getFunc(key) + args := m.Called(key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) } func (m *mockRegistry) GetWithUser(user string, key registry.Key) (registry.Session, error) { - return m.getWithUserFunc(user, key) + args := m.Called(user, key) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(registry.Session), args.Error(1) } func (m *mockRegistry) Update(user string, oldKey, newKey registry.Key) error { - return m.updateFunc(user, oldKey, newKey) + return m.Called(user, oldKey, newKey).Error(0) } func (m *mockRegistry) GetAllSessionFromUser(user string) []registry.Session { - return m.getAllSessionFromUserFunc(user) + args := m.Called(user) + if args.Get(0) == nil { + return nil + } + return args.Get(0).([]registry.Session) +} +func (m *mockRegistry) Register(key registry.Key, session registry.Session) bool { + return m.Called(key, session).Bool(0) +} +func (m *mockRegistry) Remove(key registry.Key) { + m.Called(key) } type mockSession struct { - registry.Session - lifecycleFunc func() lifecycle.Lifecycle - interactionFunc func() interaction.Interaction - detailFunc func() *types.Detail - slugFunc func() slug.Slug + mock.Mock } -func (m *mockSession) Lifecycle() lifecycle.Lifecycle { return m.lifecycleFunc() } -func (m *mockSession) Interaction() interaction.Interaction { return m.interactionFunc() } -func (m *mockSession) Detail() *types.Detail { return m.detailFunc() } -func (m *mockSession) Slug() slug.Slug { return m.slugFunc() } +func (m *mockSession) Lifecycle() lifecycle.Lifecycle { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(lifecycle.Lifecycle) +} +func (m *mockSession) Interaction() interaction.Interaction { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(interaction.Interaction) +} +func (m *mockSession) Detail() *types.Detail { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(*types.Detail) +} +func (m *mockSession) Slug() slug.Slug { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(slug.Slug) +} +func (m *mockSession) Forwarder() forwarder.Forwarder { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(forwarder.Forwarder) +} type mockInteraction struct { - interaction.Interaction - redrawCalled bool + mock.Mock } -func (m *mockInteraction) Redraw() { m.redrawCalled = true } +func (m *mockInteraction) Start() { m.Called() } +func (m *mockInteraction) Stop() { m.Called() } +func (m *mockInteraction) Redraw() { m.Called() } +func (m *mockInteraction) SetWH(w, h int) { m.Called(w, h) } +func (m *mockInteraction) SetChannel(channel ssh.Channel) { m.Called(channel) } +func (m *mockInteraction) SetMode(mode types.InteractiveMode) { m.Called(mode) } +func (m *mockInteraction) Mode() types.InteractiveMode { + return m.Called().Get(0).(types.InteractiveMode) +} +func (m *mockInteraction) Send(message string) error { return m.Called(message).Error(0) } type mockLifecycle struct { - lifecycle.Lifecycle - closeFunc func() error + mock.Mock } -func (m *mockLifecycle) Close() error { return m.closeFunc() } +func (m *mockLifecycle) Close() error { return m.Called().Error(0) } +func (m *mockLifecycle) Channel() ssh.Channel { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(ssh.Channel) +} +func (m *mockLifecycle) Connection() ssh.Conn { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(ssh.Conn) +} +func (m *mockLifecycle) User() string { return m.Called().String(0) } +func (m *mockLifecycle) SetChannel(channel ssh.Channel) { m.Called(channel) } +func (m *mockLifecycle) SetStatus(status types.SessionStatus) { m.Called(status) } +func (m *mockLifecycle) IsActive() bool { return m.Called().Bool(0) } +func (m *mockLifecycle) StartedAt() time.Time { return m.Called().Get(0).(time.Time) } +func (m *mockLifecycle) PortRegistry() port.Port { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(port.Port) +} type mockEventServiceClient struct { - proto.EventServiceClient - subscribeFunc func(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) + mock.Mock } func (m *mockEventServiceClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (proto.EventService_SubscribeClient, error) { - return m.subscribeFunc(ctx, opts...) + args := m.Called(ctx, opts) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(proto.EventService_SubscribeClient), args.Error(1) } type mockSubscribeClient struct { + mock.Mock grpc.ClientStream - sendFunc func(*proto.Node) error - recvFunc func() (*proto.Events, error) } -func (m *mockSubscribeClient) Send(n *proto.Node) error { return m.sendFunc(n) } -func (m *mockSubscribeClient) Recv() (*proto.Events, error) { return m.recvFunc() } -func (m *mockSubscribeClient) Context() context.Context { return context.Background() } +func (m *mockSubscribeClient) Send(n *proto.Node) error { return m.Called(n).Error(0) } +func (m *mockSubscribeClient) Recv() (*proto.Events, error) { + args := m.Called() + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(*proto.Events), args.Error(1) +} +func (m *mockSubscribeClient) Context() context.Context { return m.Called().Get(0).(context.Context) } type mockUserServiceClient struct { - proto.UserServiceClient - checkFunc func(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) + mock.Mock } func (m *mockUserServiceClient) Check(ctx context.Context, in *proto.CheckRequest, opts ...grpc.CallOption) (*proto.CheckResponse, error) { - return m.checkFunc(ctx, in, opts...) + args := m.Called(ctx, in, opts) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(*proto.CheckResponse), args.Error(1) } type mockHealthClient struct { - grpc_health_v1.HealthClient - checkFunc func(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) + mock.Mock } func (m *mockHealthClient) Check(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthCheckResponse, error) { - return m.checkFunc(ctx, in, opts...) + args := m.Called(ctx, in, opts) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(*grpc_health_v1.HealthCheckResponse), args.Error(1) +} + +func (m *mockHealthClient) Watch(ctx context.Context, in *grpc_health_v1.HealthCheckRequest, opts ...grpc.CallOption) (grpc_health_v1.Health_WatchClient, error) { + args := m.Called(ctx, in, opts) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(grpc_health_v1.Health_WatchClient), args.Error(1) +} + +func (m *mockHealthClient) List(ctx context.Context, in *grpc_health_v1.HealthListRequest, opts ...grpc.CallOption) (*grpc_health_v1.HealthListResponse, error) { + args := m.Called(ctx, in, opts) + if args.Get(0) == nil { + return nil, args.Error(1) + } + return args.Get(0).(*grpc_health_v1.HealthListResponse), args.Error(1) } func TestProtoToTunnelType(t *testing.T) { diff --git a/internal/middleware/forwardedfor_test.go b/internal/middleware/forwardedfor_test.go index ef6a536..5a45dc0 100644 --- a/internal/middleware/forwardedfor_test.go +++ b/internal/middleware/forwardedfor_test.go @@ -1,40 +1,42 @@ package middleware import ( + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "net" "testing" ) type mockRequestHeader struct { - headers map[string]string + mock.Mock } func (m *mockRequestHeader) Value(key string) string { - return m.headers[key] + return m.Called(key).String(0) } func (m *mockRequestHeader) Set(key string, value string) { - m.headers[key] = value + m.Called(key, value) } func (m *mockRequestHeader) Remove(key string) { - delete(m.headers, key) + m.Called(key) } func (m *mockRequestHeader) Finalize() []byte { - return []byte{} + return m.Called().Get(0).([]byte) } func (m *mockRequestHeader) Method() string { - return "" + return m.Called().String(0) } func (m *mockRequestHeader) Path() string { - return "" + return m.Called().String(0) } func (m *mockRequestHeader) Version() string { - return "" + return m.Called().String(0) } func TestForwardedFor_HandleRequest(t *testing.T) { @@ -73,23 +75,19 @@ func TestForwardedFor_HandleRequest(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { ff := NewForwardedFor(tc.addr) - reqHeader := &mockRequestHeader{headers: make(map[string]string)} + reqHeader := new(mockRequestHeader) + + if !tc.expectError { + reqHeader.On("Set", "X-Forwarded-For", tc.expectedHost).Return() + } err := ff.HandleRequest(reqHeader) if tc.expectError { - if err == nil { - t.Fatalf("expected error but got none") - } + assert.Error(t, err) } else { - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - - host := reqHeader.Value("X-Forwarded-For") - if host != tc.expectedHost { - t.Errorf("expected X-Forwarded-For header to be '%s', got '%s'", tc.expectedHost, host) - } + assert.NoError(t, err) + reqHeader.AssertExpectations(t) } }) } @@ -121,10 +119,7 @@ func TestNewForwardedFor(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { ff := NewForwardedFor(tc.addr) - - if ff.addr.String() != tc.expectAddr.String() { - t.Errorf("expected addr to be '%v', got '%v'", tc.expectAddr, ff.addr) - } + assert.Equal(t, tc.expectAddr.String(), ff.addr.String()) }) } } diff --git a/internal/middleware/tunnelfingerprint_test.go b/internal/middleware/tunnelfingerprint_test.go index 4753ac0..21e8b15 100644 --- a/internal/middleware/tunnelfingerprint_test.go +++ b/internal/middleware/tunnelfingerprint_test.go @@ -1,76 +1,69 @@ package middleware import ( - "errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "testing" ) type mockResponseHeader struct { - headers map[string]string + mock.Mock } func (m *mockResponseHeader) Value(key string) string { - return m.headers[key] + return m.Called(key).String(0) } func (m *mockResponseHeader) Set(key string, value string) { - m.headers[key] = value + m.Called(key, value) } func (m *mockResponseHeader) Remove(key string) { - delete(m.headers, key) + m.Called(key) } func (m *mockResponseHeader) Finalize() []byte { - return nil + return m.Called().Get(0).([]byte) } func TestTunnelFingerprintHandleResponse(t *testing.T) { tests := []struct { - name string - initialState map[string]string - expected map[string]string - body []byte - wantErr error + name string + expected map[string]string + body []byte + wantErr error }{ { - name: "Sets Server Header", - initialState: map[string]string{}, - expected: map[string]string{"Server": "Tunnel Please"}, - body: []byte("Sample body"), - wantErr: nil, + name: "Sets Server Header", + expected: map[string]string{"Server": "Tunnel Please"}, + body: []byte("Sample body"), + wantErr: nil, }, { - name: "Overwrites Server Header", - initialState: map[string]string{"Server": "Old Value"}, - expected: map[string]string{"Server": "Tunnel Please"}, - body: nil, - wantErr: nil, + name: "Overwrites Server Header", + expected: map[string]string{"Server": "Tunnel Please"}, + body: nil, + wantErr: nil, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mockHeader := &mockResponseHeader{headers: tt.initialState} + mockHeader := new(mockResponseHeader) + for k, v := range tt.expected { + mockHeader.On("Set", k, v).Return() + } + tunnelFingerprint := NewTunnelFingerprint() err := tunnelFingerprint.HandleResponse(mockHeader, tt.body) - if !errors.Is(err, tt.wantErr) { - t.Fatalf("unexpected error, got: %v, want: %v", err, tt.wantErr) - } - - for key, expectedValue := range tt.expected { - if val := mockHeader.Value(key); val != expectedValue { - t.Errorf("header[%q] = %q; want %q", key, val, expectedValue) - } - } + assert.ErrorIs(t, err, tt.wantErr) + mockHeader.AssertExpectations(t) }) } } func TestNewTunnelFingerprint(t *testing.T) { instance := NewTunnelFingerprint() - if instance == nil { - t.Errorf("NewTunnelFingerprint() = nil; want non-nil instance") - } + assert.NotNil(t, instance) } diff --git a/internal/port/port_test.go b/internal/port/port_test.go index b787f30..56526b3 100644 --- a/internal/port/port_test.go +++ b/internal/port/port_test.go @@ -1,6 +1,7 @@ package port import ( + "github.com/stretchr/testify/assert" "testing" ) @@ -20,8 +21,10 @@ func TestAddRange(t *testing.T) { t.Run(tt.name, func(t *testing.T) { pm := New() err := pm.AddRange(tt.startPort, tt.endPort) - if (err != nil) != tt.wantErr { - t.Errorf("AddRange() error = %v, wantErr %v", err, tt.wantErr) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) } }) } @@ -48,9 +51,8 @@ func TestUnassigned(t *testing.T) { _ = pm.SetStatus(k, v) } got, gotOk := pm.Unassigned() - if got != tt.want || gotOk != tt.wantOk { - t.Errorf("Unassigned() got = %v, want %v, gotOk = %v, wantOk %v", got, tt.want, gotOk, tt.wantOk) - } + assert.Equal(t, tt.want, got) + assert.Equal(t, tt.wantOk, gotOk) }) } } @@ -70,12 +72,12 @@ func TestSetStatus(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := pm.SetStatus(tt.port, tt.assigned); err != nil { - t.Errorf("SetStatus() error = %v", err) - } - if status, _ := pm.(*port).ports[tt.port]; status != tt.assigned { - t.Errorf("SetStatus() failed, port %v has status %v, want %v", tt.port, status, tt.assigned) - } + err := pm.SetStatus(tt.port, tt.assigned) + assert.NoError(t, err) + + status, ok := pm.(*port).ports[tt.port] + assert.True(t, ok) + assert.Equal(t, tt.assigned, status) }) } } @@ -102,13 +104,10 @@ func TestClaim(t *testing.T) { } got := pm.Claim(tt.port) - if got != tt.want { - t.Errorf("Claim() got = %v, want %v", got, tt.want) - } + assert.Equal(t, tt.want, got) - if finalState := pm.(*port).ports[tt.port]; finalState != true { - t.Errorf("Claim() did not update port %v status to 'assigned'", tt.port) - } + finalState := pm.(*port).ports[tt.port] + assert.True(t, finalState) }) } } diff --git a/internal/random/random_test.go b/internal/random/random_test.go index 057487b..e0cd512 100644 --- a/internal/random/random_test.go +++ b/internal/random/random_test.go @@ -1,20 +1,12 @@ package random import ( - "errors" - "fmt" "io" "testing" + + "github.com/stretchr/testify/assert" ) -type brainrotReader struct { - err error -} - -func (f *brainrotReader) Read(p []byte) (int, error) { - return 0, f.err -} - func TestRandom_String(t *testing.T) { tests := []struct { name string @@ -32,20 +24,18 @@ func TestRandom_String(t *testing.T) { randomizer := New() result, err := randomizer.String(tt.length) - if (err != nil) != tt.wantErr { - t.Errorf("String() error = %v, wantErr %v", err, tt.wantErr) - return - } - - if !tt.wantErr && len(result) != tt.length { - t.Errorf("String() length = %v, want %v", len(result), tt.length) + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Len(t, result, tt.length) } }) } } func TestRandomWithFailingReader_String(t *testing.T) { - errBrainrot := fmt.Errorf("you are not sigma enough") + errBrainrot := assert.AnError tests := []struct { name string @@ -53,8 +43,10 @@ func TestRandomWithFailingReader_String(t *testing.T) { expectErr error }{ { - name: "failing reader", - reader: &brainrotReader{err: errBrainrot}, + name: "failing reader", + reader: func() io.Reader { + return &failingReader{err: errBrainrot} + }(), expectErr: errBrainrot, }, } @@ -63,14 +55,16 @@ func TestRandomWithFailingReader_String(t *testing.T) { t.Run(tt.name, func(t *testing.T) { randomizer := &random{reader: tt.reader} result, err := randomizer.String(20) - if !errors.Is(err, tt.expectErr) { - t.Errorf("String() error = %v, wantErr %v", err, tt.expectErr) - return - } - - if result != "" { - t.Errorf("String() result = %v, want an empty string due to error", result) - } + assert.ErrorIs(t, err, tt.expectErr) + assert.Empty(t, result) }) } } + +type failingReader struct { + err error +} + +func (f *failingReader) Read(p []byte) (int, error) { + return 0, f.err +} diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index ce3c14b..6e93ceb 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -1,7 +1,9 @@ package registry import ( - "errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" "sync" "testing" "time" @@ -15,47 +17,109 @@ import ( "golang.org/x/crypto/ssh" ) -type mockSession struct{ user string } +type mockSession struct { + mock.Mock +} -func (m *mockSession) Lifecycle() lifecycle.Lifecycle { return &mockLifecycle{user: m.user} } +func (m *mockSession) Lifecycle() lifecycle.Lifecycle { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(lifecycle.Lifecycle) +} func (m *mockSession) Interaction() interaction.Interaction { - return nil + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(interaction.Interaction) } func (m *mockSession) Forwarder() forwarder.Forwarder { - return nil + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(forwarder.Forwarder) } func (m *mockSession) Slug() slug.Slug { - return &mockSlug{} + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(slug.Slug) } func (m *mockSession) Detail() *types.Detail { - return nil + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(*types.Detail) } -type mockLifecycle struct{ user string } +type mockLifecycle struct { + mock.Mock +} func (ml *mockLifecycle) Channel() ssh.Channel { - return nil + args := ml.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(ssh.Channel) } -func (ml *mockLifecycle) Connection() ssh.Conn { return nil } -func (ml *mockLifecycle) PortRegistry() port.Port { return nil } -func (ml *mockLifecycle) SetChannel(channel ssh.Channel) { _ = channel } -func (ml *mockLifecycle) SetStatus(status types.SessionStatus) { _ = status } -func (ml *mockLifecycle) IsActive() bool { return false } -func (ml *mockLifecycle) StartedAt() time.Time { return time.Time{} } -func (ml *mockLifecycle) Close() error { return nil } -func (ml *mockLifecycle) User() string { return ml.user } +func (ml *mockLifecycle) Connection() ssh.Conn { + args := ml.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(ssh.Conn) +} -type mockSlug struct{} +func (ml *mockLifecycle) PortRegistry() port.Port { + args := ml.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(port.Port) +} -func (ms *mockSlug) Set(slug string) { _ = slug } -func (ms *mockSlug) String() string { return "" } +func (ml *mockLifecycle) SetChannel(channel ssh.Channel) { ml.Called(channel) } +func (ml *mockLifecycle) SetStatus(status types.SessionStatus) { ml.Called(status) } +func (ml *mockLifecycle) IsActive() bool { return ml.Called().Bool(0) } +func (ml *mockLifecycle) StartedAt() time.Time { return ml.Called().Get(0).(time.Time) } +func (ml *mockLifecycle) Close() error { return ml.Called().Error(0) } +func (ml *mockLifecycle) User() string { return ml.Called().String(0) } + +type mockSlug struct { + mock.Mock +} + +func (ms *mockSlug) Set(slug string) { ms.Called(slug) } +func (ms *mockSlug) String() string { return ms.Called().String(0) } + +func createMockSession(user ...string) *mockSession { + u := "user1" + if len(user) > 0 { + u = user[0] + } + m := new(mockSession) + ml := new(mockLifecycle) + ml.On("User").Return(u).Maybe() + m.On("Lifecycle").Return(ml).Maybe() + ms := new(mockSlug) + ms.On("Set", mock.Anything).Maybe() + m.On("Slug").Return(ms).Maybe() + m.On("Interaction").Return(nil).Maybe() + m.On("Forwarder").Return(nil).Maybe() + m.On("Detail").Return(nil).Maybe() + return m +} func TestNewRegistry(t *testing.T) { r := NewRegistry() - if r == nil { - t.Fatal("NewRegistry returned nil") - } + require.NotNil(t, r) } func TestRegistry_Get(t *testing.T) { @@ -71,7 +135,7 @@ func TestRegistry_Get(t *testing.T) { setupFunc: func(r *registry) { user := "user1" key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} - session := &mockSession{user: user} + session := createMockSession(user) r.mu.Lock() defer r.mu.Unlock() @@ -113,13 +177,8 @@ func TestRegistry_Get(t *testing.T) { session, err := r.Get(tt.key) - if !errors.Is(err, tt.wantErr) { - t.Fatalf("expected error %v, got %v", tt.wantErr, err) - } - - if (session != nil) != tt.wantResult { - t.Fatalf("expected session existence to be %v, got %v", tt.wantResult, session != nil) - } + assert.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, tt.wantResult, session != nil) }) } } @@ -138,7 +197,7 @@ func TestRegistry_GetWithUser(t *testing.T) { setupFunc: func(r *registry) { user := "user1" key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} - session := &mockSession{user: user} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -183,13 +242,8 @@ func TestRegistry_GetWithUser(t *testing.T) { session, err := r.GetWithUser(tt.user, tt.key) - if !errors.Is(err, tt.wantErr) { - t.Fatalf("expected error %v, got %v", tt.wantErr, err) - } - - if (session != nil) != tt.wantResult { - t.Fatalf("expected session existence to be %v, got %v", tt.wantResult, session != nil) - } + assert.ErrorIs(t, err, tt.wantErr) + assert.Equal(t, tt.wantResult, session != nil) }) } } @@ -207,7 +261,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession("user1") r.mu.Lock() defer r.mu.Unlock() @@ -226,7 +280,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -247,7 +301,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "ping", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -266,7 +320,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test2-", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -285,7 +339,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test4", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -304,7 +358,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test4", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -323,7 +377,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} newKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeTCP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -342,7 +396,7 @@ func TestRegistry_Update(t *testing.T) { setupFunc: func(r *registry) (types.SessionKey, types.SessionKey) { oldKey := types.SessionKey{Id: "test2", Type: types.TunnelTypeTCP} newKey := oldKey - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() defer r.mu.Unlock() @@ -371,19 +425,15 @@ func TestRegistry_Update(t *testing.T) { oldKey, newKey := tt.setupFunc(r) err := r.Update(tt.user, oldKey, newKey) - if !errors.Is(err, tt.wantErr) { - t.Fatalf("expected error %v, got %v", tt.wantErr, err) - } + assert.ErrorIs(t, err, tt.wantErr) if err == nil { r.mu.RLock() defer r.mu.RUnlock() - if _, ok := r.byUser[tt.user][newKey]; !ok { - t.Errorf("newKey not found in registry") - } - if _, ok := r.byUser[tt.user][oldKey]; ok { - t.Errorf("oldKey still exists in registry") - } + _, ok := r.byUser[tt.user][newKey] + assert.True(t, ok, "newKey not found in registry") + _, ok = r.byUser[tt.user][oldKey] + assert.False(t, ok, "oldKey still exists in registry") } }) } @@ -410,7 +460,7 @@ func TestRegistry_Register(t *testing.T) { user: "user1", setupFunc: func(r *registry) Key { key := types.SessionKey{Id: "test1", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() r.byUser["user1"] = map[Key]Session{key: session} @@ -426,7 +476,7 @@ func TestRegistry_Register(t *testing.T) { user: "user1", setupFunc: func(r *registry) Key { firstKey := types.SessionKey{Id: "first", Type: types.TunnelTypeHTTP} - session := &mockSession{user: "user1"} + session := createMockSession() r.mu.Lock() r.byUser["user1"] = map[Key]Session{firstKey: session} r.slugIndex[firstKey] = "user1" @@ -450,22 +500,16 @@ func TestRegistry_Register(t *testing.T) { } key := tt.setupFunc(r) - session := &mockSession{user: tt.user} + session := createMockSession() ok := r.Register(key, session) - if ok != tt.wantOK { - t.Fatalf("expected success %v, got %v", tt.wantOK, ok) - } + assert.Equal(t, tt.wantOK, ok) if ok { r.mu.RLock() defer r.mu.RUnlock() - if r.byUser[tt.user][key] != session { - t.Errorf("session not stored in byUser") - } - if r.slugIndex[key] != tt.user { - t.Errorf("slugIndex not updated") - } + assert.Equal(t, session, r.byUser[tt.user][key], "session not stored in byUser") + assert.Equal(t, tt.user, r.slugIndex[key], "slugIndex not updated") } }) } @@ -492,8 +536,8 @@ func TestRegistry_GetAllSessionFromUser(t *testing.T) { key2 := types.SessionKey{Id: "b", Type: types.TunnelTypeTCP} r.mu.Lock() r.byUser[user] = map[Key]Session{ - key1: &mockSession{user: user}, - key2: &mockSession{user: user}, + key1: createMockSession(), + key2: createMockSession(), } r.mu.Unlock() return user @@ -511,9 +555,7 @@ func TestRegistry_GetAllSessionFromUser(t *testing.T) { } user := tt.setupFunc(r) sessions := r.GetAllSessionFromUser(user) - if len(sessions) != tt.expectN { - t.Errorf("expected %d sessions, got %d", tt.expectN, len(sessions)) - } + assert.Len(t, sessions, tt.expectN) }) } } @@ -530,7 +572,7 @@ func TestRegistry_Remove(t *testing.T) { setupFunc: func(r *registry) (string, types.SessionKey) { user := "user1" key := types.SessionKey{Id: "a", Type: types.TunnelTypeHTTP} - session := &mockSession{user: user} + session := createMockSession() r.mu.Lock() r.byUser[user] = map[Key]Session{key: session} r.slugIndex[key] = user @@ -538,15 +580,12 @@ func TestRegistry_Remove(t *testing.T) { return user, key }, verify: func(t *testing.T, r *registry, user string, key types.SessionKey) { - if _, ok := r.byUser[user][key]; ok { - t.Errorf("expected key to be removed from byUser") - } - if _, ok := r.slugIndex[key]; ok { - t.Errorf("expected key to be removed from slugIndex") - } - if _, ok := r.byUser[user]; ok { - t.Errorf("expected user to be removed from byUser map") - } + _, ok := r.byUser[user][key] + assert.False(t, ok, "expected key to be removed from byUser") + _, ok = r.slugIndex[key] + assert.False(t, ok, "expected key to be removed from slugIndex") + _, ok = r.byUser[user] + assert.False(t, ok, "expected user to be removed from byUser map") }, }, { diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index de1dd24..b30d9d5 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -144,19 +144,6 @@ func (m *MockLifecycle) Close() error { return args.Error(0) } -type MockSSHConn struct { - ssh.Conn - mock.Mock -} - -func (m *MockSSHConn) OpenChannel(name string, data []byte) (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called(name, data) - if args.Get(0) == nil { - return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) - } - return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) -} - type MockSSHChannel struct { ssh.Channel mock.Mock diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index 629fffd..b894536 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -73,11 +73,7 @@ func (f *forwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) ( case resultChan <- channelResult{channel, reqs, err}: case <-ctx.Done(): if channel != nil { - err = channel.Close() - if err != nil { - log.Printf("Failed to close unused channel: %v", err) - return - } + _ = channel.Close() go ssh.DiscardRequests(reqs) } } @@ -116,10 +112,7 @@ func (f *forwarder) copyAndClose(dst io.Writer, src io.Reader, direction string) func (f *forwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { defer func() { - _, err := io.Copy(io.Discard, src) - if err != nil { - log.Printf("Failed to discard connection: %v", err) - } + _, _ = io.Copy(io.Discard, src) }() var wg sync.WaitGroup diff --git a/session/lifecycle/lifecycle_test.go b/session/lifecycle/lifecycle_test.go index 73333e5..4f4335b 100644 --- a/session/lifecycle/lifecycle_test.go +++ b/session/lifecycle/lifecycle_test.go @@ -1,6 +1,7 @@ package lifecycle import ( + "context" "errors" "io" "net" @@ -65,10 +66,10 @@ func (m *MockForwarder) Listener() net.Listener { return args.Get(0).(net.Listener) } -func (m *MockForwarder) OpenForwardedChannel(payload []byte) (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called(payload) +func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(ctx, origin) if args.Get(0) == nil { - return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) + return nil, nil, args.Error(2) } return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) } @@ -208,7 +209,8 @@ func TestLifecycle_SetStatus(t *testing.T) { mockLifecycle := New(mockSSHConn, mockForwarder, mockSlug, mockPort, mockSessionRegistry, "mas-fuad") - assert.NotNil(t, mockLifecycle.StartedAt()) + mockLifecycle.SetStatus(types.SessionStatusRUNNING) + assert.True(t, mockLifecycle.IsActive()) } func TestLifecycle_IsActive(t *testing.T) { From 354da27424ff2de677ad385afa037d03d261d695 Mon Sep 17 00:00:00 2001 From: bagas Date: Mon, 26 Jan 2026 11:58:56 +0700 Subject: [PATCH 40/47] test(forwarder): add unit tests for forwarder behavior --- session/forwarder/forwarder_test.go | 1784 +++++++++++++++++++++++++++ 1 file changed, 1784 insertions(+) create mode 100644 session/forwarder/forwarder_test.go diff --git a/session/forwarder/forwarder_test.go b/session/forwarder/forwarder_test.go new file mode 100644 index 0000000..a06506e --- /dev/null +++ b/session/forwarder/forwarder_test.go @@ -0,0 +1,1784 @@ +package forwarder + +import ( + "bytes" + "context" + "errors" + "io" + "net" + "sync" + "sync/atomic" + "testing" + "time" + "tunnel_pls/session/slug" + "tunnel_pls/types" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/ssh" +) + +type mockConfig struct { + mock.Mock +} + +func (m *mockConfig) Domain() string { return m.Called().String(0) } +func (m *mockConfig) SSHPort() string { return m.Called().String(0) } +func (m *mockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *mockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *mockConfig) KeyLoc() string { return m.Called().String(0) } +func (m *mockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *mockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *mockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *mockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *mockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *mockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *mockConfig) AllowedPortsStart() uint16 { return m.Called().Get(0).(uint16) } +func (m *mockConfig) AllowedPortsEnd() uint16 { return m.Called().Get(0).(uint16) } +func (m *mockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *mockConfig) HeaderSize() int { return m.Called().Int(0) } +func (m *mockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *mockConfig) PprofPort() string { return m.Called().String(0) } +func (m *mockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *mockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *mockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *mockConfig) NodeToken() string { return m.Called().String(0) } + +type mockConn struct { + mock.Mock +} + +func (c *mockConn) Close() error { return c.Called().Error(0) } +func (c *mockConn) User() string { return c.Called().String(0) } +func (c *mockConn) SessionID() []byte { return c.Called().Get(0).([]byte) } +func (c *mockConn) ClientVersion() []byte { return c.Called().Get(0).([]byte) } +func (c *mockConn) ServerVersion() []byte { return c.Called().Get(0).([]byte) } +func (c *mockConn) RemoteAddr() net.Addr { return c.Called().Get(0).(net.Addr) } +func (c *mockConn) LocalAddr() net.Addr { return c.Called().Get(0).(net.Addr) } +func (c *mockConn) SendRequest(s string, b bool, d []byte) (bool, []byte, error) { + args := c.Called(s, b, d) + return args.Bool(0), args.Get(1).([]byte), args.Error(2) +} +func (c *mockConn) Wait() error { return c.Called().Error(0) } + +func (c *mockConn) OpenChannel(name string, data []byte) (ssh.Channel, <-chan *ssh.Request, error) { + args := c.Called(name, data) + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +type testChannel struct { + mock.Mock + readBuf *syncBuffer + writeBuf *syncBuffer + closedWrite atomic.Bool +} + +func (c *testChannel) Read(b []byte) (int, error) { + return c.readBuf.Read(b) +} + +func (c *testChannel) Write(b []byte) (int, error) { + return c.writeBuf.Write(b) +} + +func (c *testChannel) Close() error { + return c.Called().Error(0) +} + +func (c *testChannel) CloseWrite() error { + c.closedWrite.Store(true) + return c.writeBuf.Close() +} + +func (c *testChannel) Stderr() io.ReadWriter { + return c.Called().Get(0).(io.ReadWriter) +} + +func (c *testChannel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + args := c.Called(name, wantReply, payload) + return args.Bool(0), args.Error(1) +} + +func (c *testChannel) AckRequest(ok bool, payload []byte) error { + return c.Called(ok, payload).Error(0) +} + +type syncBuffer struct { + mu sync.Mutex + buf []byte + closed bool + cond *sync.Cond +} + +func newSyncBuffer() *syncBuffer { + sb := &syncBuffer{} + sb.cond = sync.NewCond(&sb.mu) + return sb +} + +func (sb *syncBuffer) Write(p []byte) (int, error) { + sb.mu.Lock() + defer sb.mu.Unlock() + if sb.closed { + return 0, io.ErrClosedPipe + } + sb.buf = append(sb.buf, p...) + sb.cond.Broadcast() + return len(p), nil +} + +func (sb *syncBuffer) Read(p []byte) (int, error) { + sb.mu.Lock() + defer sb.mu.Unlock() + + for len(sb.buf) == 0 { + if sb.closed { + return 0, io.EOF + } + sb.cond.Wait() + } + + n := copy(p, sb.buf) + sb.buf = sb.buf[n:] + return n, nil +} + +func (sb *syncBuffer) Close() error { + sb.mu.Lock() + defer sb.mu.Unlock() + sb.closed = true + sb.cond.Broadcast() + return nil +} + +func newChannelPair() (*testChannel, *testChannelPeer) { + peerToChBuf := newSyncBuffer() + chToPeerBuf := newSyncBuffer() + + channel := &testChannel{ + readBuf: peerToChBuf, + writeBuf: chToPeerBuf, + } + + peer := &testChannelPeer{ + readBuf: chToPeerBuf, + writeBuf: peerToChBuf, + } + + channel.On("Close").Return(nil).Maybe() + + return channel, peer +} + +type testChannelPeer struct { + readBuf *syncBuffer + writeBuf *syncBuffer +} + +func (p *testChannelPeer) Read(b []byte) (int, error) { + return p.readBuf.Read(b) +} + +func (p *testChannelPeer) Write(b []byte) (int, error) { + return p.writeBuf.Write(b) +} + +func (p *testChannelPeer) CloseWrite() error { + return p.writeBuf.Close() +} + +func newPipePair() (*pipeConn, *pipeConn) { + r1, w1 := io.Pipe() + r2, w2 := io.Pipe() + + conn1 := &pipeConn{ + reader: r1, + writer: w2, + } + + conn2 := &pipeConn{ + reader: r2, + writer: w1, + } + + return conn1, conn2 +} + +type pipeConn struct { + reader *io.PipeReader + writer *io.PipeWriter +} + +func (p *pipeConn) Read(b []byte) (int, error) { + return p.reader.Read(b) +} + +func (p *pipeConn) Write(b []byte) (int, error) { + return p.writer.Write(b) +} + +func (p *pipeConn) Close() error { + p.reader.Close() + p.writer.Close() + return nil +} + +func (p *pipeConn) CloseWrite() error { + return p.writer.Close() +} + +func (p *pipeConn) LocalAddr() net.Addr { + return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0} +} + +func (p *pipeConn) RemoteAddr() net.Addr { + return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0} +} + +func (p *pipeConn) SetDeadline(t time.Time) error { return nil } +func (p *pipeConn) SetReadDeadline(t time.Time) error { return nil } +func (p *pipeConn) SetWriteDeadline(t time.Time) error { return nil } + +func TestNew(t *testing.T) { + tests := []struct { + name string + bufferSize int + wantBufLen int + }{ + { + name: "default buffer size", + bufferSize: 16, + wantBufLen: 16, + }, + { + name: "custom buffer size", + bufferSize: 32, + wantBufLen: 32, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(tt.bufferSize).Maybe() + s := slug.New() + conn := &mockConn{} + + forwarder := New(cfg, s, conn).(*forwarder) + + buf := forwarder.bufferPool.Get().([]byte) + require.Len(t, buf, tt.wantBufLen) + forwarder.bufferPool.Put(buf) + + assert.Equal(t, types.TunnelTypeUNKNOWN, forwarder.TunnelType()) + assert.Equal(t, uint16(0), forwarder.ForwardedPort()) + assert.Equal(t, conn, forwarder.conn) + assert.Equal(t, s, forwarder.slug) + cfg.AssertExpectations(t) + }) + } +} + +func TestHandleConnection(t *testing.T) { + tests := []struct { + name string + bufferSize int + messageToDst []byte + messageToSrc []byte + }{ + { + name: "small messages", + bufferSize: 4, + messageToDst: []byte("hi"), + messageToSrc: []byte("yo"), + }, + { + name: "medium messages", + bufferSize: 8, + messageToDst: []byte("hello"), + messageToSrc: []byte("world"), + }, + { + name: "larger messages", + bufferSize: 16, + messageToDst: []byte("I love femboy"), + messageToSrc: []byte("mee too"), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(tt.bufferSize).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + channel, channelPeer := newChannelPair() + dstEndpoint, dstPeer := newPipePair() + + done := make(chan struct{}) + go func() { + forwarder.HandleConnection(dstEndpoint, channel) + close(done) + }() + + readDst := make(chan struct { + data []byte + err error + }, 1) + go func() { + buf := make([]byte, len(tt.messageToDst)) + n, err := io.ReadFull(dstPeer, buf) + readDst <- struct { + data []byte + err error + }{data: buf[:n], err: err} + }() + + _, err := channelPeer.Write(tt.messageToDst) + require.NoError(t, err) + + dstResult := <-readDst + require.NoError(t, dstResult.err) + assert.Equal(t, tt.messageToDst, dstResult.data) + + readSrc := make(chan struct { + data []byte + err error + }, 1) + go func() { + buf := make([]byte, len(tt.messageToSrc)) + n, err := io.ReadFull(channelPeer, buf) + readSrc <- struct { + data []byte + err error + }{data: buf[:n], err: err} + }() + + _, err = dstPeer.Write(tt.messageToSrc) + require.NoError(t, err) + + srcResult := <-readSrc + require.NoError(t, srcResult.err) + assert.Equal(t, tt.messageToSrc, srcResult.data) + + require.NoError(t, channelPeer.CloseWrite()) + require.NoError(t, dstPeer.CloseWrite()) + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("HandleConnection did not complete") + } + assert.True(t, channel.closedWrite.Load()) + cfg.AssertExpectations(t) + }) + } +} + +func TestHandleConnection_Error(t *testing.T) { + tests := []struct { + name string + bufferSize int + messageToDst []byte + messageToSrc []byte + }{ + { + name: "small messages", + bufferSize: 4, + messageToDst: []byte("hi"), + messageToSrc: []byte("yo"), + }, + { + name: "medium messages", + bufferSize: 8, + messageToDst: []byte("hello"), + messageToSrc: []byte("world"), + }, + { + name: "larger messages", + bufferSize: 16, + messageToDst: []byte("I love femboy"), + messageToSrc: []byte("mee too"), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(tt.bufferSize).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + channel, _ := newChannelPair() + dstEndpoint, _ := newPipePair() + + go func() { + forwarder.HandleConnection(dstEndpoint, channel) + }() + + err := dstEndpoint.Close() + assert.NoError(t, err) + cfg.AssertExpectations(t) + }) + } +} + +func TestOpenForwardedChannel(t *testing.T) { + tests := []struct { + name string + forwardedPort uint16 + originIP string + originPort int + wantDestAddr string + wantDestPort uint32 + wantOrigAddr string + wantOrigPort uint32 + }{ + { + name: "localhost origin", + forwardedPort: 2222, + originIP: "127.0.0.1", + originPort: 9000, + wantDestAddr: "localhost", + wantDestPort: 2222, + wantOrigAddr: "127.0.0.1", + wantOrigPort: 9000, + }, + { + name: "remote origin", + forwardedPort: 8080, + originIP: "192.168.1.100", + originPort: 5000, + wantDestAddr: "localhost", + wantDestPort: 8080, + wantOrigAddr: "192.168.1.100", + wantOrigPort: 5000, + }, + { + name: "different port", + forwardedPort: 3000, + originIP: "10.0.0.1", + originPort: 7777, + wantDestAddr: "localhost", + wantDestPort: 3000, + wantOrigAddr: "10.0.0.1", + wantOrigPort: 7777, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(8).Maybe() + channel := &testChannel{ + readBuf: newSyncBuffer(), + writeBuf: newSyncBuffer(), + } + requests := make(chan *ssh.Request) + + var capturedData []byte + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything).Run(func(args mock.Arguments) { + data := args.Get(1).([]byte) + capturedData = make([]byte, len(data)) + copy(capturedData, data) + }).Return(channel, (<-chan *ssh.Request)(requests), nil) + + forwarder := New(cfg, slug.New(), conn).(*forwarder) + forwarder.SetForwardedPort(tt.forwardedPort) + + origin := &net.TCPAddr{IP: net.ParseIP(tt.originIP), Port: tt.originPort} + ch, reqs, err := forwarder.OpenForwardedChannel(context.Background(), origin) + require.NoError(t, err) + assert.Same(t, channel, ch) + assert.NotNil(t, reqs) + + var payload struct { + DestAddr string + DestPort uint32 + OriginAddr string + OriginPort uint32 + } + ssh.Unmarshal(capturedData, &payload) + assert.Equal(t, tt.wantDestAddr, payload.DestAddr) + assert.Equal(t, tt.wantDestPort, payload.DestPort) + assert.Equal(t, tt.wantOrigAddr, payload.OriginAddr) + assert.Equal(t, tt.wantOrigPort, payload.OriginPort) + + conn.AssertExpectations(t) + cfg.AssertExpectations(t) + }) + } +} + +func TestOpenForwardedChannelContextCancellation(t *testing.T) { + tests := []struct { + name string + cancelBefore bool + cancelDuring bool + wantErr bool + wantErrType error + }{ + { + name: "cancel during open", + cancelBefore: false, + cancelDuring: true, + wantErr: true, + wantErrType: context.Canceled, + }, + { + name: "cancel before open", + cancelBefore: true, + cancelDuring: false, + wantErr: true, + wantErrType: context.Canceled, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(8).Maybe() + channel := &testChannel{ + readBuf: newSyncBuffer(), + writeBuf: newSyncBuffer(), + } + channel.On("Close").Return(nil) + requests := make(chan *ssh.Request) + + openChannelCalled := make(chan struct{}) + openChannelBlock := make(chan struct{}) + + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything).Run(func(args mock.Arguments) { + close(openChannelCalled) + <-openChannelBlock + }).Return(channel, (<-chan *ssh.Request)(requests), nil).Maybe() + + forwarder := New(cfg, slug.New(), conn).(*forwarder) + forwarder.SetForwardedPort(8080) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + if tt.cancelBefore { + cancel() + } + + var ( + openedChannel ssh.Channel + openedReqs <-chan *ssh.Request + openErr error + ) + + done := make(chan struct{}) + go func() { + origin := &net.TCPAddr{IP: net.ParseIP("10.0.0.1"), Port: 7000} + openedChannel, openedReqs, openErr = forwarder.OpenForwardedChannel(ctx, origin) + close(done) + }() + + if tt.cancelDuring { + <-openChannelCalled + cancel() + } + close(openChannelBlock) + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("OpenForwardedChannel did not return after cancellation") + } + + if tt.wantErr { + require.Error(t, openErr) + assert.True(t, errors.Is(openErr, tt.wantErrType)) + assert.Nil(t, openedChannel) + assert.Nil(t, openedReqs) + } else { + require.NoError(t, openErr) + assert.NotNil(t, openedChannel) + assert.NotNil(t, openedReqs) + } + + conn.AssertExpectations(t) + cfg.AssertExpectations(t) + }) + } +} + +func TestCreateForwardedTCPIPPayload(t *testing.T) { + tests := []struct { + name string + originIP string + originPort int + forwardedPort uint16 + wantDestAddr string + wantDestPort uint32 + wantOriginAddr string + wantOriginPort uint32 + }{ + { + name: "standard case", + originIP: "192.0.2.10", + originPort: 5050, + forwardedPort: 8080, + wantDestAddr: "localhost", + wantDestPort: 8080, + wantOriginAddr: "192.0.2.10", + wantOriginPort: 5050, + }, + { + name: "localhost origin", + originIP: "127.0.0.1", + originPort: 3000, + forwardedPort: 9000, + wantDestAddr: "localhost", + wantDestPort: 9000, + wantOriginAddr: "127.0.0.1", + wantOriginPort: 3000, + }, + { + name: "high port numbers", + originIP: "10.0.0.1", + originPort: 65535, + forwardedPort: 65534, + wantDestAddr: "localhost", + wantDestPort: 65534, + wantOriginAddr: "10.0.0.1", + wantOriginPort: 65535, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + origin := &net.TCPAddr{IP: net.ParseIP(tt.originIP), Port: tt.originPort} + payload := createForwardedTCPIPPayload(origin, tt.forwardedPort) + + var decoded struct { + DestAddr string + DestPort uint32 + OriginAddr string + OriginPort uint32 + } + + ssh.Unmarshal(payload, &decoded) + + assert.Equal(t, tt.wantDestAddr, decoded.DestAddr) + assert.Equal(t, tt.wantDestPort, decoded.DestPort) + assert.Equal(t, tt.wantOriginAddr, decoded.OriginAddr) + assert.Equal(t, tt.wantOriginPort, decoded.OriginPort) + }) + } +} + +type mockReader struct { + mock.Mock +} + +func (m *mockReader) Read(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +type mockWriter struct { + mock.Mock +} + +func (m *mockWriter) Write(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *mockWriter) CloseWrite() error { + return m.Called().Error(0) +} + +type mockWriteCloser struct { + mock.Mock +} + +func (m *mockWriteCloser) Write(p []byte) (int, error) { + args := m.Called(p) + return args.Int(0), args.Error(1) +} + +func (m *mockWriteCloser) Close() error { + return m.Called().Error(0) +} + +func TestCopyAndClose(t *testing.T) { + tests := []struct { + name string + setupSrc func() io.Reader + setupDst func() io.Writer + direction string + wantErr bool + wantErrMsg string + checkErrTypes []error + }{ + { + name: "successful copy with EOF", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(5, nil).Once() + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("Write", mock.Anything).Return(5, nil).Once() + w.On("CloseWrite").Return(nil).Once() + return w + }, + direction: "src->dst", + wantErr: false, + }, + { + name: "copy error - not EOF or ErrClosed", + setupSrc: func() io.Reader { + r := &mockReader{} + customErr := errors.New("custom read error") + r.On("Read", mock.Anything).Return(0, customErr).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("CloseWrite").Return(nil).Once() + return w + }, + direction: "src->dst", + wantErr: true, + wantErrMsg: "copy error (src->dst)", + }, + { + name: "copy error - ErrClosed should be ignored", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(0, net.ErrClosed).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("CloseWrite").Return(nil).Once() + return w + }, + direction: "src->dst", + wantErr: false, + }, + { + name: "close writer error - not EOF", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + closeErr := errors.New("close error") + w.On("CloseWrite").Return(closeErr).Once() + return w + }, + direction: "src->dst", + wantErr: true, + wantErrMsg: "close stream error (src->dst)", + }, + { + name: "close writer error - EOF should be ignored", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("CloseWrite").Return(io.EOF).Once() + return w + }, + direction: "src->dst", + wantErr: false, + }, + { + name: "both copy and close errors", + setupSrc: func() io.Reader { + r := &mockReader{} + copyErr := errors.New("copy error") + r.On("Read", mock.Anything).Return(0, copyErr).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + closeErr := errors.New("close error") + w.On("CloseWrite").Return(closeErr).Once() + return w + }, + direction: "src->dst", + wantErr: true, + wantErrMsg: "copy error (src->dst)", + }, + { + name: "successful copy with WriteCloser", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(5, nil).Once() + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriteCloser{} + w.On("Write", mock.Anything).Return(5, nil).Once() + w.On("Close").Return(nil).Once() + return w + }, + direction: "dst->src", + wantErr: false, + }, + { + name: "WriteCloser close error", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriteCloser{} + closeErr := errors.New("writeCloser close error") + w.On("Close").Return(closeErr).Once() + return w + }, + direction: "dst->src", + wantErr: true, + wantErrMsg: "close stream error (dst->src)", + }, + { + name: "copy with multiple reads before EOF", + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(10, nil).Once() + r.On("Read", mock.Anything).Return(15, nil).Once() + r.On("Read", mock.Anything).Return(5, nil).Once() + r.On("Read", mock.Anything).Return(0, io.EOF).Once() + return r + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("Write", mock.Anything).Return(10, nil).Once() + w.On("Write", mock.Anything).Return(15, nil).Once() + w.On("Write", mock.Anything).Return(5, nil).Once() + w.On("CloseWrite").Return(nil).Once() + return w + }, + direction: "src->dst", + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(32).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + src := tt.setupSrc() + dst := tt.setupDst() + + err := forwarder.copyAndClose(dst, src, tt.direction) + + if tt.wantErr { + require.Error(t, err) + assert.Contains(t, err.Error(), tt.wantErrMsg) + } else { + assert.NoError(t, err) + } + + if mr, ok := src.(*mockReader); ok { + mr.AssertExpectations(t) + } + if mw, ok := dst.(*mockWriter); ok { + mw.AssertExpectations(t) + } + if mwc, ok := dst.(*mockWriteCloser); ok { + mwc.AssertExpectations(t) + } + cfg.AssertExpectations(t) + }) + } +} + +func TestCopyAndCloseJoinedErrors(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(32).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + src := &mockReader{} + copyErr := errors.New("copy failed") + src.On("Read", mock.Anything).Return(0, copyErr).Once() + + dst := &mockWriter{} + closeErr := errors.New("close failed") + dst.On("CloseWrite").Return(closeErr).Once() + + err := forwarder.copyAndClose(dst, src, "test") + + require.Error(t, err) + + assert.Contains(t, err.Error(), "copy error (test)") + assert.Contains(t, err.Error(), "close stream error (test)") + assert.Contains(t, err.Error(), "copy failed") + assert.Contains(t, err.Error(), "close failed") + + src.AssertExpectations(t) + dst.AssertExpectations(t) + cfg.AssertExpectations(t) +} + +func TestCopyWithBuffer(t *testing.T) { + tests := []struct { + name string + bufferSize int + setupSrc func() io.Reader + setupDst func() io.Writer + wantBytesCount int64 + wantErr bool + wantErrType error + }{ + { + name: "successful copy small data", + bufferSize: 16, + setupSrc: func() io.Reader { + return io.NopCloser(bytes.NewReader([]byte("hello world"))) + }, + setupDst: func() io.Writer { + return &bytes.Buffer{} + }, + wantBytesCount: 11, + wantErr: false, + }, + { + name: "successful copy large data", + bufferSize: 8, + setupSrc: func() io.Reader { + data := make([]byte, 1024) + for i := range data { + data[i] = byte(i % 256) + } + return io.NopCloser(bytes.NewReader(data)) + }, + setupDst: func() io.Writer { + return &bytes.Buffer{} + }, + wantBytesCount: 1024, + wantErr: false, + }, + { + name: "empty data", + bufferSize: 16, + setupSrc: func() io.Reader { + return io.NopCloser(bytes.NewReader([]byte{})) + }, + setupDst: func() io.Writer { + return &bytes.Buffer{} + }, + wantBytesCount: 0, + wantErr: false, + }, + { + name: "read error", + bufferSize: 16, + setupSrc: func() io.Reader { + r := &mockReader{} + r.On("Read", mock.Anything).Return(0, errors.New("read error")).Once() + return r + }, + setupDst: func() io.Writer { + return &bytes.Buffer{} + }, + wantBytesCount: 0, + wantErr: true, + }, + { + name: "write error", + bufferSize: 16, + setupSrc: func() io.Reader { + return io.NopCloser(bytes.NewReader([]byte("test data"))) + }, + setupDst: func() io.Writer { + w := &mockWriter{} + w.On("Write", mock.Anything).Return(0, errors.New("write error")).Once() + return w + }, + wantBytesCount: 0, + wantErr: true, + }, + { + name: "partial write continues", + bufferSize: 16, + setupSrc: func() io.Reader { + return io.NopCloser(bytes.NewReader([]byte("testing"))) + }, + setupDst: func() io.Writer { + buf := &bytes.Buffer{} + return buf + }, + wantBytesCount: 7, + wantErr: false, + }, + { + name: "multiple buffer fills", + bufferSize: 4, + setupSrc: func() io.Reader { + return io.NopCloser(bytes.NewReader([]byte("this is a longer message"))) + }, + setupDst: func() io.Writer { + return &bytes.Buffer{} + }, + wantBytesCount: 24, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(tt.bufferSize).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + src := tt.setupSrc() + dst := tt.setupDst() + + n, err := forwarder.copyWithBuffer(dst, src) + + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + assert.Equal(t, tt.wantBytesCount, n) + } + + if buf, ok := dst.(*bytes.Buffer); ok && !tt.wantErr { + if _, ok := src.(io.Reader); ok { + assert.Equal(t, tt.wantBytesCount, int64(buf.Len())) + } + } + + if mr, ok := src.(*mockReader); ok { + mr.AssertExpectations(t) + } + if mw, ok := dst.(*mockWriter); ok { + mw.AssertExpectations(t) + } + cfg.AssertExpectations(t) + }) + } +} + +func TestCopyWithBufferReusesBuffer(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + buf1 := forwarder.bufferPool.Get().([]byte) + initialPtr := &buf1[0] + forwarder.bufferPool.Put(buf1) + + src := io.NopCloser(bytes.NewReader([]byte("test"))) + dst := &bytes.Buffer{} + _, err := forwarder.copyWithBuffer(dst, src) + require.NoError(t, err) + + buf2 := forwarder.bufferPool.Get().([]byte) + secondPtr := &buf2[0] + forwarder.bufferPool.Put(buf2) + + assert.Equal(t, len(buf1), len(buf2)) + + assert.Len(t, buf2, 16) + + _ = initialPtr + _ = secondPtr + cfg.AssertExpectations(t) +} + +func TestSetType(t *testing.T) { + tests := []struct { + name string + tunnelType types.TunnelType + }{ + { + name: "set to HTTP", + tunnelType: types.TunnelTypeHTTP, + }, + { + name: "set to TCP", + tunnelType: types.TunnelTypeTCP, + }, + { + name: "set to UNKNOWN", + tunnelType: types.TunnelTypeUNKNOWN, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + assert.Equal(t, types.TunnelTypeUNKNOWN, forwarder.TunnelType()) + + forwarder.SetType(tt.tunnelType) + + assert.Equal(t, tt.tunnelType, forwarder.TunnelType()) + cfg.AssertExpectations(t) + }) + } +} + +func TestTunnelType(t *testing.T) { + tests := []struct { + name string + tunnelType types.TunnelType + }{ + { + name: "get HTTP type", + tunnelType: types.TunnelTypeHTTP, + }, + { + name: "get TCP type", + tunnelType: types.TunnelTypeTCP, + }, + { + name: "get UNKNOWN type", + tunnelType: types.TunnelTypeUNKNOWN, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + forwarder.SetType(tt.tunnelType) + result := forwarder.TunnelType() + + assert.Equal(t, tt.tunnelType, result) + cfg.AssertExpectations(t) + }) + } +} + +func TestSetForwardedPort(t *testing.T) { + tests := []struct { + name string + port uint16 + }{ + { + name: "set standard port", + port: 8080, + }, + { + name: "set low port", + port: 80, + }, + { + name: "set high port", + port: 65535, + }, + { + name: "set zero port", + port: 0, + }, + { + name: "set custom port", + port: 3000, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + assert.Equal(t, uint16(0), forwarder.ForwardedPort()) + + forwarder.SetForwardedPort(tt.port) + + assert.Equal(t, tt.port, forwarder.ForwardedPort()) + cfg.AssertExpectations(t) + }) + } +} + +func TestForwardedPort(t *testing.T) { + tests := []struct { + name string + port uint16 + }{ + { + name: "get default port", + port: 0, + }, + { + name: "get standard port", + port: 8080, + }, + { + name: "get high port", + port: 65535, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + if tt.port != 0 { + forwarder.SetForwardedPort(tt.port) + } + + result := forwarder.ForwardedPort() + assert.Equal(t, tt.port, result) + cfg.AssertExpectations(t) + }) + } +} + +func TestSetListener(t *testing.T) { + tests := []struct { + name string + setupListener func() net.Listener + }{ + { + name: "set TCP listener", + setupListener: func() net.Listener { + listener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + return listener + }, + }, + { + name: "set nil listener", + setupListener: func() net.Listener { + return nil + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + listener := tt.setupListener() + if listener != nil { + defer listener.Close() + } + + assert.Nil(t, forwarder.Listener()) + + forwarder.SetListener(listener) + + assert.Equal(t, listener, forwarder.Listener()) + cfg.AssertExpectations(t) + }) + } +} + +func TestListener(t *testing.T) { + tests := []struct { + name string + setupListener func() net.Listener + }{ + { + name: "get nil listener", + setupListener: func() net.Listener { + return nil + }, + }, + { + name: "get TCP listener", + setupListener: func() net.Listener { + listener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + return listener + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + listener := tt.setupListener() + if listener != nil { + defer listener.Close() + forwarder.SetListener(listener) + } + + result := forwarder.Listener() + assert.Equal(t, listener, result) + cfg.AssertExpectations(t) + }) + } +} + +func TestClose(t *testing.T) { + tests := []struct { + name string + setupListener func() net.Listener + wantErr bool + }{ + { + name: "close with nil listener", + setupListener: func() net.Listener { + return nil + }, + wantErr: false, + }, + { + name: "close with active listener", + setupListener: func() net.Listener { + listener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + return listener + }, + wantErr: false, + }, + { + name: "close already closed listener", + setupListener: func() net.Listener { + listener, err := net.Listen("tcp", "127.0.0.1:0") + require.NoError(t, err) + listener.Close() + return listener + }, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + listener := tt.setupListener() + if listener != nil { + forwarder.SetListener(listener) + } + + err := forwarder.Close() + + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + cfg.AssertExpectations(t) + }) + } +} + +func TestCloseWriter(t *testing.T) { + tests := []struct { + name string + setup func() io.Writer + wantErr bool + }{ + { + name: "close writer with CloseWrite method", + setup: func() io.Writer { + w := &mockWriter{} + w.On("CloseWrite").Return(nil).Once() + return w + }, + wantErr: false, + }, + { + name: "close writer with CloseWrite error", + setup: func() io.Writer { + w := &mockWriter{} + w.On("CloseWrite").Return(errors.New("close write error")).Once() + return w + }, + wantErr: true, + }, + { + name: "close WriteCloser", + setup: func() io.Writer { + w := &mockWriteCloser{} + w.On("Close").Return(nil).Once() + return w + }, + wantErr: false, + }, + { + name: "close WriteCloser with error", + setup: func() io.Writer { + w := &mockWriteCloser{} + w.On("Close").Return(errors.New("close error")).Once() + return w + }, + wantErr: true, + }, + { + name: "close plain writer (no close method)", + setup: func() io.Writer { + return &bytes.Buffer{} + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + writer := tt.setup() + + err := closeWriter(writer) + + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + + if mw, ok := writer.(*mockWriter); ok { + mw.AssertExpectations(t) + } + if mwc, ok := writer.(*mockWriteCloser); ok { + mwc.AssertExpectations(t) + } + }) + } +} + +func TestHandleConnectionWithErrors(t *testing.T) { + tests := []struct { + name string + bufferSize int + setupChannel func() (*testChannel, *testChannelPeer) + setupDst func() (net.Conn, *pipeConn) + simulateErr func(channel *testChannelPeer, dst *pipeConn) + }{ + { + name: "handle read error from channel", + bufferSize: 16, + setupChannel: func() (*testChannel, *testChannelPeer) { + return newChannelPair() + }, + setupDst: func() (net.Conn, *pipeConn) { + return newPipePair() + }, + simulateErr: func(channel *testChannelPeer, dst *pipeConn) { + channel.CloseWrite() + dst.CloseWrite() + }, + }, + { + name: "handle write error to destination", + bufferSize: 16, + setupChannel: func() (*testChannel, *testChannelPeer) { + return newChannelPair() + }, + setupDst: func() (net.Conn, *pipeConn) { + return newPipePair() + }, + simulateErr: func(channel *testChannelPeer, dst *pipeConn) { + dst.Close() + time.Sleep(10 * time.Millisecond) + channel.Write([]byte("test")) + channel.CloseWrite() + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(tt.bufferSize).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + channel, channelPeer := tt.setupChannel() + dstEndpoint, dstPeer := tt.setupDst() + + done := make(chan struct{}) + go func() { + forwarder.HandleConnection(dstEndpoint, channel) + close(done) + }() + + tt.simulateErr(channelPeer, dstPeer) + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("HandleConnection did not complete") + } + + cfg.AssertExpectations(t) + }) + } +} + +func TestHandleConnectionDiscardOnExit(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(16).Maybe() + forwarder := New(cfg, slug.New(), nil).(*forwarder) + + channel, channelPeer := newChannelPair() + dstEndpoint, dstPeer := newPipePair() + + done := make(chan struct{}) + go func() { + forwarder.HandleConnection(dstEndpoint, channel) + close(done) + }() + + _, err := channelPeer.Write([]byte("test data")) + require.NoError(t, err) + require.NoError(t, channelPeer.CloseWrite()) + require.NoError(t, dstPeer.Close()) + + select { + case <-done: + case <-time.After(10 * time.Second): + t.Fatal("HandleConnection did not complete") + } + + cfg.AssertExpectations(t) +} + +func TestOpenForwardedChannelSuccess(t *testing.T) { + tests := []struct { + name string + forwardedPort uint16 + originAddr string + originPort int + }{ + { + name: "open channel standard port", + forwardedPort: 8080, + originAddr: "127.0.0.1", + originPort: 9000, + }, + { + name: "open channel high port", + forwardedPort: 65534, + originAddr: "192.168.1.100", + originPort: 5000, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(8).Maybe() + channel := &testChannel{ + readBuf: newSyncBuffer(), + writeBuf: newSyncBuffer(), + } + requests := make(chan *ssh.Request) + + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything). + Return(channel, (<-chan *ssh.Request)(requests), nil) + + forwarder := New(cfg, slug.New(), conn).(*forwarder) + forwarder.SetForwardedPort(tt.forwardedPort) + + origin := &net.TCPAddr{IP: net.ParseIP(tt.originAddr), Port: tt.originPort} + ch, reqs, err := forwarder.OpenForwardedChannel(context.Background(), origin) + + require.NoError(t, err) + assert.NotNil(t, ch) + assert.NotNil(t, reqs) + + conn.AssertExpectations(t) + cfg.AssertExpectations(t) + }) + } +} + +func TestOpenForwardedChannelError(t *testing.T) { + tests := []struct { + name string + setupConn func() *mockConn + wantErr bool + wantErrMsg string + }{ + { + name: "open channel returns error", + setupConn: func() *mockConn { + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything). + Return((*testChannel)(nil), (<-chan *ssh.Request)(nil), errors.New("channel open failed")) + return conn + }, + wantErr: true, + wantErrMsg: "channel open failed", + }, + { + name: "open channel with nil channel", + setupConn: func() *mockConn { + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything). + Return((*testChannel)(nil), (<-chan *ssh.Request)(nil), nil) + return conn + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(8).Maybe() + + conn := tt.setupConn() + forwarder := New(cfg, slug.New(), conn).(*forwarder) + forwarder.SetForwardedPort(8080) + + origin := &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 9000} + _, _, err := forwarder.OpenForwardedChannel(context.Background(), origin) + + if tt.wantErr { + require.Error(t, err) + assert.Contains(t, err.Error(), tt.wantErrMsg) + } else { + assert.NoError(t, err) + } + + conn.AssertExpectations(t) + cfg.AssertExpectations(t) + }) + } +} + +func TestOpenForwardedChannelContextCancelledDuringOpen(t *testing.T) { + cfg := &mockConfig{} + cfg.On("BufferSize").Return(8).Maybe() + + channel := &testChannel{ + readBuf: newSyncBuffer(), + writeBuf: newSyncBuffer(), + } + channel.On("Close").Return(nil).Maybe() + + requests := make(chan *ssh.Request) + + openChannelStarted := make(chan struct{}) + openChannelBlock := make(chan struct{}) + + conn := &mockConn{} + conn.On("OpenChannel", "forwarded-tcpip", mock.Anything).Run(func(args mock.Arguments) { + close(openChannelStarted) + <-openChannelBlock + }).Return(channel, (<-chan *ssh.Request)(requests), nil) + + forwarder := New(cfg, slug.New(), conn).(*forwarder) + forwarder.SetForwardedPort(8080) + + ctx, cancel := context.WithCancel(context.Background()) + + resultChan := make(chan error, 1) + go func() { + origin := &net.TCPAddr{IP: net.ParseIP("10.0.0.1"), Port: 7000} + _, _, err := forwarder.OpenForwardedChannel(ctx, origin) + resultChan <- err + }() + + <-openChannelStarted + + cancel() + + close(openChannelBlock) + + select { + case err := <-resultChan: + require.Error(t, err) + assert.Contains(t, err.Error(), "context cancelled") + case <-time.After(2 * time.Second): + t.Fatal("OpenForwardedChannel did not return") + } + + time.Sleep(50 * time.Millisecond) + + conn.AssertExpectations(t) + cfg.AssertExpectations(t) + channel.AssertExpectations(t) +} + +func TestCreateForwardedTCPIPPayloadEdgeCases(t *testing.T) { + tests := []struct { + name string + originAddr string + destPort uint16 + wantDestAddr string + wantDestPort uint32 + }{ + { + name: "IPv4 localhost", + originAddr: "127.0.0.1:5000", + destPort: 8080, + wantDestAddr: "localhost", + wantDestPort: 8080, + }, + { + name: "IPv6 address", + originAddr: "[::1]:3000", + destPort: 9000, + wantDestAddr: "localhost", + wantDestPort: 9000, + }, + { + name: "private network", + originAddr: "192.168.1.1:12345", + destPort: 443, + wantDestAddr: "localhost", + wantDestPort: 443, + }, + { + name: "port 1", + originAddr: "10.0.0.1:1", + destPort: 1, + wantDestAddr: "localhost", + wantDestPort: 1, + }, + { + name: "max port", + originAddr: "172.16.0.1:65535", + destPort: 65535, + wantDestAddr: "localhost", + wantDestPort: 65535, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + addr, err := net.ResolveTCPAddr("tcp", tt.originAddr) + require.NoError(t, err) + + payload := createForwardedTCPIPPayload(addr, tt.destPort) + + var decoded struct { + DestAddr string + DestPort uint32 + OriginAddr string + OriginPort uint32 + } + + err = ssh.Unmarshal(payload, &decoded) + require.NoError(t, err) + + assert.Equal(t, tt.wantDestAddr, decoded.DestAddr) + assert.Equal(t, tt.wantDestPort, decoded.DestPort) + }) + } +} From 6def82a095362d2702d05e16d5a8096351f32f72 Mon Sep 17 00:00:00 2001 From: bagas Date: Mon, 26 Jan 2026 18:13:03 +0700 Subject: [PATCH 41/47] ci: add project source and test path for sonarqube --- .gitea/workflows/sonarqube.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index d0c6ae4..57625a2 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -65,4 +65,6 @@ jobs: -Dsonar.test.exclusions=**/vendor/** -Dsonar.exclusions=**/*_test.go,**/vendor/**,**/golangci-lint-report.xml -Dsonar.go.govet.reportPaths=vet-results.txt - -Dsonar.go.golangci-lint.reportPaths=golangci-lint-report.xml \ No newline at end of file + -Dsonar.go.golangci-lint.reportPaths=golangci-lint-report.xml + -Dsonar.sources=./ + -Dsonar.tests=./ \ No newline at end of file From a3f6baa6aea8d54e77a40b27d183ec6bc3f43b45 Mon Sep 17 00:00:00 2001 From: bagas Date: Mon, 26 Jan 2026 18:55:59 +0700 Subject: [PATCH 42/47] test: check and handle error for testing --- internal/bootstrap/bootstrap_test.go | 438 ++++++++---------- internal/config/config_test.go | 28 +- internal/grpc/client/client_test.go | 4 +- internal/middleware/forwardedfor_test.go | 5 +- internal/middleware/tunnelfingerprint_test.go | 3 +- internal/port/port_test.go | 3 +- internal/registry/registry_test.go | 7 +- internal/transport/http_test.go | 14 +- internal/transport/httphandler_test.go | 53 +-- internal/transport/https_test.go | 12 +- internal/transport/tcp_test.go | 23 +- internal/transport/tls_test.go | 185 +++++--- server/server_test.go | 64 ++- session/forwarder/forwarder_test.go | 50 +- session/lifecycle/lifecycle_test.go | 21 +- session/session_test.go | 106 ++--- session/slug/slug_test.go | 5 - 17 files changed, 505 insertions(+), 516 deletions(-) diff --git a/internal/bootstrap/bootstrap_test.go b/internal/bootstrap/bootstrap_test.go index f5b5c0c..2453cde 100644 --- a/internal/bootstrap/bootstrap_test.go +++ b/internal/bootstrap/bootstrap_test.go @@ -2,13 +2,7 @@ package bootstrap import ( "context" - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "crypto/x509/pkix" - "encoding/pem" "fmt" - "math/big" "net" "net/http" _ "net/http/pprof" @@ -20,15 +14,11 @@ import ( "tunnel_pls/internal/config" "tunnel_pls/internal/port" "tunnel_pls/internal/registry" - "tunnel_pls/session/forwarder" - "tunnel_pls/session/interaction" - "tunnel_pls/session/lifecycle" "tunnel_pls/session/slug" "tunnel_pls/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" "google.golang.org/grpc" ) @@ -76,35 +66,6 @@ func (m *MockSessionRegistry) Slug() slug.Slug { return args.Get(0).(slug.Slug) } -type MockSession struct { - mock.Mock -} - -func (m *MockSession) Lifecycle() lifecycle.Lifecycle { - args := m.Called() - return args.Get(0).(lifecycle.Lifecycle) -} - -func (m *MockSession) Interaction() interaction.Interaction { - args := m.Called() - return args.Get(0).(interaction.Interaction) -} - -func (m *MockSession) Forwarder() forwarder.Forwarder { - args := m.Called() - return args.Get(0).(forwarder.Forwarder) -} - -func (m *MockSession) Slug() slug.Slug { - args := m.Called() - return args.Get(0).(slug.Slug) -} - -func (m *MockSession) Detail() *types.Detail { - args := m.Called() - return args.Get(0).(*types.Detail) -} - type MockRandom struct { mock.Mock } @@ -162,24 +123,24 @@ func (m *MockPort) AddRange(startPort, endPort uint16) error { } func (m *MockPort) Unassigned() (uint16, bool) { args := m.Called() - var port uint16 + var mPort uint16 if args.Get(0) != nil { switch v := args.Get(0).(type) { case int: - port = uint16(v) + mPort = uint16(v) case uint16: - port = v + mPort = v case uint32: - port = uint16(v) + mPort = uint16(v) case int32: - port = uint16(v) + mPort = uint16(v) case float64: - port = uint16(v) + mPort = uint16(v) default: - port = uint16(args.Int(0)) + mPort = uint16(args.Int(0)) } } - return port, args.Bool(1) + return mPort, args.Bool(1) } func (m *MockPort) SetStatus(port uint16, assigned bool) error { return m.Called(port, assigned).Error(0) @@ -281,49 +242,17 @@ func TestNew(t *testing.T) { } } -func generateTestCert(t *testing.T) (certPEM, keyPEM []byte) { - privateKey, err := rsa.GenerateKey(rand.Reader, 2048) - require.NoError(t, err) - - template := x509.Certificate{ - SerialNumber: big.NewInt(1), - Subject: pkix.Name{ - Organization: []string{"Test Co"}, - }, - NotBefore: time.Now(), - NotAfter: time.Now().Add(time.Hour), - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, - BasicConstraintsValid: true, - DNSNames: []string{"localhost"}, - IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, - } - - certDER, err := x509.CreateCertificate(rand.Reader, &template, &template, &privateKey.PublicKey, privateKey) - require.NoError(t, err) - - certPEM = pem.EncodeToMemory(&pem.Block{ - Type: "CERTIFICATE", - Bytes: certDER, - }) - - keyPEM = pem.EncodeToMemory(&pem.Block{ - Type: "RSA PRIVATE KEY", - Bytes: x509.MarshalPKCS1PrivateKey(privateKey), - }) - - return certPEM, keyPEM -} - func randomAvailablePort() (string, error) { listener, err := net.Listen("tcp", "localhost:0") if err != nil { return "", err } - defer listener.Close() + defer func(listener net.Listener) { + _ = listener.Close() + }(listener) - port := listener.Addr().(*net.TCPAddr).Port - return strconv.Itoa(port), nil + mPort := listener.Addr().(*net.TCPAddr).Port + return strconv.Itoa(mPort), nil } func TestRun(t *testing.T) { @@ -346,81 +275,81 @@ func TestRun(t *testing.T) { { name: "successful run and termination", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeSTANDALONE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, expectError: false, }, { name: "error from SSH server invalid port", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeSTANDALONE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("invalid") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("invalid") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, expectError: true, }, { name: "error from HTTP server invalid port", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeSTANDALONE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("invalid") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("invalid") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, expectError: true, }, @@ -428,55 +357,55 @@ func TestRun(t *testing.T) { name: "error from HTTPS server invalid port", setupConfig: func() *MockConfig { tempDir := os.TempDir() - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeSTANDALONE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("invalid") - mock.On("TLSEnabled").Return(true) - mock.On("TLSRedirect").Return(false) - mock.On("TLSStoragePath").Return(tempDir) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("invalid") + mockConfig.On("TLSEnabled").Return(true) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("TLSStoragePath").Return(tempDir) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, expectError: true, }, { name: "grpc health check failed", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeNODE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("invalid") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("invalid") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, setupGrpcClient: func() *MockGRPCClient { mockGRPCClient := &MockGRPCClient{} @@ -488,54 +417,54 @@ func TestRun(t *testing.T) { { name: "successful run with pprof enabled", setupConfig: func() *MockConfig { - mock := &MockConfig{} + mockConfig := &MockConfig{} pprofPort, _ := randomAvailablePort() - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeSTANDALONE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(true) - mock.On("PprofPort").Return(pprofPort) - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeSTANDALONE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(true) + mockConfig.On("PprofPort").Return(pprofPort) + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, expectError: false, }, { name: "successful run in NODE mode with signal", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeNODE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, setupGrpcClient: func() *MockGRPCClient { mockGRPCClient := &MockGRPCClient{} @@ -548,27 +477,27 @@ func TestRun(t *testing.T) { }, { name: "successful run in NODE mode with signal buf error when closing", setupConfig: func() *MockConfig { - mock := &MockConfig{} - mock.On("KeyLoc").Return(keyLoc) - mock.On("Mode").Return(types.ServerModeNODE) - mock.On("Domain").Return("example.com") - mock.On("SSHPort").Return("0") - mock.On("HTTPPort").Return("0") - mock.On("HTTPSPort").Return("0") - mock.On("TLSEnabled").Return(false) - mock.On("TLSRedirect").Return(false) - mock.On("ACMEEmail").Return("test@example.com") - mock.On("CFAPIToken").Return("fake-token") - mock.On("ACMEStaging").Return(true) - mock.On("AllowedPortsStart").Return(uint16(1024)) - mock.On("AllowedPortsEnd").Return(uint16(65535)) - mock.On("BufferSize").Return(4096) - mock.On("PprofEnabled").Return(false) - mock.On("PprofPort").Return("0") - mock.On("GRPCAddress").Return("localhost") - mock.On("GRPCPort").Return("0") - mock.On("NodeToken").Return("fake-node-token") - return mock + mockConfig := &MockConfig{} + mockConfig.On("KeyLoc").Return(keyLoc) + mockConfig.On("Mode").Return(types.ServerModeNODE) + mockConfig.On("Domain").Return("example.com") + mockConfig.On("SSHPort").Return("0") + mockConfig.On("HTTPPort").Return("0") + mockConfig.On("HTTPSPort").Return("0") + mockConfig.On("TLSEnabled").Return(false) + mockConfig.On("TLSRedirect").Return(false) + mockConfig.On("ACMEEmail").Return("test@example.com") + mockConfig.On("CFAPIToken").Return("fake-token") + mockConfig.On("ACMEStaging").Return(true) + mockConfig.On("AllowedPortsStart").Return(uint16(1024)) + mockConfig.On("AllowedPortsEnd").Return(uint16(65535)) + mockConfig.On("BufferSize").Return(4096) + mockConfig.On("PprofEnabled").Return(false) + mockConfig.On("PprofPort").Return("0") + mockConfig.On("GRPCAddress").Return("localhost") + mockConfig.On("GRPCPort").Return("0") + mockConfig.On("NodeToken").Return("fake-node-token") + return mockConfig }, setupGrpcClient: func() *MockGRPCClient { mockGRPCClient := &MockGRPCClient{} @@ -613,7 +542,8 @@ func TestRun(t *testing.T) { resp, err := http.Get(fmt.Sprintf("http://localhost:%s/debug/pprof/", mockConfig.PprofPort())) assert.NoError(t, err) assert.Equal(t, 200, resp.StatusCode) - resp.Body.Close() + err = resp.Body.Close() + assert.NoError(t, err) mockSignalChan <- os.Interrupt err = <-done assert.NoError(t, err) diff --git a/internal/config/config_test.go b/internal/config/config_test.go index b102094..85f93f3 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -37,7 +37,8 @@ func TestGetenv(t *testing.T) { if tt.val != "" { t.Setenv(tt.key, tt.val) } else { - os.Unsetenv(tt.key) + err := os.Unsetenv(tt.key) + assert.NoError(t, err) } assert.Equal(t, tt.expected, getenv(tt.key, tt.def)) }) @@ -87,7 +88,8 @@ func TestGetenvBool(t *testing.T) { if tt.val != "" { t.Setenv(tt.key, tt.val) } else { - os.Unsetenv(tt.key) + err := os.Unsetenv(tt.key) + assert.NoError(t, err) } assert.Equal(t, tt.expected, getenvBool(tt.key, tt.def)) }) @@ -113,7 +115,8 @@ func TestParseMode(t *testing.T) { if tt.mode != "" { t.Setenv("MODE", tt.mode) } else { - os.Unsetenv("MODE") + err := os.Unsetenv("MODE") + assert.NoError(t, err) } mode, err := parseMode() if tt.expectErr { @@ -148,7 +151,8 @@ func TestParseAllowedPorts(t *testing.T) { if tt.val != "" { t.Setenv("ALLOWED_PORTS", tt.val) } else { - os.Unsetenv("ALLOWED_PORTS") + err := os.Unsetenv("ALLOWED_PORTS") + assert.NoError(t, err) } start, end, err := parseAllowedPorts() if tt.expectErr { @@ -180,7 +184,8 @@ func TestParseBufferSize(t *testing.T) { if tt.val != "" { t.Setenv("BUFFER_SIZE", tt.val) } else { - os.Unsetenv("BUFFER_SIZE") + err := os.Unsetenv("BUFFER_SIZE") + assert.NoError(t, err) } size := parseBufferSize() assert.Equal(t, tt.expect, size) @@ -206,7 +211,8 @@ func TestParseHeaderSize(t *testing.T) { if tt.val != "" { t.Setenv("MAX_HEADER_SIZE", tt.val) } else { - os.Unsetenv("MAX_HEADER_SIZE") + err := os.Unsetenv("MAX_HEADER_SIZE") + assert.NoError(t, err) } size := parseHeaderSize() assert.Equal(t, tt.expect, size) @@ -358,7 +364,10 @@ func TestMustLoad(t *testing.T) { t.Run("loadEnvFile error", func(t *testing.T) { err := os.Mkdir(".env", 0755) assert.NoError(t, err) - defer os.Remove(".env") + defer func() { + err = os.Remove(".env") + assert.NoError(t, err) + }() cfg, err := MustLoad() assert.Error(t, err) @@ -378,7 +387,10 @@ func TestLoadEnvFile(t *testing.T) { t.Run("file exists", func(t *testing.T) { err := os.WriteFile(".env", []byte("TEST_ENV_FILE=true"), 0644) assert.NoError(t, err) - defer os.Remove(".env") + defer func() { + err = os.Remove(".env") + assert.NoError(t, err) + }() err = loadEnvFile() assert.NoError(t, err) diff --git a/internal/grpc/client/client_test.go b/internal/grpc/client/client_test.go index fb2147e..e69065d 100644 --- a/internal/grpc/client/client_test.go +++ b/internal/grpc/client/client_test.go @@ -744,7 +744,9 @@ func TestNew(t *testing.T) { if cli == nil { t.Fatal("New() returned nil client") } - defer cli.Close() + defer func(cli Client) { + _ = cli.Close() + }(cli) } type MockConfig struct { diff --git a/internal/middleware/forwardedfor_test.go b/internal/middleware/forwardedfor_test.go index 5a45dc0..49f9980 100644 --- a/internal/middleware/forwardedfor_test.go +++ b/internal/middleware/forwardedfor_test.go @@ -1,10 +1,11 @@ package middleware import ( - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" "net" "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" ) type mockRequestHeader struct { diff --git a/internal/middleware/tunnelfingerprint_test.go b/internal/middleware/tunnelfingerprint_test.go index 21e8b15..0054d1e 100644 --- a/internal/middleware/tunnelfingerprint_test.go +++ b/internal/middleware/tunnelfingerprint_test.go @@ -1,9 +1,10 @@ package middleware import ( + "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "testing" ) type mockResponseHeader struct { diff --git a/internal/port/port_test.go b/internal/port/port_test.go index 56526b3..fcc64d3 100644 --- a/internal/port/port_test.go +++ b/internal/port/port_test.go @@ -1,8 +1,9 @@ package port import ( - "github.com/stretchr/testify/assert" "testing" + + "github.com/stretchr/testify/assert" ) func TestAddRange(t *testing.T) { diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index 6e93ceb..484b4e9 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -1,9 +1,6 @@ package registry import ( - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "github.com/stretchr/testify/require" "sync" "testing" "time" @@ -14,6 +11,10 @@ import ( "tunnel_pls/session/slug" "tunnel_pls/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/ssh" ) diff --git a/internal/transport/http_test.go b/internal/transport/http_test.go index 3922eb0..cd3cf68 100644 --- a/internal/transport/http_test.go +++ b/internal/transport/http_test.go @@ -38,7 +38,8 @@ func TestHTTPServer_Listen(t *testing.T) { listener, err := srv.Listen() assert.NoError(t, err) assert.NotNil(t, listener) - listener.Close() + err = listener.Close() + assert.NoError(t, err) } func TestHTTPServer_Serve(t *testing.T) { @@ -54,7 +55,8 @@ func TestHTTPServer_Serve(t *testing.T) { go func() { time.Sleep(100 * time.Millisecond) - listener.Close() + err = listener.Close() + assert.NoError(t, err) }() err = srv.Serve(listener) @@ -102,8 +104,12 @@ func TestHTTPServer_Serve_Success(t *testing.T) { _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) time.Sleep(100 * time.Millisecond) - conn.Close() - listener.Close() + err = conn.Close() + assert.NoError(t, err) + + err = listener.Close() + assert.NoError(t, err) + } type mockListener struct { diff --git a/internal/transport/httphandler_test.go b/internal/transport/httphandler_test.go index b30d9d5..6801b22 100644 --- a/internal/transport/httphandler_test.go +++ b/internal/transport/httphandler_test.go @@ -10,7 +10,6 @@ import ( "sync" "testing" "time" - "tunnel_pls/internal/port" "tunnel_pls/internal/registry" "tunnel_pls/session/forwarder" "tunnel_pls/session/interaction" @@ -97,53 +96,6 @@ func (m *MockSession) Detail() *types.Detail { return args.Get(0).(*types.Detail) } -type MockLifecycle struct { - mock.Mock -} - -func (m *MockLifecycle) Channel() ssh.Channel { - args := m.Called() - return args.Get(0).(ssh.Channel) -} - -func (m *MockLifecycle) Connection() ssh.Conn { - args := m.Called() - return args.Get(0).(ssh.Conn) -} - -func (m *MockLifecycle) PortRegistry() port.Port { - args := m.Called() - return args.Get(0).(port.Port) -} - -func (m *MockLifecycle) User() string { - args := m.Called() - return args.String(0) -} - -func (m *MockLifecycle) SetChannel(channel ssh.Channel) { - m.Called(channel) -} - -func (m *MockLifecycle) SetStatus(status types.SessionStatus) { - m.Called(status) -} - -func (m *MockLifecycle) IsActive() bool { - args := m.Called() - return args.Bool(0) -} - -func (m *MockLifecycle) StartedAt() time.Time { - args := m.Called() - return args.Get(0).(time.Time) -} - -func (m *MockLifecycle) Close() error { - args := m.Called() - return args.Error(0) -} - type MockSSHChannel struct { ssh.Channel mock.Mock @@ -678,7 +630,10 @@ func TestHandler(t *testing.T) { } if clientConn != nil { - defer clientConn.Close() + defer func(clientConn net.Conn) { + err := clientConn.Close() + assert.NoError(t, err) + }(clientConn) } remoteAddr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:12345") diff --git a/internal/transport/https_test.go b/internal/transport/https_test.go index cf09592..6081d97 100644 --- a/internal/transport/https_test.go +++ b/internal/transport/https_test.go @@ -46,7 +46,8 @@ func TestHTTPSServer_Listen(t *testing.T) { return } assert.NotNil(t, listener) - listener.Close() + err = listener.Close() + assert.NoError(t, err) } func TestHTTPSServer_Serve(t *testing.T) { @@ -62,7 +63,8 @@ func TestHTTPSServer_Serve(t *testing.T) { go func() { time.Sleep(100 * time.Millisecond) - listener.Close() + err = listener.Close() + assert.NoError(t, err) }() err = srv.Serve(listener) @@ -111,6 +113,8 @@ func TestHTTPSServer_Serve_Success(t *testing.T) { _, _ = conn.Write([]byte("GET / HTTP/1.1\r\nHost: ping.example.com\r\n\r\n")) time.Sleep(100 * time.Millisecond) - conn.Close() - listener.Close() + err = conn.Close() + assert.NoError(t, err) + err = listener.Close() + assert.NoError(t, err) } diff --git a/internal/transport/tcp_test.go b/internal/transport/tcp_test.go index 409e6f1..c4c4963 100644 --- a/internal/transport/tcp_test.go +++ b/internal/transport/tcp_test.go @@ -32,7 +32,8 @@ func TestTCPServer_Listen(t *testing.T) { listener, err := srv.Listen() assert.NoError(t, err) assert.NotNil(t, listener) - listener.Close() + err = listener.Close() + assert.NoError(t, err) } func TestTCPServer_Serve(t *testing.T) { @@ -44,7 +45,8 @@ func TestTCPServer_Serve(t *testing.T) { go func() { time.Sleep(100 * time.Millisecond) - listener.Close() + err = listener.Close() + assert.NoError(t, err) }() err = srv.Serve(listener) @@ -84,9 +86,10 @@ func TestTCPServer_Serve_Success(t *testing.T) { assert.NoError(t, err) time.Sleep(100 * time.Millisecond) - conn.Close() - listener.Close() - + err = conn.Close() + assert.NoError(t, err) + err = listener.Close() + assert.NoError(t, err) mf.AssertExpectations(t) } @@ -95,7 +98,10 @@ func TestTCPServer_handleTcp_Success(t *testing.T) { srv := NewTCPServer(0, mf).(*tcp) serverConn, clientConn := net.Pipe() - defer clientConn.Close() + defer func(clientConn net.Conn) { + err := clientConn.Close() + assert.NoError(t, err) + }(clientConn) reqs := make(chan *ssh.Request) mockChannel := new(MockSSHChannel) @@ -127,7 +133,10 @@ func TestTCPServer_handleTcp_OpenChannelError(t *testing.T) { srv := NewTCPServer(0, mf).(*tcp) serverConn, clientConn := net.Pipe() - defer clientConn.Close() + defer func(clientConn net.Conn) { + err := clientConn.Close() + assert.NoError(t, err) + }(clientConn) mf.On("OpenForwardedChannel", mock.Anything, mock.Anything).Return(nil, (<-chan *ssh.Request)(nil), errors.New("open error")) diff --git a/internal/transport/tls_test.go b/internal/transport/tls_test.go index 12e656d..0c5510c 100644 --- a/internal/transport/tls_test.go +++ b/internal/transport/tls_test.go @@ -80,13 +80,15 @@ func createTestCert(t *testing.T, domain string, wildcard bool, expired bool, so assert.NoError(t, err) err = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) assert.NoError(t, err) - certOut.Close() + err = certOut.Close() + assert.NoError(t, err) keyOut, err := os.CreateTemp("", "key*.pem") assert.NoError(t, err) err = pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) assert.NoError(t, err) - keyOut.Close() + err = keyOut.Close() + assert.NoError(t, err) return certOut.Name(), keyOut.Name() } @@ -98,7 +100,8 @@ func setupTestDir(t *testing.T) string { assert.NoError(t, err) t.Cleanup(func() { - os.RemoveAll(tmpDir) + err = os.RemoveAll(tmpDir) + assert.NoError(t, err) }) return tmpDir @@ -126,8 +129,11 @@ func TestValidateCertDomains(t *testing.T) { assert.NoError(t, err) _, err = tmpFile.WriteString("not a pem") assert.NoError(t, err) - tmpFile.Close() - return tmpFile.Name(), func() { os.Remove(tmpFile.Name()) } + err = tmpFile.Close() + assert.NoError(t, err) + return tmpFile.Name(), func() { + _ = os.Remove(tmpFile.Name()) + } }, domain: "example.com", expected: false, @@ -137,8 +143,8 @@ func TestValidateCertDomains(t *testing.T) { setup: func(t *testing.T) (string, func()) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) return certPath, func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) } }, domain: "example.com", @@ -149,8 +155,8 @@ func TestValidateCertDomains(t *testing.T) { setup: func(t *testing.T) (string, func()) { certPath, keyPath := createTestCert(t, "example.com", true, true, false) return certPath, func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) } }, domain: "example.com", @@ -161,8 +167,8 @@ func TestValidateCertDomains(t *testing.T) { setup: func(t *testing.T) (string, func()) { certPath, keyPath := createTestCert(t, "example.com", true, false, true) return certPath, func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) } }, domain: "example.com", @@ -173,8 +179,8 @@ func TestValidateCertDomains(t *testing.T) { setup: func(t *testing.T) (string, func()) { certPath, keyPath := createTestCert(t, "example.com", false, false, false) return certPath, func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) } }, domain: "example.com", @@ -205,8 +211,8 @@ func TestLoadAndParseCertificate(t *testing.T) { setup: func(t *testing.T) (string, func()) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) return certPath, func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) } }, wantError: false, @@ -275,8 +281,14 @@ func TestIsCertificateValid(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, tt.expired, tt.soon) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) cert, err := loadAndParseCertificate(certPath) assert.NoError(t, err) @@ -289,8 +301,14 @@ func TestIsCertificateValid(t *testing.T) { func TestExtractCertDomains(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) cert, err := loadAndParseCertificate(certPath) assert.NoError(t, err) @@ -381,8 +399,8 @@ func TestTLSManager_getCertificate(t *testing.T) { setup: func(t *testing.T) *tlsManager { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) cert, err := tls.LoadX509KeyPair(certPath, keyPath) @@ -447,8 +465,9 @@ func TestTLSManager_userCertsExistAndValid(t *testing.T) { mockCfg.On("Domain").Return("example.com") certPath, keyPath := createTestCert(t, "example.com", true, false, false) - t.Cleanup(func() { os.Remove(certPath) }) - os.Remove(keyPath) + t.Cleanup(func() { _ = os.Remove(certPath) }) + err := os.Remove(keyPath) + assert.NoError(t, err) return &tlsManager{ config: mockCfg, @@ -471,8 +490,14 @@ func TestTLSManager_userCertsExistAndValid(t *testing.T) { func TestTLSManager_certFilesExist(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) tm := &tlsManager{ certPath: certPath, @@ -494,8 +519,8 @@ func TestTLSManager_loadUserCerts(t *testing.T) { setup: func(t *testing.T) *tlsManager { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) return &tlsManager{ @@ -550,8 +575,14 @@ func TestCreateTLSManager(t *testing.T) { func TestNewCertWatcher(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) mockCfg := &MockConfig{} @@ -571,8 +602,14 @@ func TestNewCertWatcher(t *testing.T) { func TestCertWatcher_filesModified(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) mockCfg := &MockConfig{} @@ -600,8 +637,14 @@ func TestCertWatcher_filesModified(t *testing.T) { func TestCertWatcher_updateModTimes(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) mockCfg := &MockConfig{} @@ -637,8 +680,8 @@ func TestCertWatcher_getFileInfo(t *testing.T) { setup: func(t *testing.T) *tlsManager { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) return &tlsManager{ @@ -657,8 +700,9 @@ func TestCertWatcher_getFileInfo(t *testing.T) { name: "missing cert file", setup: func(t *testing.T) *tlsManager { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - os.Remove(certPath) - t.Cleanup(func() { os.Remove(keyPath) }) + err := os.Remove(certPath) + assert.NoError(t, err) + t.Cleanup(func() { _ = os.Remove(keyPath) }) return &tlsManager{ config: &MockConfig{}, @@ -672,8 +716,9 @@ func TestCertWatcher_getFileInfo(t *testing.T) { name: "missing key file", setup: func(t *testing.T) *tlsManager { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - os.Remove(keyPath) - t.Cleanup(func() { os.Remove(certPath) }) + err := os.Remove(keyPath) + assert.NoError(t, err) + t.Cleanup(func() { _ = os.Remove(certPath) }) return &tlsManager{ config: &MockConfig{}, @@ -729,8 +774,8 @@ func TestCertWatcher_checkAndReloadCerts(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) tm := &tlsManager{ @@ -747,8 +792,8 @@ func TestCertWatcher_checkAndReloadCerts(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) mockCfg := &MockConfig{} @@ -792,8 +837,8 @@ func TestCertWatcher_handleCertificateChange(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) mockCfg := &MockConfig{} @@ -819,8 +864,8 @@ func TestCertWatcher_handleCertificateChange(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { certPath, keyPath := createTestCert(t, "example.com", false, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) tmpDir := setupTestDir(t) @@ -850,8 +895,8 @@ func TestCertWatcher_handleCertificateChange(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher, os.FileInfo, os.FileInfo) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) mockCfg := &MockConfig{} @@ -946,8 +991,8 @@ func TestCertWatcher_watch(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher) { certPath, keyPath := createTestCert(t, "example.com", false, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) tmpDir := setupTestDir(t) @@ -976,8 +1021,8 @@ func TestCertWatcher_watch(t *testing.T) { setup: func(t *testing.T) (*tlsManager, *certWatcher) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) mockCfg := &MockConfig{} @@ -1006,8 +1051,14 @@ func TestCertWatcher_watch(t *testing.T) { func TestCertWatcher_watch_Integration(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) mockCfg := &MockConfig{} mockCfg.On("Domain").Return("example.com") @@ -1029,8 +1080,14 @@ func TestCertWatcher_watch_Integration(t *testing.T) { time.Sleep(50 * time.Millisecond) newCertPath, newKeyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(newCertPath) - defer os.Remove(newKeyPath) + defer func(name string) { + err = os.Remove(name) + assert.NoError(t, err) + }(newCertPath) + defer func(name string) { + err = os.Remove(name) + assert.NoError(t, err) + }(newKeyPath) newCertData, err := os.ReadFile(newCertPath) assert.NoError(t, err) @@ -1066,8 +1123,8 @@ func TestNewTLSConfig(t *testing.T) { certPath, keyPath := createTestCert(t, "example.com", true, false, false) t.Cleanup(func() { - os.Remove(certPath) - os.Remove(keyPath) + _ = os.Remove(certPath) + _ = os.Remove(keyPath) }) certData, err := os.ReadFile(certPath) @@ -1140,8 +1197,14 @@ func TestNewTLSConfig_Singleton(t *testing.T) { tmpDir := setupTestDir(t) certPath, keyPath := createTestCert(t, "example.com", true, false, false) - defer os.Remove(certPath) - defer os.Remove(keyPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(certPath) + defer func(name string) { + err := os.Remove(name) + assert.NoError(t, err) + }(keyPath) certData, err := os.ReadFile(certPath) assert.NoError(t, err) diff --git a/server/server_test.go b/server/server_test.go index 9b7dd88..a4d5c74 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -181,14 +181,6 @@ func (m *MockListener) Addr() net.Addr { return m.Called().Get(0).(net.Addr) } -type MockSession struct { - mock.Mock -} - -func (m *MockSession) Start() error { - return m.Called().Error(0) -} - func getTestSSHConfig() (*ssh.ServerConfig, ssh.Signer) { key, _ := rsa.GenerateKey(rand.Reader, 2048) signer, _ := ssh.NewSignerFromKey(key) @@ -244,7 +236,10 @@ func TestNew(t *testing.T) { t.Fatal(err) } port := l.Addr().(*net.TCPAddr).Port - defer l.Close() + defer func(l net.Listener) { + err = l.Close() + assert.NoError(t, err) + }(l) s, err := New(mr, mc, sc, mreg, mg, mp, fmt.Sprintf("%d", port)) assert.Error(t, err) @@ -360,7 +355,9 @@ func TestStart(t *testing.T) { go s.Start() time.Sleep(50 * time.Millisecond) - clientConn.Close() + err := clientConn.Close() + assert.NoError(t, err) + time.Sleep(100 * time.Millisecond) mockListener.AssertExpectations(t) @@ -394,7 +391,9 @@ func TestStart(t *testing.T) { go s.Start() time.Sleep(50 * time.Millisecond) - clientConn.Close() + err := clientConn.Close() + assert.NoError(t, err) + time.Sleep(100 * time.Millisecond) mockListener.AssertExpectations(t) @@ -423,7 +422,9 @@ func TestHandleConnection(t *testing.T) { portRegistry: mockPort, } - clientConn.Close() + err := clientConn.Close() + assert.NoError(t, err) + s.handleConnection(serverConn) }) @@ -489,7 +490,10 @@ func TestHandleConnection(t *testing.T) { if err != nil { t.Fatal(err) } - defer listener.Close() + defer func(listener net.Listener) { + err = listener.Close() + assert.NoError(t, err) + }(listener) serverAddr := listener.Addr().String() @@ -529,7 +533,10 @@ func TestHandleConnection(t *testing.T) { t.Logf("Client dial failed: %v", err) return } - defer client.Close() + defer func(client *ssh.Client) { + err = client.Close() + assert.NoError(t, err) + }(client) type forwardPayload struct { BindAddr string @@ -578,7 +585,10 @@ func TestHandleConnection(t *testing.T) { if err != nil { t.Fatal(err) } - defer listener.Close() + defer func(listener net.Listener) { + err = listener.Close() + assert.NoError(t, err) + }(listener) serverAddr := listener.Addr().String() @@ -618,7 +628,10 @@ func TestHandleConnection(t *testing.T) { t.Logf("Client dial failed: %v", err) return } - defer client.Close() + defer func(client *ssh.Client) { + err = client.Close() + assert.NoError(t, err) + }(client) type forwardPayload struct { BindAddr string @@ -667,7 +680,10 @@ func TestHandleConnection(t *testing.T) { if err != nil { t.Fatal(err) } - defer listener.Close() + defer func(listener net.Listener) { + err = listener.Close() + assert.NoError(t, err) + }(listener) serverAddr := listener.Addr().String() @@ -707,7 +723,9 @@ func TestHandleConnection(t *testing.T) { t.Logf("Client dial failed: %v", err) return } - defer client.Close() + defer func(client *ssh.Client) { + _ = client.Close() + }(client) type forwardPayload struct { BindAddr string @@ -762,7 +780,8 @@ func TestHandleConnection(t *testing.T) { done <- true }() - clientConn.Close() + err := clientConn.Close() + assert.NoError(t, err) select { case <-done: @@ -824,9 +843,9 @@ func TestIntegration(t *testing.T) { go s.Start() time.Sleep(50 * time.Millisecond) - conn1Client.Close() + _ = conn1Client.Close() time.Sleep(50 * time.Millisecond) - conn2Client.Close() + _ = conn2Client.Close() time.Sleep(100 * time.Millisecond) mockListener.AssertExpectations(t) @@ -843,7 +862,8 @@ func TestErrorHandling(t *testing.T) { sshConfig, _ := getTestSSHConfig() serverConn, clientConn := net.Pipe() - clientConn.Close() + err := clientConn.Close() + assert.NoError(t, err) s := &server{ randomizer: mockRandom, diff --git a/session/forwarder/forwarder_test.go b/session/forwarder/forwarder_test.go index a06506e..c3e1284 100644 --- a/session/forwarder/forwarder_test.go +++ b/session/forwarder/forwarder_test.go @@ -219,8 +219,14 @@ func (p *pipeConn) Write(b []byte) (int, error) { } func (p *pipeConn) Close() error { - p.reader.Close() - p.writer.Close() + err := p.reader.Close() + if err != nil { + return err + } + err = p.writer.Close() + if err != nil { + return err + } return nil } @@ -499,7 +505,8 @@ func TestOpenForwardedChannel(t *testing.T) { OriginAddr string OriginPort uint32 } - ssh.Unmarshal(capturedData, &payload) + err = ssh.Unmarshal(capturedData, &payload) + assert.NoError(t, err) assert.Equal(t, tt.wantDestAddr, payload.DestAddr) assert.Equal(t, tt.wantDestPort, payload.DestPort) assert.Equal(t, tt.wantOrigAddr, payload.OriginAddr) @@ -662,8 +669,8 @@ func TestCreateForwardedTCPIPPayload(t *testing.T) { OriginPort uint32 } - ssh.Unmarshal(payload, &decoded) - + err := ssh.Unmarshal(payload, &decoded) + assert.NoError(t, err) assert.Equal(t, tt.wantDestAddr, decoded.DestAddr) assert.Equal(t, tt.wantDestPort, decoded.DestPort) assert.Equal(t, tt.wantOriginAddr, decoded.OriginAddr) @@ -1056,9 +1063,7 @@ func TestCopyWithBuffer(t *testing.T) { } if buf, ok := dst.(*bytes.Buffer); ok && !tt.wantErr { - if _, ok := src.(io.Reader); ok { - assert.Equal(t, tt.wantBytesCount, int64(buf.Len())) - } + assert.Equal(t, tt.wantBytesCount, int64(buf.Len())) } if mr, ok := src.(*mockReader); ok { @@ -1276,7 +1281,10 @@ func TestSetListener(t *testing.T) { listener := tt.setupListener() if listener != nil { - defer listener.Close() + defer func(listener net.Listener) { + err := listener.Close() + assert.NoError(t, err) + }(listener) } assert.Nil(t, forwarder.Listener()) @@ -1318,7 +1326,10 @@ func TestListener(t *testing.T) { listener := tt.setupListener() if listener != nil { - defer listener.Close() + defer func(listener net.Listener) { + err := listener.Close() + assert.NoError(t, err) + }(listener) forwarder.SetListener(listener) } @@ -1356,7 +1367,8 @@ func TestClose(t *testing.T) { setupListener: func() net.Listener { listener, err := net.Listen("tcp", "127.0.0.1:0") require.NoError(t, err) - listener.Close() + err = listener.Close() + assert.NoError(t, err) return listener }, wantErr: true, @@ -1477,8 +1489,10 @@ func TestHandleConnectionWithErrors(t *testing.T) { return newPipePair() }, simulateErr: func(channel *testChannelPeer, dst *pipeConn) { - channel.CloseWrite() - dst.CloseWrite() + err := channel.CloseWrite() + assert.NoError(t, err) + err = dst.CloseWrite() + assert.NoError(t, err) }, }, { @@ -1491,10 +1505,14 @@ func TestHandleConnectionWithErrors(t *testing.T) { return newPipePair() }, simulateErr: func(channel *testChannelPeer, dst *pipeConn) { - dst.Close() + err := dst.Close() + assert.NoError(t, err) time.Sleep(10 * time.Millisecond) - channel.Write([]byte("test")) - channel.CloseWrite() + write, err := channel.Write([]byte("test")) + assert.NotZero(t, write) + assert.NoError(t, err) + err = channel.CloseWrite() + assert.NoError(t, err) }, }, } diff --git a/session/lifecycle/lifecycle_test.go b/session/lifecycle/lifecycle_test.go index 4f4335b..608b3a8 100644 --- a/session/lifecycle/lifecycle_test.go +++ b/session/lifecycle/lifecycle_test.go @@ -139,24 +139,6 @@ func (m *MockSSHChannel) Close() error { return m.Called().Error(0) } -type mockNewChannel struct { - ssh.NewChannel - mock.Mock -} - -func (m *mockNewChannel) Accept() (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called() - return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) -} - -func (m *MockSSHConn) OpenChannel(name string, data []byte) (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called(name, data) - if args.Get(0) == nil { - return nil, args.Get(1).(<-chan *ssh.Request), args.Error(2) - } - return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) -} - func TestNew(t *testing.T) { mockSSHConn := new(MockSSHConn) mockForwarder := &MockForwarder{} @@ -297,7 +279,8 @@ func TestLifecycle_Close(t *testing.T) { mockLifecycle.SetChannel(mockSSHChannel) if tt.alreadyClosed { - mockLifecycle.Close() + err := mockLifecycle.Close() + assert.NoError(t, err) } err := mockLifecycle.Close() diff --git a/session/session_test.go b/session/session_test.go index 0e87834..8a89125 100644 --- a/session/session_test.go +++ b/session/session_test.go @@ -7,13 +7,13 @@ import ( "encoding/binary" "encoding/pem" "fmt" + "io" "net" "strconv" "strings" "testing" "time" "tunnel_pls/internal/config" - portUtil "tunnel_pls/internal/port" "tunnel_pls/internal/registry" "tunnel_pls/session/lifecycle" "tunnel_pls/types" @@ -122,25 +122,6 @@ func (m *mockSSHConn) User() string { return m.Called().String(0) } -type mockSSHChannel struct { - ssh.Channel - mock.Mock -} - -func (m *mockSSHChannel) Close() error { - return m.Called().Error(0) -} - -type mockNewChannel struct { - ssh.NewChannel - mock.Mock -} - -func (m *mockNewChannel) Accept() (ssh.Channel, <-chan *ssh.Request, error) { - args := m.Called() - return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) -} - func setupSSH(t *testing.T) (sConn *ssh.ServerConn, sReqs <-chan *ssh.Request, sChans <-chan ssh.NewChannel, cConn ssh.Conn, cleanup func()) { l, err := net.Listen("tcp", "127.0.0.1:0") require.NoError(t, err) @@ -193,7 +174,8 @@ func setupSSH(t *testing.T) (sConn *ssh.ServerConn, sReqs <-chan *ssh.Request, s if newChan.ChannelType() == "session" { continue } - newChan.Reject(ssh.Prohibited, "") + err = newChan.Reject(ssh.Prohibited, "") + assert.NoError(t, err) } }() @@ -205,9 +187,9 @@ func setupSSH(t *testing.T) (sConn *ssh.ServerConn, sReqs <-chan *ssh.Request, s } return sConnObj, sReqsChan, sChansChan, cConnObj, func() { - cConnObj.Close() - sConnObj.Close() - l.Close() + _ = cConnObj.Close() + _ = sConnObj.Close() + _ = l.Close() } } @@ -330,7 +312,9 @@ func TestHandleGlobalRequest(t *testing.T) { }) } - cConn.Close() + err := cConn.Close() + assert.NoError(t, err) + select { case <-done: case <-time.After(2 * time.Second): @@ -505,11 +489,13 @@ func TestStart_Table(t *testing.T) { time.Sleep(200 * time.Millisecond) _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) time.Sleep(200 * time.Millisecond) - ch.Write([]byte("q")) + write, err := ch.Write([]byte("q")) + assert.NoError(t, err) + assert.NotZero(t, write) time.Sleep(100 * time.Millisecond) - ch.Close() + _ = ch.Close() } - cConn.Close() + _ = cConn.Close() }() err := s.Start() @@ -530,9 +516,13 @@ func TestStart_Table(t *testing.T) { go func() { time.Sleep(600 * time.Millisecond) - _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + _, _, err := cConn.SendRequest("tcpip-forward", true, payload) + assert.NoError(t, err) + time.Sleep(100 * time.Millisecond) - cConn.Close() + err = cConn.Close() + assert.NoError(t, err) + }() err := s.Start() @@ -545,7 +535,7 @@ func TestStart_Table(t *testing.T) { go func() { time.Sleep(1200 * time.Millisecond) - cConn.Close() + _ = cConn.Close() }() err := s.Start() @@ -554,11 +544,11 @@ func TestStart_Table(t *testing.T) { }) t.Run("Unauthorized Headless", func(t *testing.T) { - s, conf, cConn, cleanup := setup(t) + _, conf, cConn, cleanup := setup(t) defer cleanup() conf.User = "UNAUTHORIZED" - s = New(conf).(*session) + s := New(conf).(*session) payload := make([]byte, 4+9+4) binary.BigEndian.PutUint32(payload[0:4], 9) @@ -738,14 +728,17 @@ func TestForwardingFailures(t *testing.T) { binary.BigEndian.PutUint32(payload[13:17], 80) go func() { - _, _, _ = cConn.SendRequest("tcpip-forward", true, payload) + _, _, err := cConn.SendRequest("tcpip-forward", true, payload) + assert.Error(t, err, io.EOF) }() req := <-sReqs - cConn.Close() + err := cConn.Close() + assert.NoError(t, err) + time.Sleep(50 * time.Millisecond) - err := s.HandleTCPIPForward(req) + err = s.HandleTCPIPForward(req) assert.Error(t, err) }) @@ -759,7 +752,10 @@ func TestForwardingFailures(t *testing.T) { if err != nil { t.Fatal(err) } - defer l.Close() + defer func(l net.Listener) { + err = l.Close() + assert.NoError(t, err) + }(l) _, portStr, _ := net.SplitHostPort(l.Addr().String()) port, _ := strconv.Atoi(portStr) @@ -1120,10 +1116,12 @@ func TestDenyForwardingRequest_Full(t *testing.T) { s, _, _, sReqs, cConn, cleanup := setup(t) defer cleanup() req := getReq(t, cConn, sReqs) - cConn.Close() + err := cConn.Close() + assert.NoError(t, err) + time.Sleep(100 * time.Millisecond) - err := s.denyForwardingRequest(req, nil, nil, assert.AnError.Error()) + err = s.denyForwardingRequest(req, nil, nil, assert.AnError.Error()) assert.Error(t, err, assert.AnError) }) } @@ -1183,7 +1181,10 @@ func TestHandleTCPForward_Failures(t *testing.T) { if err != nil { t.Fatal(err) } - defer l.Close() + defer func(l net.Listener) { + err = l.Close() + assert.NoError(t, err) + }(l) port := uint16(l.Addr().(*net.TCPAddr).Port) err = s.HandleTCPForward(getReq(t, cConn, sReqs), "localhost", port) @@ -1213,10 +1214,11 @@ func TestHandleTCPForward_Failures(t *testing.T) { mPort.On("Claim", mock.Anything).Return(true) mRegistry.On("Register", mock.Anything, mock.Anything).Return(true) req := getReq(t, cConn, sReqs) - cConn.Close() + err := cConn.Close() + assert.NoError(t, err) time.Sleep(100 * time.Millisecond) - err := s.HandleTCPForward(req, "localhost", 0) + err = s.HandleTCPForward(req, "localhost", 0) if err == nil { t.Error("expected error, got nil") } else if !strings.Contains(err.Error(), "Failed to finalize forwarding") { @@ -1318,7 +1320,9 @@ func TestHandleGlobalRequest_Failures(t *testing.T) { }) } - cConn.Close() + err := cConn.Close() + assert.NoError(t, err) + select { case <-done: case <-time.After(2 * time.Second): @@ -1354,19 +1358,3 @@ type mockCloser struct { } func (m *mockCloser) Close() error { return m.err } - -type mockLifecycle struct { - lifecycle.Lifecycle - closeErr error - conn ssh.Conn - user string -} - -func (m *mockLifecycle) Close() error { return m.closeErr } -func (m *mockLifecycle) Connection() ssh.Conn { return m.conn } -func (m *mockLifecycle) User() string { return m.user } -func (m *mockLifecycle) IsActive() bool { return false } -func (m *mockLifecycle) PortRegistry() portUtil.Port { return nil } -func (m *mockLifecycle) SetChannel(ch ssh.Channel) {} -func (m *mockLifecycle) SetStatus(status types.SessionStatus) {} -func (m *mockLifecycle) StartedAt() time.Time { return time.Time{} } diff --git a/session/slug/slug_test.go b/session/slug/slug_test.go index 3e192af..c7af138 100644 --- a/session/slug/slug_test.go +++ b/session/slug/slug_test.go @@ -83,11 +83,6 @@ func (suite *SlugTestSuite) TestMultipleSet() { assert.Equal(suite.T(), "", suite.slug.String()) } -func TestSlugInterface(t *testing.T) { - var _ Slug = (*slug)(nil) - var _ Slug = New() -} - func TestSlugIsolation(t *testing.T) { slug1 := New() slug2 := New() From 7f44cc7bc08ff04418e689fa022d55ac915dc99d Mon Sep 17 00:00:00 2001 From: bagas Date: Mon, 26 Jan 2026 19:50:34 +0700 Subject: [PATCH 43/47] fix: ensure proper buffer reuse with pointer handling in sync.Pool --- session/forwarder/forwarder.go | 7 ++++--- session/forwarder/forwarder_test.go | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/session/forwarder/forwarder.go b/session/forwarder/forwarder.go index b894536..03528c9 100644 --- a/session/forwarder/forwarder.go +++ b/session/forwarder/forwarder.go @@ -46,16 +46,17 @@ func New(config config.Config, slug slug.Slug, conn ssh.Conn) Forwarder { bufferPool: sync.Pool{ New: func() interface{} { bufSize := config.BufferSize() - return make([]byte, bufSize) + buf := make([]byte, bufSize) + return &buf }, }, } } func (f *forwarder) copyWithBuffer(dst io.Writer, src io.Reader) (written int64, err error) { - buf := f.bufferPool.Get().([]byte) + buf := f.bufferPool.Get().(*[]byte) defer f.bufferPool.Put(buf) - return io.CopyBuffer(dst, src, buf) + return io.CopyBuffer(dst, src, *buf) } func (f *forwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) { diff --git a/session/forwarder/forwarder_test.go b/session/forwarder/forwarder_test.go index c3e1284..092d783 100644 --- a/session/forwarder/forwarder_test.go +++ b/session/forwarder/forwarder_test.go @@ -273,8 +273,8 @@ func TestNew(t *testing.T) { forwarder := New(cfg, s, conn).(*forwarder) - buf := forwarder.bufferPool.Get().([]byte) - require.Len(t, buf, tt.wantBufLen) + buf := forwarder.bufferPool.Get().(*[]byte) + require.Len(t, *buf, tt.wantBufLen) forwarder.bufferPool.Put(buf) assert.Equal(t, types.TunnelTypeUNKNOWN, forwarder.TunnelType()) @@ -1082,8 +1082,9 @@ func TestCopyWithBufferReusesBuffer(t *testing.T) { cfg.On("BufferSize").Return(16).Maybe() forwarder := New(cfg, slug.New(), nil).(*forwarder) - buf1 := forwarder.bufferPool.Get().([]byte) - initialPtr := &buf1[0] + buf1 := forwarder.bufferPool.Get().(*[]byte) + initialPtr := buf1 + forwarder.bufferPool.Put(buf1) src := io.NopCloser(bytes.NewReader([]byte("test"))) @@ -1091,16 +1092,19 @@ func TestCopyWithBufferReusesBuffer(t *testing.T) { _, err := forwarder.copyWithBuffer(dst, src) require.NoError(t, err) - buf2 := forwarder.bufferPool.Get().([]byte) - secondPtr := &buf2[0] + buf2 := forwarder.bufferPool.Get().(*[]byte) + secondPtr := buf2 + forwarder.bufferPool.Put(buf2) - assert.Equal(t, len(buf1), len(buf2)) + assert.Equal(t, initialPtr, secondPtr, "Buffers should be the same pointer") - assert.Len(t, buf2, 16) + assert.Len(t, *buf2, 16) + assert.Len(t, *buf1, 16) _ = initialPtr _ = secondPtr + cfg.AssertExpectations(t) } From a26d1672d97bc921d30b0e0a0718818f87eded0d Mon Sep 17 00:00:00 2001 From: bagas Date: Tue, 27 Jan 2026 13:43:18 +0700 Subject: [PATCH 44/47] refactor(interaction): reduce cognitive complexity and centralize color constants --- session/interaction/commands.go | 37 +++-- session/interaction/dashboard.go | 250 +++++++++++++++------------- session/interaction/model.go | 19 +++ session/interaction/slug.go | 270 ++++++++++++++++++------------- 4 files changed, 335 insertions(+), 241 deletions(-) diff --git a/session/interaction/commands.go b/session/interaction/commands.go index e884aeb..5e24368 100644 --- a/session/interaction/commands.go +++ b/session/interaction/commands.go @@ -10,34 +10,37 @@ import ( "github.com/charmbracelet/lipgloss" ) +func (m *model) handleCommandSelection(item commandItem) (tea.Model, tea.Cmd) { + switch item.name { + case "slug": + m.showingCommands = false + m.editingSlug = true + m.slugInput.SetValue(m.interaction.slug.String()) + m.slugInput.Focus() + return m, tea.Batch(tea.ClearScreen, textinput.Blink) + case "tunnel-type": + m.showingCommands = false + m.showingComingSoon = true + return m, tea.Batch(tickCmd(5*time.Second), tea.ClearScreen, textinput.Blink) + default: + m.showingCommands = false + return m, nil + } +} + func (m *model) commandsUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { var cmd tea.Cmd switch { - case key.Matches(msg, m.keymap.quit): + case key.Matches(msg, m.keymap.quit), msg.String() == "esc": m.showingCommands = false return m, tea.Batch(tea.ClearScreen, textinput.Blink) case msg.String() == "enter": selectedItem := m.commandList.SelectedItem() if selectedItem != nil { item := selectedItem.(commandItem) - if item.name == "slug" { - m.showingCommands = false - m.editingSlug = true - m.slugInput.SetValue(m.interaction.slug.String()) - m.slugInput.Focus() - return m, tea.Batch(tea.ClearScreen, textinput.Blink) - } else if item.name == "tunnel-type" { - m.showingCommands = false - m.showingComingSoon = true - return m, tea.Batch(tickCmd(5*time.Second), tea.ClearScreen, textinput.Blink) - } - m.showingCommands = false - return m, nil + return m.handleCommandSelection(item) } - case msg.String() == "esc": - m.showingCommands = false - return m, tea.Batch(tea.ClearScreen, textinput.Blink) } m.commandList, cmd = m.commandList.Update(msg) return m, cmd diff --git a/session/interaction/dashboard.go b/session/interaction/dashboard.go index a24ab7c..cf10ddb 100644 --- a/session/interaction/dashboard.go +++ b/session/interaction/dashboard.go @@ -23,164 +23,194 @@ func (m *model) dashboardUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { } func (m *model) dashboardView() string { - titleStyle := lipgloss.NewStyle(). - Bold(true). - Foreground(lipgloss.Color("#7D56F4")). - PaddingTop(1) - - subtitleStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#888888")). - Italic(true) - - urlStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#7D56F4")). - Underline(true). - Italic(true) - - urlBoxStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#04B575")). - Bold(true). - Italic(true) - - keyHintStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#7D56F4")). - Bold(true) + isCompact := shouldUseCompactLayout(m.width, BreakpointLarge) var b strings.Builder + b.WriteString(m.renderHeader(isCompact)) + b.WriteString(m.renderUserInfo(isCompact)) + b.WriteString(m.renderQuickActions(isCompact)) + b.WriteString(m.renderFooter(isCompact)) - isCompact := shouldUseCompactLayout(m.width, 85) + return b.String() +} - var asciiArtMargin int - if isCompact { - asciiArtMargin = 0 - } else { - asciiArtMargin = 1 - } +func (m *model) renderHeader(isCompact bool) string { + var b strings.Builder + asciiArtMargin := getMarginValue(isCompact, 0, 1) asciiArtStyle := lipgloss.NewStyle(). Bold(true). - Foreground(lipgloss.Color("#7D56F4")). + Foreground(lipgloss.Color(ColorPrimary)). MarginBottom(asciiArtMargin) - var asciiArt string - if shouldUseCompactLayout(m.width, 50) { - asciiArt = "TUNNEL PLS" - } else if isCompact { - asciiArt = ` + b.WriteString(asciiArtStyle.Render(m.getASCIIArt())) + b.WriteString("\n") + + if !shouldUseCompactLayout(m.width, BreakpointSmall) { + b.WriteString(m.renderSubtitle()) + } else { + b.WriteString("\n") + } + + return b.String() +} + +func (m *model) getASCIIArt() string { + if shouldUseCompactLayout(m.width, BreakpointTiny) { + return "TUNNEL PLS" + } + + if shouldUseCompactLayout(m.width, BreakpointLarge) { + return ` ▀█▀ █ █ █▄ █ █▄ █ ██▀ █ ▄▀▀ █ ▄▀▀ █ ▀▄█ █ ▀█ █ ▀█ █▄▄ █▄▄ ▄█▀ █▄▄ ▄█▀` - } else { - asciiArt = ` + } + + return ` ████████╗██╗ ██╗███╗ ██╗███╗ ██╗███████╗██╗ ██████╗ ██╗ ███████╗ ╚══██╔══╝██║ ██║████╗ ██║████╗ ██║██╔════╝██║ ██╔══██╗██║ ██╔════╝ ██║ ██║ ██║██╔██╗ ██║██╔██╗ ██║█████╗ ██║ ██████╔╝██║ ███████╗ ██║ ██║ ██║██║╚██╗██║██║╚██╗██║██╔══╝ ██║ ██╔═══╝ ██║ ╚════██║ ██║ ╚██████╔╝██║ ╚████║██║ ╚████║███████╗███████╗ ██║ ███████╗███████║ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═══╝╚══════╝╚══════╝ ╚═╝ ╚══════╝╚══════╝` - } +} - b.WriteString(asciiArtStyle.Render(asciiArt)) - b.WriteString("\n") +func (m *model) renderSubtitle() string { + subtitleStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorGray)). + Italic(true) - if !shouldUseCompactLayout(m.width, 60) { - b.WriteString(subtitleStyle.Render("Secure tunnel service by Bagas • ")) - b.WriteString(urlStyle.Render("https://fossy.my.id")) - b.WriteString("\n\n") - } else { - b.WriteString("\n") - } + urlStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorPrimary)). + Underline(true). + Italic(true) + return subtitleStyle.Render("Secure tunnel service by Bagas • ") + + urlStyle.Render("https://fossy.my.id") + "\n\n" +} + +func (m *model) renderUserInfo(isCompact bool) string { boxMaxWidth := getResponsiveWidth(m.width, 10, 40, 80) - var boxPadding int - var boxMargin int - if isCompact { - boxPadding = 1 - boxMargin = 1 - } else { - boxPadding = 2 - boxMargin = 2 - } + boxPadding := getMarginValue(isCompact, 1, 2) + boxMargin := getMarginValue(isCompact, 1, 2) responsiveInfoBox := lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#7D56F4")). + BorderForeground(lipgloss.Color(ColorPrimary)). Padding(1, boxPadding). MarginTop(boxMargin). MarginBottom(boxMargin). Width(boxMaxWidth) - authenticatedUser := m.interaction.user + infoContent := m.getUserInfoContent(isCompact) + return responsiveInfoBox.Render(infoContent) + "\n" +} +func (m *model) getUserInfoContent(isCompact bool) string { userInfoStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FAFAFA")). + Foreground(lipgloss.Color(ColorWhite)). Bold(true) sectionHeaderStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#888888")). + Foreground(lipgloss.Color(ColorGray)). Bold(true) addressStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FAFAFA")) + Foreground(lipgloss.Color(ColorWhite)) - var infoContent string - if shouldUseCompactLayout(m.width, 70) { - infoContent = fmt.Sprintf("👤 %s\n\n%s\n%s", + urlBoxStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorSecondary)). + Bold(true). + Italic(true) + + authenticatedUser := m.interaction.user + tunnelURL := urlBoxStyle.Render(m.getTunnelURL()) + + if isCompact { + return fmt.Sprintf("👤 %s\n\n%s\n%s", userInfoStyle.Render(authenticatedUser), sectionHeaderStyle.Render("🌐 FORWARDING ADDRESS:"), - addressStyle.Render(fmt.Sprintf(" %s", urlBoxStyle.Render(m.getTunnelURL())))) - } else { - infoContent = fmt.Sprintf("👤 Authenticated as: %s\n\n%s\n %s", - userInfoStyle.Render(authenticatedUser), - sectionHeaderStyle.Render("🌐 FORWARDING ADDRESS:"), - addressStyle.Render(urlBoxStyle.Render(m.getTunnelURL()))) + addressStyle.Render(fmt.Sprintf(" %s", tunnelURL))) } - b.WriteString(responsiveInfoBox.Render(infoContent)) + return fmt.Sprintf("👤 Authenticated as: %s\n\n%s\n %s", + userInfoStyle.Render(authenticatedUser), + sectionHeaderStyle.Render("🌐 FORWARDING ADDRESS:"), + addressStyle.Render(tunnelURL)) +} + +func (m *model) renderQuickActions(isCompact bool) string { + var b strings.Builder + + titleStyle := lipgloss.NewStyle(). + Bold(true). + Foreground(lipgloss.Color(ColorPrimary)). + PaddingTop(1) + + b.WriteString(titleStyle.Render(m.getQuickActionsTitle())) b.WriteString("\n") - var quickActionsTitle string - if shouldUseCompactLayout(m.width, 50) { - quickActionsTitle = "Actions" - } else if isCompact { - quickActionsTitle = "Quick Actions" - } else { - quickActionsTitle = "✨ Quick Actions" - } - b.WriteString(titleStyle.Render(quickActionsTitle)) - b.WriteString("\n") - - var featureMargin int - if isCompact { - featureMargin = 1 - } else { - featureMargin = 2 - } - - compactFeatureStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FAFAFA")). + featureMargin := getMarginValue(isCompact, 1, 2) + featureStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorWhite)). MarginLeft(featureMargin) - var commandsText string - var quitText string - if shouldUseCompactLayout(m.width, 60) { - commandsText = fmt.Sprintf(" %s Commands", keyHintStyle.Render("[C]")) - quitText = fmt.Sprintf(" %s Quit", keyHintStyle.Render("[Q]")) - } else { - commandsText = fmt.Sprintf(" %s Open commands menu", keyHintStyle.Render("[C]")) - quitText = fmt.Sprintf(" %s Quit application", keyHintStyle.Render("[Q]")) - } + keyHintStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorPrimary)). + Bold(true) - b.WriteString(compactFeatureStyle.Render(commandsText)) + commands := m.getActionCommands(keyHintStyle) + b.WriteString(featureStyle.Render(commands.commandsText)) b.WriteString("\n") - b.WriteString(compactFeatureStyle.Render(quitText)) - - if !shouldUseCompactLayout(m.width, 70) { - b.WriteString("\n\n") - footerStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#666666")). - Italic(true) - b.WriteString(footerStyle.Render("Press 'C' to customize your tunnel settings")) - } + b.WriteString(featureStyle.Render(commands.quitText)) return b.String() } + +func (m *model) getQuickActionsTitle() string { + if shouldUseCompactLayout(m.width, BreakpointTiny) { + return "Actions" + } + if shouldUseCompactLayout(m.width, BreakpointLarge) { + return "Quick Actions" + } + return "✨ Quick Actions" +} + +type actionCommands struct { + commandsText string + quitText string +} + +func (m *model) getActionCommands(keyHintStyle lipgloss.Style) actionCommands { + if shouldUseCompactLayout(m.width, BreakpointSmall) { + return actionCommands{ + commandsText: fmt.Sprintf(" %s Commands", keyHintStyle.Render("[C]")), + quitText: fmt.Sprintf(" %s Quit", keyHintStyle.Render("[Q]")), + } + } + + return actionCommands{ + commandsText: fmt.Sprintf(" %s Open commands menu", keyHintStyle.Render("[C]")), + quitText: fmt.Sprintf(" %s Quit application", keyHintStyle.Render("[Q]")), + } +} + +func (m *model) renderFooter(isCompact bool) string { + if isCompact { + return "" + } + + footerStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorDarkGray)). + Italic(true) + + return "\n\n" + footerStyle.Render("Press 'C' to customize your tunnel settings") +} + +func getMarginValue(isCompact bool, compactValue, normalValue int) int { + if isCompact { + return compactValue + } + return normalValue +} diff --git a/session/interaction/model.go b/session/interaction/model.go index 3002d16..c0d1672 100644 --- a/session/interaction/model.go +++ b/session/interaction/model.go @@ -42,6 +42,25 @@ type model struct { height int } +const ( + ColorPrimary = "#7D56F4" + ColorSecondary = "#04B575" + ColorGray = "#888888" + ColorDarkGray = "#666666" + ColorWhite = "#FAFAFA" + ColorError = "#FF0000" + ColorErrorBg = "#3D0000" + ColorWarning = "#FFA500" + ColorWarningBg = "#3D2000" +) + +const ( + BreakpointTiny = 50 + BreakpointSmall = 60 + BreakpointMedium = 70 + BreakpointLarge = 85 +) + func (m *model) getTunnelURL() string { if m.tunnelType == types.TunnelTypeHTTP { return buildURL(m.protocol, m.interaction.slug.String(), m.domain) diff --git a/session/interaction/slug.go b/session/interaction/slug.go index 647cd31..ff57cb1 100644 --- a/session/interaction/slug.go +++ b/session/interaction/slug.go @@ -21,7 +21,7 @@ func (m *model) slugUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { } switch msg.String() { - case "esc": + case "esc", "ctrl+c": m.editingSlug = false m.slugError = "" return m, tea.Batch(tea.ClearScreen, textinput.Blink) @@ -40,10 +40,6 @@ func (m *model) slugUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { m.editingSlug = false m.slugError = "" return m, tea.Batch(tea.ClearScreen, textinput.Blink) - case "ctrl+c": - m.editingSlug = false - m.slugError = "" - return m, tea.Batch(tea.ClearScreen, textinput.Blink) default: if key.Matches(msg, m.keymap.random) { newSubdomain, err := m.randomizer.String(20) @@ -51,8 +47,6 @@ func (m *model) slugUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { return m, cmd } m.slugInput.SetValue(newSubdomain) - m.slugError = "" - m.slugInput, cmd = m.slugInput.Update(msg) } m.slugError = "" m.slugInput, cmd = m.slugInput.Update(msg) @@ -61,163 +55,211 @@ func (m *model) slugUpdate(msg tea.KeyMsg) (tea.Model, tea.Cmd) { } func (m *model) slugView() string { - isCompact := shouldUseCompactLayout(m.width, 70) - isVeryCompact := shouldUseCompactLayout(m.width, 50) + isCompact := shouldUseCompactLayout(m.width, BreakpointMedium) + isVeryCompact := shouldUseCompactLayout(m.width, BreakpointTiny) - var boxPadding int - var boxMargin int - if isVeryCompact { - boxPadding = 1 - boxMargin = 1 - } else if isCompact { - boxPadding = 1 - boxMargin = 1 - } else { - boxPadding = 2 - boxMargin = 2 + var b strings.Builder + b.WriteString(m.renderSlugTitle(isVeryCompact)) + + if m.tunnelType != types.TunnelTypeHTTP { + b.WriteString(m.renderTCPWarning(isVeryCompact, isCompact)) + return b.String() } + b.WriteString(m.renderSlugRules(isVeryCompact, isCompact)) + b.WriteString(m.renderSlugInstruction(isVeryCompact)) + b.WriteString(m.renderSlugInput(isVeryCompact, isCompact)) + b.WriteString(m.renderSlugPreview(isVeryCompact)) + b.WriteString(m.renderSlugHelp(isVeryCompact)) + + return b.String() +} + +func (m *model) renderSlugTitle(isVeryCompact bool) string { titleStyle := lipgloss.NewStyle(). Bold(true). - Foreground(lipgloss.Color("#7D56F4")). + Foreground(lipgloss.Color(ColorPrimary)). PaddingTop(1). PaddingBottom(1) - instructionStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FAFAFA")). - MarginTop(1) + title := "🔧 Edit Subdomain" + if isVeryCompact { + title = "Edit Subdomain" + } - inputBoxStyle := lipgloss.NewStyle(). + return titleStyle.Render(title) + "\n\n" +} + +func (m *model) renderTCPWarning(isVeryCompact, isCompact bool) string { + boxPadding := getPaddingValue(isVeryCompact, isCompact) + boxMargin := getMarginValue(isCompact, 1, 2) + warningBoxWidth := getResponsiveWidth(m.width, 10, 30, 60) + + warningBoxStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorWarning)). + Background(lipgloss.Color(ColorWarningBg)). + Bold(true). Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#7D56F4")). + BorderForeground(lipgloss.Color(ColorWarning)). Padding(1, boxPadding). MarginTop(boxMargin). - MarginBottom(boxMargin) + MarginBottom(boxMargin). + Width(warningBoxWidth) helpStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#666666")). + Foreground(lipgloss.Color(ColorDarkGray)). Italic(true). MarginTop(1) - errorBoxStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FF0000")). - Background(lipgloss.Color("#3D0000")). - Bold(true). - Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#FF0000")). - Padding(0, boxPadding). - MarginTop(1). - MarginBottom(1) + warningText := m.getTCPWarningText(isVeryCompact) + helpText := m.getTCPHelpText(isVeryCompact) + var b strings.Builder + b.WriteString(warningBoxStyle.Render(warningText)) + b.WriteString("\n\n") + b.WriteString(helpStyle.Render(helpText)) + + return b.String() +} + +func (m *model) getTCPWarningText(isVeryCompact bool) string { + if isVeryCompact { + return "⚠️ TCP tunnels don't support custom subdomains." + } + return "⚠️ TCP tunnels cannot have custom subdomains. Only HTTP/HTTPS tunnels support subdomain customization." +} + +func (m *model) getTCPHelpText(isVeryCompact bool) string { + if isVeryCompact { + return "Press any key to go back" + } + return "Press Enter or Esc to go back" +} + +func (m *model) renderSlugRules(isVeryCompact, isCompact bool) string { + boxPadding := getPaddingValue(isVeryCompact, isCompact) rulesBoxWidth := getResponsiveWidth(m.width, 10, 30, 60) + rulesBoxStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FAFAFA")). + Foreground(lipgloss.Color(ColorWhite)). Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#7D56F4")). + BorderForeground(lipgloss.Color(ColorPrimary)). Padding(0, boxPadding). MarginTop(1). MarginBottom(1). Width(rulesBoxWidth) - var b strings.Builder - var title string + rulesContent := m.getRulesContent(isVeryCompact, isCompact) + return rulesBoxStyle.Render(rulesContent) + "\n" +} + +func (m *model) getRulesContent(isVeryCompact, isCompact bool) string { if isVeryCompact { - title = "Edit Subdomain" - } else { - title = "🔧 Edit Subdomain" - } - b.WriteString(titleStyle.Render(title)) - b.WriteString("\n\n") - - if m.tunnelType != types.TunnelTypeHTTP { - warningBoxWidth := getResponsiveWidth(m.width, 10, 30, 60) - warningBoxStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#FFA500")). - Background(lipgloss.Color("#3D2000")). - Bold(true). - Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#FFA500")). - Padding(1, boxPadding). - MarginTop(boxMargin). - MarginBottom(boxMargin). - Width(warningBoxWidth) - - var warningText string - if isVeryCompact { - warningText = "⚠️ TCP tunnels don't support custom subdomains." - } else { - warningText = "⚠️ TCP tunnels cannot have custom subdomains. Only HTTP/HTTPS tunnels support subdomain customization." - } - b.WriteString(warningBoxStyle.Render(warningText)) - b.WriteString("\n\n") - - var helpText string - if isVeryCompact { - helpText = "Press any key to go back" - } else { - helpText = "Press Enter or Esc to go back" - } - b.WriteString(helpStyle.Render(helpText)) - return b.String() + return "Rules:\n3-20 chars\na-z, 0-9, -\nNo leading/trailing -" } - var rulesContent string - if isVeryCompact { - rulesContent = "Rules:\n3-20 chars\na-z, 0-9, -\nNo leading/trailing -" - } else if isCompact { - rulesContent = "📋 Rules:\n • 3-20 chars\n • a-z, 0-9, -\n • No leading/trailing -" - } else { - rulesContent = "📋 Rules: \n\t• 3-20 chars \n\t• a-z, 0-9, - \n\t• No leading/trailing -" + if isCompact { + return "📋 Rules:\n • 3-20 chars\n • a-z, 0-9, -\n • No leading/trailing -" } - b.WriteString(rulesBoxStyle.Render(rulesContent)) - b.WriteString("\n") - var instruction string + return "📋 Rules: \n\t• 3-20 chars \n\t• a-z, 0-9, - \n\t• No leading/trailing -" +} + +func (m *model) renderSlugInstruction(isVeryCompact bool) string { + instructionStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorWhite)). + MarginTop(1) + + instruction := "Enter your custom subdomain:" if isVeryCompact { instruction = "Custom subdomain:" - } else { - instruction = "Enter your custom subdomain:" } - b.WriteString(instructionStyle.Render(instruction)) - b.WriteString("\n") + + return instructionStyle.Render(instruction) + "\n" +} + +func (m *model) renderSlugInput(isVeryCompact, isCompact bool) string { + boxPadding := getPaddingValue(isVeryCompact, isCompact) + boxMargin := getMarginValue(isCompact, 1, 2) if m.slugError != "" { - errorInputBoxStyle := lipgloss.NewStyle(). - Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("#FF0000")). - Padding(1, boxPadding). - MarginTop(boxMargin). - MarginBottom(1) - b.WriteString(errorInputBoxStyle.Render(m.slugInput.View())) - b.WriteString("\n") - b.WriteString(errorBoxStyle.Render("❌ " + m.slugError)) - b.WriteString("\n") - } else { - b.WriteString(inputBoxStyle.Render(m.slugInput.View())) - b.WriteString("\n") + return m.renderErrorInput(boxPadding, boxMargin) } + return m.renderNormalInput(boxPadding, boxMargin) +} + +func (m *model) renderErrorInput(boxPadding, boxMargin int) string { + errorInputBoxStyle := lipgloss.NewStyle(). + Border(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color(ColorError)). + Padding(1, boxPadding). + MarginTop(boxMargin). + MarginBottom(1) + + errorBoxStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorError)). + Background(lipgloss.Color(ColorErrorBg)). + Bold(true). + Border(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color(ColorError)). + Padding(0, boxPadding). + MarginTop(1). + MarginBottom(1) + + var b strings.Builder + b.WriteString(errorInputBoxStyle.Render(m.slugInput.View())) + b.WriteString("\n") + b.WriteString(errorBoxStyle.Render("❌ " + m.slugError)) + b.WriteString("\n") + + return b.String() +} + +func (m *model) renderNormalInput(boxPadding, boxMargin int) string { + inputBoxStyle := lipgloss.NewStyle(). + Border(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color(ColorPrimary)). + Padding(1, boxPadding). + MarginTop(boxMargin). + MarginBottom(boxMargin) + + return inputBoxStyle.Render(m.slugInput.View()) + "\n" +} + +func (m *model) renderSlugPreview(isVeryCompact bool) string { previewURL := buildURL(m.protocol, m.slugInput.Value(), m.domain) previewWidth := getResponsiveWidth(m.width, 10, 30, 80) - if len(previewURL) > previewWidth-10 { + if isVeryCompact { previewURL = truncateString(previewURL, previewWidth-10) } previewStyle := lipgloss.NewStyle(). - Foreground(lipgloss.Color("#04B575")). + Foreground(lipgloss.Color(ColorSecondary)). Italic(true). Width(previewWidth) - b.WriteString(previewStyle.Render(fmt.Sprintf("Preview: %s", previewURL))) - b.WriteString("\n") - var helpText string + return previewStyle.Render(fmt.Sprintf("Preview: %s", previewURL)) + "\n" +} + +func (m *model) renderSlugHelp(isVeryCompact bool) string { + helpStyle := lipgloss.NewStyle(). + Foreground(lipgloss.Color(ColorDarkGray)). + Italic(true). + MarginTop(1) + + helpText := "Press Enter to save • CTRL+R for random • Esc to cancel" if isVeryCompact { helpText = "Enter: save • CTRL+R: random • Esc: cancel" - } else { - helpText = "Press Enter to save • CTRL+R for random • Esc to cancel" } - b.WriteString(helpStyle.Render(helpText)) - return b.String() + return helpStyle.Render(helpText) +} + +func getPaddingValue(isVeryCompact, isCompact bool) int { + if isVeryCompact || isCompact { + return 1 + } + return 2 } From 67378aabdaec8764a4450443f707541ad4a4330f Mon Sep 17 00:00:00 2001 From: bagas Date: Tue, 27 Jan 2026 14:22:17 +0700 Subject: [PATCH 45/47] refactor(dockerfile): split long ldflags line --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c1c452d..6b8b765 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,10 @@ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=linux \ go build -trimpath \ - -ldflags="-w -s -X tunnel_pls/version.Version=${VERSION} -X tunnel_pls/version.BuildDate=${BUILD_DATE} -X tunnel_pls/version.Commit=${COMMIT}" \ + -ldflags="-w -s \ + -X tunnel_pls/internal/version.Version=${VERSION} \ + -X tunnel_pls/internal/version.BuildDate=${BUILD_DATE} \ + -X tunnel_pls/internal/version.Commit=${COMMIT}" \ -o /app/tunnel_pls \ . From 1ed845bf2d4d39b67a907850eaf0947b369866da Mon Sep 17 00:00:00 2001 From: bagas Date: Tue, 27 Jan 2026 15:39:45 +0700 Subject: [PATCH 46/47] test(interaction): add unit tests for interaction behavior --- session/interaction/interaction.go | 18 +- session/interaction/interaction_test.go | 2310 +++++++++++++++++++++++ 2 files changed, 2326 insertions(+), 2 deletions(-) create mode 100644 session/interaction/interaction_test.go diff --git a/session/interaction/interaction.go b/session/interaction/interaction.go index 0e6570b..814cd67 100644 --- a/session/interaction/interaction.go +++ b/session/interaction/interaction.go @@ -3,6 +3,7 @@ package interaction import ( "context" "log" + "sync" "tunnel_pls/internal/config" "tunnel_pls/internal/random" "tunnel_pls/session/slug" @@ -52,6 +53,7 @@ type interaction struct { ctx context.Context cancel context.CancelFunc mode types.InteractiveMode + programMu sync.Mutex } func (i *interaction) SetMode(m types.InteractiveMode) { @@ -103,6 +105,10 @@ func (i *interaction) Stop() { if i.cancel != nil { i.cancel() } + + i.programMu.Lock() + defer i.programMu.Unlock() + if i.program != nil { i.program.Kill() i.program = nil @@ -238,6 +244,7 @@ func (i *interaction) Start() { help: help.New(), } + i.programMu.Lock() i.program = tea.NewProgram( m, tea.WithInput(i.channel), @@ -248,13 +255,20 @@ func (i *interaction) Start() { tea.WithoutSignalHandler(), tea.WithFPS(30), ) + i.programMu.Unlock() _, err := i.program.Run() if err != nil { log.Printf("Cannot close tea: %s \n", err) } - i.program.Kill() - i.program = nil + + i.programMu.Lock() + if i.program != nil { + i.program.Kill() + i.program = nil + } + i.programMu.Unlock() + if i.closeFunc != nil { _ = i.closeFunc() } diff --git a/session/interaction/interaction_test.go b/session/interaction/interaction_test.go new file mode 100644 index 0000000..4992093 --- /dev/null +++ b/session/interaction/interaction_test.go @@ -0,0 +1,2310 @@ +package interaction + +import ( + "context" + "errors" + "io" + "net" + "testing" + "time" + "tunnel_pls/types" + + "github.com/charmbracelet/bubbles/key" + "github.com/charmbracelet/bubbles/list" + "github.com/charmbracelet/bubbles/textinput" + tea "github.com/charmbracelet/bubbletea" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "golang.org/x/crypto/ssh" +) + +type MockRandom struct { + mock.Mock +} + +func (m *MockRandom) String(length int) (string, error) { + args := m.Called(length) + return args.String(0), args.Error(1) +} + +type MockConfig struct { + mock.Mock +} + +func (m *MockConfig) Domain() string { return m.Called().String(0) } +func (m *MockConfig) SSHPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPPort() string { return m.Called().String(0) } +func (m *MockConfig) HTTPSPort() string { return m.Called().String(0) } +func (m *MockConfig) TLSEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) TLSRedirect() bool { return m.Called().Bool(0) } +func (m *MockConfig) ACMEEmail() string { return m.Called().String(0) } +func (m *MockConfig) CFAPIToken() string { return m.Called().String(0) } +func (m *MockConfig) ACMEStaging() bool { return m.Called().Bool(0) } +func (m *MockConfig) AllowedPortsStart() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) AllowedPortsEnd() uint16 { return uint16(m.Called().Int(0)) } +func (m *MockConfig) BufferSize() int { return m.Called().Int(0) } +func (m *MockConfig) HeaderSize() int { return m.Called().Int(0) } +func (m *MockConfig) PprofEnabled() bool { return m.Called().Bool(0) } +func (m *MockConfig) PprofPort() string { return m.Called().String(0) } +func (m *MockConfig) Mode() types.ServerMode { return m.Called().Get(0).(types.ServerMode) } +func (m *MockConfig) GRPCAddress() string { return m.Called().String(0) } +func (m *MockConfig) GRPCPort() string { return m.Called().String(0) } +func (m *MockConfig) NodeToken() string { return m.Called().String(0) } +func (m *MockConfig) TLSStoragePath() string { return m.Called().String(0) } +func (m *MockConfig) KeyLoc() string { return m.Called().String(0) } + +type MockSlug struct { + mock.Mock +} + +func (ms *MockSlug) Set(slug string) { ms.Called(slug) } +func (ms *MockSlug) String() string { return ms.Called().String(0) } + +type MockForwarder struct { + mock.Mock +} + +func (m *MockForwarder) CreateForwardedTCPIPPayload(origin net.Addr) []byte { + args := m.Called(origin) + return args.Get(0).([]byte) +} + +func (m *MockForwarder) HandleConnection(dst io.ReadWriter, src ssh.Channel) { + m.Called(dst, src) +} + +func (m *MockForwarder) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockForwarder) TunnelType() types.TunnelType { + args := m.Called() + return args.Get(0).(types.TunnelType) +} + +func (m *MockForwarder) ForwardedPort() uint16 { + args := m.Called() + return args.Get(0).(uint16) +} + +func (m *MockForwarder) SetType(tunnelType types.TunnelType) { + m.Called(tunnelType) +} + +func (m *MockForwarder) SetForwardedPort(port uint16) { + m.Called(port) +} + +func (m *MockForwarder) SetListener(listener net.Listener) { + m.Called(listener) +} + +func (m *MockForwarder) Listener() net.Listener { + args := m.Called() + return args.Get(0).(net.Listener) +} + +func (m *MockForwarder) OpenForwardedChannel(ctx context.Context, origin net.Addr) (ssh.Channel, <-chan *ssh.Request, error) { + args := m.Called(ctx, origin) + if args.Get(0) == nil { + return nil, nil, args.Error(2) + } + return args.Get(0).(ssh.Channel), args.Get(1).(<-chan *ssh.Request), args.Error(2) +} + +type MockSessionRegistry struct { + mock.Mock +} + +func (m *MockSessionRegistry) Update(user string, oldKey, newKey types.SessionKey) error { + args := m.Called(user, oldKey, newKey) + return args.Error(0) +} + +type MockChannel struct { + mock.Mock + data []byte +} + +func (m *MockChannel) Read(b []byte) (n int, err error) { + args := m.Called(b) + return args.Int(0), args.Error(1) +} + +func (m *MockChannel) Write(b []byte) (n int, err error) { + m.data = append(m.data, b...) + args := m.Called(b) + return args.Int(0), args.Error(1) +} + +func (m *MockChannel) Close() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockChannel) CloseWrite() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockChannel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + args := m.Called(name, wantReply, payload) + return args.Bool(0), args.Error(1) +} + +func (m *MockChannel) Stderr() io.ReadWriter { + args := m.Called() + if args.Get(0) == nil { + return nil + } + return args.Get(0).(io.ReadWriter) +} + +type MockCloser struct { + mock.Mock +} + +func (m *MockCloser) Close() error { return m.Called().Error(0) } + +func TestNew(t *testing.T) { + tests := []struct { + name string + user string + }{ + { + name: "creates interaction with default mode", + user: "testuser", + }, + { + name: "creates interaction for different user", + user: "anotheruser", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, tt.user, mockCloser.Close) + + assert.NotNil(t, mockInteraction) + }) + } +} + +func TestInteraction_SetMode(t *testing.T) { + tests := []struct { + name string + mode types.InteractiveMode + }{ + { + name: "set headless mode", + mode: types.InteractiveModeHEADLESS, + }, + { + name: "set interactive mode", + mode: types.InteractiveModeINTERACTIVE, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + mockInteraction.SetMode(tt.mode) + + assert.Equal(t, tt.mode, mockInteraction.Mode()) + }) + } +} + +func TestInteraction_Mode(t *testing.T) { + tests := []struct { + name string + setMode types.InteractiveMode + expected types.InteractiveMode + }{ + { + name: "mode returns set value", + setMode: types.InteractiveModeINTERACTIVE, + expected: types.InteractiveModeINTERACTIVE, + }, + { + name: "mode returns headless value", + setMode: types.InteractiveModeHEADLESS, + expected: types.InteractiveModeHEADLESS, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockInteraction.SetMode(tt.setMode) + assert.Equal(t, tt.expected, mockInteraction.Mode()) + }) + } +} + +func TestInteraction_Send(t *testing.T) { + tests := []struct { + name string + message string + setupChannel bool + channelReturn int + channelError error + wantError bool + }{ + { + name: "send message successfully", + message: "test message", + setupChannel: true, + channelReturn: 12, + channelError: nil, + wantError: false, + }, + { + name: "send message with channel error", + message: "test message", + setupChannel: true, + channelReturn: 0, + channelError: errors.New("channel write error"), + wantError: true, + }, + { + name: "send message without channel", + message: "test message", + setupChannel: false, + wantError: false, + }, + { + name: "send empty message", + message: "", + setupChannel: true, + channelReturn: 0, + channelError: nil, + wantError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + if tt.setupChannel { + mockChannel := &MockChannel{} + mockChannel.On("Write", []byte(tt.message)).Return(tt.channelReturn, tt.channelError) + mockInteraction.SetChannel(mockChannel) + } + + err := mockInteraction.Send(tt.message) + + if tt.wantError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestInteraction_SetWH(t *testing.T) { + tests := []struct { + name string + width int + height int + }{ + { + name: "set large window size", + width: 100, + height: 50, + }, + { + name: "set medium window size", + width: 80, + height: 24, + }, + { + name: "set small window size", + width: 20, + height: 10, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockInteraction.SetWH(tt.width, tt.height) + }) + } +} + +func TestInteraction_SetChannel(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockChannel := &MockChannel{} + mockInteraction.SetChannel(mockChannel) + + mockChannel.On("Write", []byte("test")).Return(4, nil) + err := mockInteraction.Send("test") + assert.NoError(t, err) +} + +func TestInteraction_Redraw(t *testing.T) { + tests := []struct { + name string + description string + }{ + { + name: "redraw interaction", + description: "should not panic when calling redraw", + }, + { + name: "redraw multiple times", + description: "should handle multiple redraws", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockInteraction.Redraw() + }) + } +} + +func TestInteraction_Start(t *testing.T) { + tests := []struct { + name string + mode types.InteractiveMode + tlsEnabled bool + tunnelType types.TunnelType + port uint16 + }{ + { + name: "start in headless mode - should return immediately", + mode: types.InteractiveModeHEADLESS, + tlsEnabled: false, + tunnelType: types.TunnelTypeHTTP, + port: 8080, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + mockInteraction.SetMode(tt.mode) + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(tt.tlsEnabled) + mockForwarder.On("TunnelType").Return(tt.tunnelType) + mockForwarder.On("ForwardedPort").Return(tt.port) + + mockInteraction.Start() + }) + } +} + +func TestModel_Update(t *testing.T) { + tests := []struct { + name string + msg tea.Msg + showingComingSoon bool + editingSlug bool + showingCommands bool + width int + height int + expectedWidth int + expectedHeight int + expectedQuit bool + }{ + { + name: "tick message clears coming soon", + msg: tickMsg{}, + showingComingSoon: true, + editingSlug: false, + showingCommands: false, + expectedQuit: false, + }, + { + name: "window size message - large screen", + msg: tea.WindowSizeMsg{Width: 100, Height: 50}, + expectedWidth: 100, + expectedHeight: 50, + expectedQuit: false, + }, + { + name: "window size message - small screen", + msg: tea.WindowSizeMsg{Width: 60, Height: 20}, + expectedWidth: 60, + expectedHeight: 20, + expectedQuit: false, + }, + { + name: "quit message", + msg: tea.QuitMsg{}, + expectedQuit: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: "http", + tunnelType: types.TunnelTypeHTTP, + port: 8080, + commandList: list.New([]list.Item{}, list.NewDefaultDelegate(), 80, 20), + interaction: mockInteraction.(*interaction), + showingComingSoon: tt.showingComingSoon, + editingSlug: tt.editingSlug, + showingCommands: tt.showingCommands, + width: tt.width, + height: tt.height, + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + result, _ := m.Update(tt.msg) + updatedModel := result.(*model) + + if tt.expectedQuit { + assert.True(t, updatedModel.quitting) + } + + if windowMsg, ok := tt.msg.(tea.WindowSizeMsg); ok { + assert.Equal(t, windowMsg.Width, updatedModel.width) + assert.Equal(t, windowMsg.Height, updatedModel.height) + } + + if _, ok := tt.msg.(tickMsg); ok && tt.showingComingSoon { + assert.False(t, updatedModel.showingComingSoon) + } + }) + } +} + +func TestModel_View(t *testing.T) { + tests := []struct { + name string + quitting bool + showingComingSoon bool + editingSlug bool + showingCommands bool + expectedEmpty bool + }{ + { + name: "quitting returns empty string", + quitting: true, + expectedEmpty: true, + }, + { + name: "showing coming soon view", + showingComingSoon: true, + expectedEmpty: false, + }, + { + name: "editing slug view", + editingSlug: true, + expectedEmpty: false, + }, + { + name: "showing commands view", + showingCommands: true, + expectedEmpty: false, + }, + { + name: "dashboard view (default)", + expectedEmpty: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockSlug.On("String").Return("test-slug") + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: "http", + tunnelType: types.TunnelTypeHTTP, + port: 8080, + commandList: list.New([]list.Item{}, list.NewDefaultDelegate(), 80, 20), + interaction: mockInteraction.(*interaction), + quitting: tt.quitting, + showingComingSoon: tt.showingComingSoon, + editingSlug: tt.editingSlug, + showingCommands: tt.showingCommands, + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + view := m.View() + + if tt.expectedEmpty { + assert.Empty(t, view) + } else { + assert.NotEmpty(t, view) + } + }) + } +} + +func TestInteraction_Integration(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeCallCount := 0 + closeFunc := func() error { + closeCallCount++ + return nil + } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + assert.NotNil(t, mockInteraction) + + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + assert.Equal(t, types.InteractiveModeINTERACTIVE, mockInteraction.Mode()) + + mockChannel := &MockChannel{} + mockInteraction.SetChannel(mockChannel) + + mockChannel.On("Write", []byte("hello")).Return(5, nil) + err := mockInteraction.Send("hello") + assert.NoError(t, err) + mockChannel.AssertExpectations(t) + + mockInteraction.SetWH(80, 24) + + mockInteraction.Redraw() +} + +func TestModel_Update_KeyMessages(t *testing.T) { + tests := []struct { + name string + key tea.KeyMsg + showingComingSoon bool + editingSlug bool + showingCommands bool + description string + }{ + { + name: "key press while showing coming soon", + key: tea.KeyMsg{Type: tea.KeyEnter}, + showingComingSoon: true, + description: "should call comingSoonUpdate", + }, + { + name: "key press while editing slug", + key: tea.KeyMsg{Type: tea.KeyEnter}, + editingSlug: true, + description: "should call slugUpdate", + }, + { + name: "key press while showing commands", + key: tea.KeyMsg{Type: tea.KeyEnter}, + showingCommands: true, + description: "should call commandsUpdate", + }, + { + name: "key press in dashboard view", + key: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'c'}}, + description: "should call dashboardUpdate", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "user", mockCloser.Close) + + mockSlug.On("String").Return("test-slug").Maybe() + mockSessionRegistry.On("Update", mock.Anything, mock.Anything, mock.Anything).Return(nil) + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: "http", + tunnelType: types.TunnelTypeHTTP, + port: 8080, + commandList: list.New([]list.Item{}, list.NewDefaultDelegate(), 80, 20), + interaction: mockInteraction.(*interaction), + showingComingSoon: tt.showingComingSoon, + editingSlug: tt.editingSlug, + showingCommands: tt.showingCommands, + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + result, _ := m.Update(tt.key) + assert.NotNil(t, result) + }) + } +} + +func TestModel_SlugUpdate(t *testing.T) { + tests := []struct { + name string + tunnelType types.TunnelType + keyMsg tea.KeyMsg + inputValue string + setupMocks func(*MockSessionRegistry, *MockSlug, *MockRandom) + expectedEdit bool + expectedError string + shouldSetValue bool + }{ + { + name: "escape key cancels editing", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyEsc}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) {}, + expectedEdit: false, + }, + { + name: "ctrl+c cancels editing", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyCtrlC}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) {}, + expectedEdit: false, + }, + { + name: "enter key saves valid slug", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyEnter}, + inputValue: "my-custom-slug", + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) { + ms.On("String").Return("old-slug") + msr.On("Update", "testuser", + types.SessionKey{Id: "old-slug", Type: types.TunnelTypeHTTP}, + types.SessionKey{Id: "my-custom-slug", Type: types.TunnelTypeHTTP}, + ).Return(nil) + }, + expectedEdit: false, + expectedError: "", + }, + { + name: "enter key with error shows error message", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyEnter}, + inputValue: "invalid", + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) { + ms.On("String").Return("old-slug") + msr.On("Update", "testuser", + types.SessionKey{Id: "old-slug", Type: types.TunnelTypeHTTP}, + types.SessionKey{Id: "invalid", Type: types.TunnelTypeHTTP}, + ).Return(assert.AnError) + }, + expectedEdit: true, + expectedError: assert.AnError.Error(), + }, + { + name: "ctrl+r generates random slug", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyCtrlR}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) { + mr.On("String", 20).Return("random-generated-slug", nil) + }, + expectedEdit: true, + shouldSetValue: true, + }, + { + name: "ctrl+r with error does nothing", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyCtrlR}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) { + mr.On("String", 20).Return("", assert.AnError) + }, + expectedEdit: true, + }, + { + name: "regular key updates input", + tunnelType: types.TunnelTypeHTTP, + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'a'}}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) {}, + expectedEdit: true, + }, + { + name: "tcp tunnel exits editing immediately", + tunnelType: types.TunnelTypeTCP, + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'a'}}, + setupMocks: func(msr *MockSessionRegistry, ms *MockSlug, mr *MockRandom) {}, + expectedEdit: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + ti := textinput.New() + ti.SetValue(tt.inputValue) + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: "http", + tunnelType: tt.tunnelType, + port: 8080, + commandList: list.New([]list.Item{}, list.NewDefaultDelegate(), 80, 20), + slugInput: ti, + editingSlug: true, + interaction: mockInteraction.(*interaction), + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + tt.setupMocks(mockSessionRegistry, mockSlug, mockRandom) + + result, _ := m.slugUpdate(tt.keyMsg) + resultModel := result.(*model) + + assert.Equal(t, tt.expectedEdit, resultModel.editingSlug) + if tt.expectedError != "" { + assert.Equal(t, tt.expectedError, resultModel.slugError) + } else if !tt.expectedEdit { + assert.Equal(t, "", resultModel.slugError) + } + + mockSessionRegistry.AssertExpectations(t) + mockSlug.AssertExpectations(t) + mockRandom.AssertExpectations(t) + }) + } +} + +func TestModel_SlugView(t *testing.T) { + tests := []struct { + name string + width int + tunnelType types.TunnelType + slugError string + contains string + }{ + { + name: "http tunnel - large screen", + width: 100, + tunnelType: types.TunnelTypeHTTP, + contains: "Subdomain", + }, + { + name: "http tunnel - small screen", + width: 50, + tunnelType: types.TunnelTypeHTTP, + contains: "Subdomain", + }, + { + name: "http tunnel - tiny screen", + width: 30, + tunnelType: types.TunnelTypeHTTP, + contains: "Subdomain", + }, + { + name: "http tunnel with error", + width: 100, + tunnelType: types.TunnelTypeHTTP, + slugError: "Slug already exists", + contains: "Slug already exists", + }, + { + name: "tcp tunnel - large screen", + width: 100, + tunnelType: types.TunnelTypeTCP, + contains: "TCP", + }, + { + name: "tcp tunnel - small screen", + width: 50, + tunnelType: types.TunnelTypeTCP, + contains: "TCP", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + ti := textinput.New() + ti.SetValue("test-slug") + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: "http", + tunnelType: tt.tunnelType, + port: 8080, + slugInput: ti, + slugError: tt.slugError, + interaction: mockInteraction.(*interaction), + width: tt.width, + } + + view := m.slugView() + assert.NotEmpty(t, view) + assert.Contains(t, view, tt.contains) + }) + } +} + +func TestModel_ComingSoonUpdate(t *testing.T) { + tests := []struct { + name string + keyMsg tea.KeyMsg + }{ + { + name: "any key dismisses coming soon", + keyMsg: tea.KeyMsg{Type: tea.KeyEnter}, + }, + { + name: "escape key dismisses", + keyMsg: tea.KeyMsg{Type: tea.KeyEsc}, + }, + { + name: "space key dismisses", + keyMsg: tea.KeyMsg{Type: tea.KeySpace}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + m := &model{ + interaction: mockInteraction.(*interaction), + showingComingSoon: true, + } + + result, _ := m.comingSoonUpdate(tt.keyMsg) + resultModel := result.(*model) + + assert.False(t, resultModel.showingComingSoon) + }) + } +} + +func TestModel_ComingSoonView(t *testing.T) { + tests := []struct { + name string + width int + }{ + { + name: "large screen", + width: 100, + }, + { + name: "medium screen", + width: 60, + }, + { + name: "small screen", + width: 50, + }, + { + name: "tiny screen", + width: 30, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + m := &model{ + interaction: mockInteraction.(*interaction), + width: tt.width, + } + + view := m.comingSoonView() + assert.NotEmpty(t, view) + assert.Contains(t, view, "Coming") + }) + } +} + +func TestModel_CommandsUpdate(t *testing.T) { + tests := []struct { + name string + keyMsg tea.KeyMsg + selectedItem list.Item + expectCommands bool + expectEditSlug bool + expectComingSoon bool + }{ + { + name: "escape key closes commands", + keyMsg: tea.KeyMsg{Type: tea.KeyEsc}, + expectCommands: false, + }, + { + name: "q key closes commands", + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'q'}}, + expectCommands: false, + }, + { + name: "enter on slug command starts editing", + keyMsg: tea.KeyMsg{Type: tea.KeyEnter}, + selectedItem: commandItem{name: "slug", desc: "Set custom subdomain"}, + expectCommands: false, + expectEditSlug: true, + }, + { + name: "enter on tunnel-type shows coming soon", + keyMsg: tea.KeyMsg{Type: tea.KeyEnter}, + selectedItem: commandItem{name: "tunnel-type", desc: "Change tunnel type"}, + expectCommands: false, + expectComingSoon: true, + }, + { + name: "arrow key navigates list", + keyMsg: tea.KeyMsg{Type: tea.KeyDown}, + expectCommands: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + mockSlug.On("String").Return("current-slug").Maybe() + + items := []list.Item{ + commandItem{name: "slug", desc: "Set custom subdomain"}, + commandItem{name: "tunnel-type", desc: "Change tunnel type"}, + } + + delegate := list.NewDefaultDelegate() + commandList := list.New(items, delegate, 80, 20) + if tt.selectedItem != nil { + for i, item := range items { + if item.(commandItem).name == tt.selectedItem.(commandItem).name { + commandList.Select(i) + break + } + } + } + + ti := textinput.New() + + m := &model{ + randomizer: mockRandom, + interaction: mockInteraction.(*interaction), + showingCommands: true, + commandList: commandList, + slugInput: ti, + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + result, _ := m.commandsUpdate(tt.keyMsg) + resultModel := result.(*model) + + assert.Equal(t, tt.expectCommands, resultModel.showingCommands) + if tt.expectEditSlug { + assert.True(t, resultModel.editingSlug) + } + if tt.expectComingSoon { + assert.True(t, resultModel.showingComingSoon) + } + }) + } +} + +func TestModel_CommandsView(t *testing.T) { + tests := []struct { + name string + width int + }{ + { + name: "large screen", + width: 100, + }, + { + name: "medium screen", + width: 60, + }, + { + name: "small screen", + width: 50, + }, + { + name: "tiny screen", + width: 30, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + items := []list.Item{ + commandItem{name: "slug", desc: "Set custom subdomain"}, + commandItem{name: "tunnel-type", desc: "Change tunnel type"}, + } + + delegate := list.NewDefaultDelegate() + commandList := list.New(items, delegate, 80, 20) + + m := &model{ + interaction: mockInteraction.(*interaction), + commandList: commandList, + width: tt.width, + } + + view := m.commandsView() + assert.NotEmpty(t, view) + assert.Contains(t, view, "Commands") + }) + } +} + +func TestModel_DashboardUpdate(t *testing.T) { + tests := []struct { + name string + keyMsg tea.KeyMsg + expectQuit bool + expectCommands bool + }{ + { + name: "q key quits", + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'q'}}, + expectQuit: true, + }, + { + name: "ctrl+c quits", + keyMsg: tea.KeyMsg{Type: tea.KeyCtrlC}, + expectQuit: true, + }, + { + name: "c key opens commands", + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'c'}}, + expectCommands: true, + }, + { + name: "other keys do nothing", + keyMsg: tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'x'}}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + m := &model{ + interaction: mockInteraction.(*interaction), + keymap: keymap{ + quit: key.NewBinding( + key.WithKeys("q", "ctrl+c"), + key.WithHelp("q", "quit"), + ), + command: key.NewBinding( + key.WithKeys("c"), + key.WithHelp("c", "commands"), + ), + random: key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r", "random"), + ), + }, + } + + result, _ := m.dashboardUpdate(tt.keyMsg) + resultModel := result.(*model) + + if tt.expectQuit { + assert.True(t, resultModel.quitting) + } + if tt.expectCommands { + assert.True(t, resultModel.showingCommands) + } + }) + } +} + +func TestModel_DashboardView(t *testing.T) { + tests := []struct { + name string + width int + tunnelType types.TunnelType + protocol string + port uint16 + contains string + }{ + { + name: "http tunnel - large screen", + width: 100, + tunnelType: types.TunnelTypeHTTP, + protocol: "http", + contains: "http", + }, + { + name: "https tunnel - large screen", + width: 100, + tunnelType: types.TunnelTypeHTTP, + protocol: "https", + contains: "https", + }, + { + name: "tcp tunnel - large screen", + width: 100, + tunnelType: types.TunnelTypeTCP, + port: 8080, + contains: "tcp", + }, + { + name: "http tunnel - medium screen", + width: 70, + tunnelType: types.TunnelTypeHTTP, + protocol: "http", + contains: "http", + }, + { + name: "http tunnel - small screen", + width: 50, + tunnelType: types.TunnelTypeHTTP, + protocol: "http", + contains: "http", + }, + { + name: "http tunnel - tiny screen", + width: 30, + tunnelType: types.TunnelTypeHTTP, + protocol: "http", + contains: "http", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + mockSlug.On("String").Return("test-slug") + + m := &model{ + randomizer: mockRandom, + domain: "tunnl.live", + protocol: tt.protocol, + tunnelType: tt.tunnelType, + port: tt.port, + interaction: mockInteraction.(*interaction), + width: tt.width, + } + + view := m.dashboardView() + assert.NotEmpty(t, view) + assert.Contains(t, view, tt.contains) + }) + } +} + +func TestGetResponsiveWidth(t *testing.T) { + tests := []struct { + name string + screenWidth int + padding int + minWidth int + maxWidth int + expected int + }{ + { + name: "screen wider than max", + screenWidth: 100, + padding: 10, + minWidth: 20, + maxWidth: 60, + expected: 60, + }, + { + name: "screen narrower than min", + screenWidth: 30, + padding: 10, + minWidth: 40, + maxWidth: 80, + expected: 40, + }, + { + name: "screen within range", + screenWidth: 70, + padding: 10, + minWidth: 20, + maxWidth: 80, + expected: 60, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := getResponsiveWidth(tt.screenWidth, tt.padding, tt.minWidth, tt.maxWidth) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestShouldUseCompactLayout(t *testing.T) { + tests := []struct { + name string + width int + threshold int + expected bool + }{ + { + name: "width below threshold", + width: 50, + threshold: 60, + expected: true, + }, + { + name: "width at threshold", + width: 60, + threshold: 60, + expected: false, + }, + { + name: "width above threshold", + width: 70, + threshold: 60, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := shouldUseCompactLayout(tt.width, tt.threshold) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestTruncateString(t *testing.T) { + tests := []struct { + name string + input string + maxLength int + expected string + }{ + { + name: "string shorter than max", + input: "short", + maxLength: 10, + expected: "short", + }, + { + name: "string equal to max", + input: "exactly10c", + maxLength: 10, + expected: "exactly10c", + }, + { + name: "string longer than max", + input: "this is a very long string", + maxLength: 10, + expected: "this is...", + }, + { + name: "very short max length", + input: "hello", + maxLength: 3, + expected: "hel", + }, + { + name: "max length less than 4", + input: "hello", + maxLength: 2, + expected: "he", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := truncateString(tt.input, tt.maxLength) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestBuildURL(t *testing.T) { + tests := []struct { + name string + protocol string + subdomain string + domain string + expected string + }{ + { + name: "http url", + protocol: "http", + subdomain: "test", + domain: "tunnl.live", + expected: "http://test.tunnl.live", + }, + { + name: "https url", + protocol: "https", + subdomain: "api", + domain: "myapp.io", + expected: "https://api.myapp.io", + }, + { + name: "custom subdomain", + protocol: "http", + subdomain: "my-custom-slug", + domain: "tunnl.live", + expected: "http://my-custom-slug.tunnl.live", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := buildURL(tt.protocol, tt.subdomain, tt.domain) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestTickCmd(t *testing.T) { + tests := []struct { + name string + duration time.Duration + }{ + { + name: "5 second tick", + duration: 5 * time.Second, + }, + { + name: "1 second tick", + duration: 1 * time.Second, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cmd := tickCmd(tt.duration) + assert.NotNil(t, cmd) + }) + } +} + +func TestGetPaddingValue(t *testing.T) { + tests := []struct { + name string + isVeryCompact bool + isCompact bool + expected int + }{ + { + name: "very compact layout", + isVeryCompact: true, + isCompact: false, + expected: 1, + }, + { + name: "compact layout", + isVeryCompact: false, + isCompact: true, + expected: 1, + }, + { + name: "normal layout", + isVeryCompact: false, + isCompact: false, + expected: 2, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := getPaddingValue(tt.isVeryCompact, tt.isCompact) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestGetMarginValue(t *testing.T) { + tests := []struct { + name string + isCompact bool + compactValue int + normalValue int + expected int + }{ + { + name: "compact layout", + isCompact: true, + compactValue: 1, + normalValue: 2, + expected: 1, + }, + { + name: "normal layout", + isCompact: false, + compactValue: 1, + normalValue: 2, + expected: 2, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := getMarginValue(tt.isCompact, tt.compactValue, tt.normalValue) + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestCommandItem(t *testing.T) { + tests := []struct { + name string + item commandItem + wantName string + wantDesc string + }{ + { + name: "slug command", + item: commandItem{name: "slug", desc: "Set custom subdomain"}, + wantName: "slug", + wantDesc: "Set custom subdomain", + }, + { + name: "tunnel-type command", + item: commandItem{name: "tunnel-type", desc: "Change tunnel type"}, + wantName: "tunnel-type", + wantDesc: "Change tunnel type", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.wantName, tt.item.FilterValue()) + assert.Equal(t, tt.wantName, tt.item.Title()) + assert.Equal(t, tt.wantDesc, tt.item.Description()) + }) + } +} + +func TestModel_GetTunnelURL(t *testing.T) { + tests := []struct { + name string + tunnelType types.TunnelType + protocol string + slug string + domain string + port uint16 + expected string + }{ + { + name: "http tunnel", + tunnelType: types.TunnelTypeHTTP, + protocol: "http", + slug: "my-app", + domain: "tunnl.live", + expected: "http://my-app.tunnl.live", + }, + { + name: "https tunnel", + tunnelType: types.TunnelTypeHTTP, + protocol: "https", + slug: "secure-app", + domain: "tunnl.live", + expected: "https://secure-app.tunnl.live", + }, + { + name: "tcp tunnel", + tunnelType: types.TunnelTypeTCP, + domain: "tunnl.live", + port: 8080, + expected: "tcp://tunnl.live:8080", + }, + { + name: "tcp tunnel with different port", + tunnelType: types.TunnelTypeTCP, + domain: "tunnl.live", + port: 3306, + expected: "tcp://tunnl.live:3306", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + mockSlug.On("String").Return(tt.slug).Maybe() + + m := &model{ + domain: tt.domain, + protocol: tt.protocol, + tunnelType: tt.tunnelType, + port: tt.port, + interaction: mockInteraction.(*interaction), + } + + result := m.getTunnelURL() + assert.Equal(t, tt.expected, result) + }) + } +} + +func TestModel_Init(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + mockCloser := &MockCloser{} + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", mockCloser.Close) + + m := &model{ + interaction: mockInteraction.(*interaction), + } + + cmd := m.Init() + assert.NotNil(t, cmd) +} + +func TestInteraction_Start_Interactive(t *testing.T) { + tests := []struct { + name string + tlsEnabled bool + tunnelType types.TunnelType + port uint16 + domain string + }{ + { + name: "interactive mode with http", + tlsEnabled: false, + tunnelType: types.TunnelTypeHTTP, + port: 8080, + domain: "tunnl.live", + }, + { + name: "interactive mode with https", + tlsEnabled: true, + tunnelType: types.TunnelTypeHTTP, + port: 8443, + domain: "secure.tunnl.live", + }, + { + name: "interactive mode with tcp", + tlsEnabled: false, + tunnelType: types.TunnelTypeTCP, + port: 3306, + domain: "db.tunnl.live", + }, + { + name: "interactive mode with tcp and tls enabled", + tlsEnabled: true, + tunnelType: types.TunnelTypeTCP, + port: 5432, + domain: "postgres.tunnl.live", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeCallCount := 0 + closeFunc := func() error { + closeCallCount++ + return nil + } + + mockConfig.On("Domain").Return(tt.domain) + mockConfig.On("TLSEnabled").Return(tt.tlsEnabled) + mockForwarder.On("TunnelType").Return(tt.tunnelType) + mockForwarder.On("ForwardedPort").Return(tt.port) + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + + done := make(chan bool, 1) + go func() { + mockInteraction.Start() + done <- true + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + i.Stop() + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("Start() did not complete in time") + } + + assert.Equal(t, 1, closeCallCount, "close function should be called once") + + mockConfig.AssertExpectations(t) + mockForwarder.AssertExpectations(t) + }) + } +} + +func TestInteraction_Start_ProtocolSelection(t *testing.T) { + tests := []struct { + name string + tlsEnabled bool + expectedProto string + }{ + { + name: "http when TLS disabled", + tlsEnabled: false, + expectedProto: "http", + }, + { + name: "https when TLS enabled", + tlsEnabled: true, + expectedProto: "https", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(tt.tlsEnabled) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + + go func() { + mockInteraction.Start() + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + if i.program != nil { + assert.NotNil(t, i.program, "program should be initialized") + } + + i.Stop() + + mockConfig.AssertExpectations(t) + mockForwarder.AssertExpectations(t) + }) + } +} + +func TestInteraction_Stop(t *testing.T) { + tests := []struct { + name string + setupProgram bool + description string + }{ + { + name: "stop with active program", + setupProgram: true, + description: "should kill program and set to nil", + }, + { + name: "stop without program", + setupProgram: false, + description: "should not panic when program is nil", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + i := mockInteraction.(*interaction) + + if tt.setupProgram { + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(false) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + + go func() { + mockInteraction.Start() + }() + + time.Sleep(50 * time.Millisecond) + } + + assert.NotPanics(t, func() { + i.Stop() + }) + + assert.Nil(t, i.program) + + select { + case <-i.ctx.Done(): + case <-time.After(100 * time.Millisecond): + t.Fatal("context should be cancelled after Stop()") + } + }) + } +} + +func TestInteraction_Start_CommandListSetup(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(false) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, nil) + mockChannel.On("Write", mock.Anything).Return(0, nil) + mockInteraction.SetChannel(mockChannel) + + go func() { + mockInteraction.Start() + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + + assert.NotNil(t, i.program, "program should be initialized") + + i.Stop() +} + +func TestInteraction_Start_TextInputSetup(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(false) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + + go func() { + mockInteraction.Start() + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + i.Stop() + + mockConfig.AssertExpectations(t) + mockForwarder.AssertExpectations(t) +} + +func TestInteraction_Start_CleanupOnExit(t *testing.T) { + tests := []struct { + name string + closeFunc CloseFunc + expectCloseCalled bool + }{ + { + name: "cleanup calls close function", + closeFunc: func() error { + return nil + }, + expectCloseCalled: true, + }, + { + name: "cleanup with nil close function", + closeFunc: nil, + expectCloseCalled: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + + closeCallCount := 0 + var closeFunc CloseFunc + if tt.closeFunc != nil { + closeFunc = func() error { + closeCallCount++ + return tt.closeFunc() + } + } + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(false) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + + done := make(chan bool, 1) + go func() { + mockInteraction.Start() + done <- true + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + i.Stop() + + select { + case <-done: + case <-time.After(2 * time.Second): + t.Fatal("Start() did not complete") + } + + if tt.expectCloseCalled { + assert.Equal(t, 1, closeCallCount, "close function should be called") + } else { + assert.Equal(t, 0, closeCallCount, "close function should not be called when nil") + } + }) + } +} + +func TestInteraction_Start_WithDifferentChannels(t *testing.T) { + tests := []struct { + name string + setupChannel bool + }{ + { + name: "start with channel set", + setupChannel: true, + }, + { + name: "start with nil channel", + setupChannel: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + + mockConfig.On("Domain").Return("tunnl.live") + mockConfig.On("TLSEnabled").Return(false) + mockForwarder.On("TunnelType").Return(types.TunnelTypeHTTP) + mockForwarder.On("ForwardedPort").Return(uint16(8080)) + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeINTERACTIVE) + + if tt.setupChannel { + mockChannel := &MockChannel{} + mockChannel.On("Read", mock.Anything).Return(0, assert.AnError).Maybe() + mockChannel.On("Write", mock.Anything).Return(0, nil).Maybe() + mockInteraction.SetChannel(mockChannel) + } + + go func() { + mockInteraction.Start() + }() + + time.Sleep(50 * time.Millisecond) + + i := mockInteraction.(*interaction) + i.Stop() + + mockConfig.AssertExpectations(t) + mockForwarder.AssertExpectations(t) + }) + } +} + +func TestInteraction_Stop_ContextCancellation(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + i := mockInteraction.(*interaction) + + select { + case <-i.ctx.Done(): + t.Fatal("context should not be cancelled initially") + default: + } + + i.Stop() + + select { + case <-i.ctx.Done(): + case <-time.After(100 * time.Millisecond): + t.Fatal("context should be cancelled after Stop()") + } + + assert.NotPanics(t, func() { + i.Stop() + }) +} + +func TestInteraction_Stop_MultipleCallsSafe(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + i := mockInteraction.(*interaction) + + assert.NotPanics(t, func() { + i.Stop() + i.Stop() + i.Stop() + }) + + assert.Nil(t, i.program) +} + +func TestInteraction_Start_HeadlessMode_NoOp(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + mockInteraction.SetMode(types.InteractiveModeHEADLESS) + + done := make(chan bool, 1) + go func() { + mockInteraction.Start() + done <- true + }() + + select { + case <-done: + case <-time.After(100 * time.Millisecond): + t.Fatal("headless mode should return immediately") + } + + i := mockInteraction.(*interaction) + assert.Nil(t, i.program, "program should not be created in headless mode") + + mockConfig.AssertNotCalled(t, "Domain") + mockConfig.AssertNotCalled(t, "TLSEnabled") + mockForwarder.AssertNotCalled(t, "TunnelType") + mockForwarder.AssertNotCalled(t, "ForwardedPort") +} + +func TestInteraction_New_ContextInitialization(t *testing.T) { + mockRandom := &MockRandom{} + mockConfig := &MockConfig{} + mockSlug := &MockSlug{} + mockForwarder := &MockForwarder{} + mockSessionRegistry := &MockSessionRegistry{} + closeFunc := func() error { return nil } + mockSlug.On("String").Return("test-slug") + + mockInteraction := New(mockRandom, mockConfig, mockSlug, mockForwarder, mockSessionRegistry, "testuser", closeFunc) + i := mockInteraction.(*interaction) + + assert.NotNil(t, i.ctx, "context should be initialized") + assert.NotNil(t, i.cancel, "cancel function should be initialized") + + select { + case <-i.ctx.Done(): + t.Fatal("context should not be cancelled initially") + default: + } +} From fab625e13a9509954114d3e983a056e45bafb336 Mon Sep 17 00:00:00 2001 From: bagas Date: Tue, 27 Jan 2026 16:14:53 +0700 Subject: [PATCH 47/47] docs: show CI/CD status badge and mascot in README --- README.md | 156 +++++++++++------------------------------ docs/images/gopher.png | Bin 0 -> 2045875 bytes 2 files changed, 40 insertions(+), 116 deletions(-) create mode 100644 docs/images/gopher.png diff --git a/README.md b/README.md index 474f430..628efbe 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,22 @@ +
+ + gopher + # Tunnel Please -A lightweight SSH-based tunnel server written in Go that enables secure TCP and HTTP forwarding with an interactive terminal interface for managing connections and custom subdomains. +A lightweight SSH-based tunnel server + +

+ +[![Coverage](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=coverage&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Lines of Code](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=ncloc&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Quality Gate Status](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=alert_status&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Security Issues](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=software_quality_security_issues&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Maintainability Rating](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=software_quality_maintainability_rating&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Reliability Rating](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=software_quality_reliability_rating&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) +[![Security Rating](https://sonar.fossy.my.id/api/project_badges/measure?project=tunnel-please&metric=software_quality_security_rating&token=sqb_0feaed756b943aa75a79499d45d6610c1620830d)](https://sonar.fossy.my.id/dashboard?id=tunnel-please) + +
## Features @@ -17,108 +33,32 @@ A lightweight SSH-based tunnel server written in Go that enables secure TCP and The following environment variables can be configured in the `.env` file: -| Variable | Description | Default | Required | -|----------|-------------|---------|----------| -| `DOMAIN` | Domain name for subdomain routing | `localhost` | No | -| `PORT` | SSH server port | `2200` | No | -| `HTTP_PORT` | HTTP server port | `8080` | No | -| `HTTPS_PORT` | HTTPS server port | `8443` | No | -| `TLS_ENABLED` | Enable TLS/HTTPS | `false` | No | -| `TLS_REDIRECT` | Redirect HTTP to HTTPS | `false` | No | -| `ACME_EMAIL` | Email for Let's Encrypt registration | `admin@` | No | -| `CF_API_TOKEN` | Cloudflare API token for DNS-01 challenge | - | Yes (if auto-cert) | -| `ACME_STAGING` | Use Let's Encrypt staging server | `false` | No | -| `CORS_LIST` | Comma-separated list of allowed CORS origins | - | No | -| `ALLOWED_PORTS` | Port range for TCP tunnels (e.g., 40000-41000) | `40000-41000` | No | -| `BUFFER_SIZE` | Buffer size for io.Copy operations in bytes (4096-1048576) | `32768` | No | -| `PPROF_ENABLED` | Enable pprof profiling server | `false` | No | -| `PPROF_PORT` | Port for pprof server | `6060` | No | -| `MODE` | Runtime mode: `standalone` (default, no gRPC/auth) or `node` (enable gRPC + auth) | `standalone` | No | -| `GRPC_ADDRESS` | gRPC server address/host used in `node` mode | `localhost` | No | -| `GRPC_PORT` | gRPC server port used in `node` mode | `8080` | No | -| `NODE_TOKEN` | Authentication token sent to controller in `node` mode | - (required in `node`) | Yes (node mode) | +| Variable | Description | Default | Required | +|---------------------|-----------------------------------------------------------------------------|-------------------------|---------------------| +| `DOMAIN` | Domain name for subdomain routing | `localhost` | No | +| `PORT` | SSH server port | `2200` | No | +| `HTTP_PORT` | HTTP server port | `8080` | No | +| `HTTPS_PORT` | HTTPS server port | `8443` | No | +| `KEY_LOC` | Path to the private key file | `certs/privkey.pem` | No | +| `TLS_ENABLED` | Enable TLS/HTTPS | `false` | No | +| `TLS_REDIRECT` | Redirect HTTP to HTTPS | `false` | No | +| `TLS_STORAGE_PATH` | Path to store TLS certificates | `certs/tls/` | No | +| `ACME_EMAIL` | Email for Let's Encrypt registration | `admin@` | No | +| `CF_API_TOKEN` | Cloudflare API token for DNS-01 challenge | `-` | Yes (if auto-cert) | +| `ACME_STAGING` | Use Let's Encrypt staging server | `false` | No | +| `CORS_LIST` | Comma-separated list of allowed CORS origins | `-` | No | +| `ALLOWED_PORTS` | Port range for TCP tunnels (e.g., 40000-41000) | `40000-41000` | No | +| `BUFFER_SIZE` | Buffer size for io.Copy operations in bytes (4096-1048576) | `32768` | No | +| `MAX_HEADER_SIZE` | Maximum size of HTTP headers in bytes (4096-131072) | `4096` | No | +| `PPROF_ENABLED` | Enable pprof profiling server | `false` | No | +| `PPROF_PORT` | Port for pprof server | `6060` | No | +| `MODE` | Runtime mode: `standalone` or `node` | `standalone` | No | +| `GRPC_ADDRESS` | gRPC server address/host used in `node` mode | `localhost` | No | +| `GRPC_PORT` | gRPC server port used in `node` mode | `8080` | No | +| `NODE_TOKEN` | Authentication token sent to controller in `node` mode | `-` | Yes (node mode) | **Note:** All environment variables now use UPPERCASE naming. The application includes sensible defaults for all variables, so you can run it without a `.env` file for basic functionality. -### Automatic TLS Certificate Management - -The server supports automatic TLS certificate generation and renewal using [CertMagic](https://github.com/caddyserver/certmagic) with Cloudflare DNS-01 challenge. This is required for wildcard certificate support (`*.yourdomain.com`). - -**Certificate Storage:** -- TLS certificates are stored in `certs/tls/` (relative to application directory) -- User-provided certificates: `certs/tls/cert.pem` and `certs/tls/privkey.pem` -- CertMagic automatic certificates: `certs/tls/certmagic/` -- SSH keys are stored separately in `certs/ssh/` - -**How it works:** -1. If user-provided certificates exist at `certs/tls/cert.pem` and `certs/tls/privkey.pem` and cover both `DOMAIN` and `*.DOMAIN`, they will be used -2. If certificates are missing, expired, expiring within 30 days, or don't cover the required domains, CertMagic will automatically obtain new certificates from Let's Encrypt -3. Certificates are automatically renewed before expiration -4. User-provided certificates support hot-reload (changes detected every 30 seconds) - -**Cloudflare API Token Setup:** - -To use automatic certificate generation, you need a Cloudflare API token with the following permissions: - -1. Go to [Cloudflare Dashboard](https://dash.cloudflare.com/profile/api-tokens) -2. Click "Create Token" -3. Use "Create Custom Token" with these permissions: - - **Zone → Zone → Read** (for all zones or specific zone) - - **Zone → DNS → Edit** (for all zones or specific zone) -4. Copy the token and set it as `CF_API_TOKEN` environment variable - -**Example configuration for automatic certificates:** -```env -DOMAIN=example.com -TLS_ENABLED=true -CF_API_TOKEN=your_cloudflare_api_token_here -ACME_EMAIL=admin@example.com -# ACME_STAGING=true # Uncomment for testing to avoid rate limits -``` - -### SSH Key Auto-Generation - -The application will automatically generate a new 4096-bit RSA key pair at `certs/ssh/id_rsa` if it doesn't exist. This makes it easier to get started without manually creating SSH keys. SSH keys are stored separately from TLS certificates. - -### Memory Optimization - -The application uses a buffer pool with controlled buffer sizes to prevent excessive memory usage under high concurrent loads. The `BUFFER_SIZE` environment variable controls the size of buffers used for io.Copy operations: - -- **Default:** 32768 bytes (32 KB) - Good balance for most scenarios -- **Minimum:** 4096 bytes (4 KB) - Lower memory usage, more CPU overhead -- **Maximum:** 1048576 bytes (1 MB) - Higher throughput, more memory usage - -**Recommended settings based on load:** -- **Low traffic (<100 concurrent):** `BUFFER_SIZE=32768` (default) -- **High traffic (>100 concurrent):** `BUFFER_SIZE=16384` or `BUFFER_SIZE=8192` -- **Very high traffic (>1000 concurrent):** `BUFFER_SIZE=8192` or `BUFFER_SIZE=4096` - -The buffer pool reuses buffers across connections, preventing memory fragmentation and reducing garbage collection pressure. - -### Profiling with pprof - -To enable profiling for performance analysis: - -1. Set `PPROF_ENABLED=true` in your `.env` file -2. Optionally set `PPROF_PORT` to your desired port (default: 6060) -3. Access profiling data at `http://localhost:6060/debug/pprof/` - -Common pprof endpoints: -- `/debug/pprof/` - Index page with available profiles -- `/debug/pprof/heap` - Memory allocation profile -- `/debug/pprof/goroutine` - Stack traces of all current goroutines -- `/debug/pprof/profile` - CPU profile (30-second sample by default) -- `/debug/pprof/trace` - Execution trace - -Example usage with `go tool pprof`: -```bash -# Analyze CPU profile -go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30 - -# Analyze memory heap -go tool pprof http://localhost:6060/debug/pprof/heap -``` - ## Docker Deployment Three Docker Compose configurations are available for different deployment scenarios. Each configuration uses the image `git.fossy.my.id/bagas/tunnel-please:latest`. @@ -197,22 +137,6 @@ docker-compose -f docker-compose.tcp.yml up -d docker-compose -f docker-compose.root.yml down ``` -### Volume Management - -All configurations use a named volume `certs` for persistent storage: -- SSH keys: `/app/certs/ssh/` -- TLS certificates: `/app/certs/tls/` - -To backup certificates: -```bash -docker run --rm -v tunnel_pls_certs:/data -v $(pwd):/backup alpine tar czf /backup/certs-backup.tar.gz -C /data . -``` - -To restore certificates: -```bash -docker run --rm -v tunnel_pls_certs:/data -v $(pwd):/backup alpine tar xzf /backup/certs-backup.tar.gz -C /data -``` - ### Recommendation **Use `docker-compose.root.yml`** for production deployments if you need: diff --git a/docs/images/gopher.png b/docs/images/gopher.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc8fec4d2e7303f102de10ee86f1bfc4f8f94c5 GIT binary patch literal 2045875 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%0D5h6dm(;ouGhA$f{w2O%Qa5lM8~ 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%0D(sN#URVcN-);dsB!P zMz`(+xlH7KBJE4v;f7~#HB|GPB0YvrM(o$fD{$pGPmz!a4sWax#`VXk52{Yf63-J4 zP;`J4Y1Ne=)6ntv0EG{f?_SLSpDtXI7i5i@FC#?G8x=30X!Z}pjHm!Z3z*p?AQH5t zQEfp8IuH(BJ6~{?@>?>46>UI|-bBvSYuyE3&lA|QyOE*yHAeKQIn0S$RRK}PPh75N zLM_OLq;2Brt^LS-?N@>su4PLz>QNuXFP!Ggfm<6gO(ie#hU=UhxBjhkZCBLeu!puw zYm$~FI1kAzGL{_U?&BWdIhK|A)m-K)2x(DygB`Q@wio+^S1AUEo&fwG&sMM%E3Xp? zZy;+l?PItJ>K+gUT8TlfB~wG+okFUiB&Kw!1)<0ir%sY<214}K*Ky~MWX!qM=vf(R z0&3(n_JK<2*M#Sp$rI2gxGQ*vTYO+x(;+6Ssf-2=g;4to>dacorsfVgZ6c5Uv;3C- zLIZXoYr&TQ|6|;5mh07yPm%-uSf2F={X5qk_Xgy%3#3j>EYhFbVynF78=`XgFsx6G zHQZmiqKS0cQ(5EeGZ;Fzkrw9Q#I}49yHeyGe%n57wmV&g$>0(ys%+DF19o)&bRUV0 z^uc`Zo$~eq?r2Lh&EqbU@JMF)pT%mhA=xkpA-7B3Dc;`V4rU;H{ub|{+nN6PeB6>v zORyPDFw3Gy(zIGOXDk7u!DOHegn8rH(Od<;or9RRyfTO>8@R!dd};I&|L>Elk~L&f z8W?=SF6MEHwqWaMa%8qR>8UmINGnaF5b0P*B+zUNkeDu{)3P_P@10R?x)L0r7PonB zH<8kMA3 zHD&tfV^5ef{e}mu&CT}q8g1re!*=tomjfx~MUh2JyMjn%Ole5)xJxP5G0IWtmuYU# z(U+2p*@orO-Lu%YMj34K4wX=iIqvZHJ)~U|>CB(B&-alA!XW3s4GNFIB7{i7;!i0K z5kzoMG3I3SaZPH;$}xKx?UXST6l~ho$%VD~0x5S!oCA`;8%D(I_b4)uU$02G#||Zf zN#q}6(96yLd@X<7>_Ao?puCN#j1h?5Iz6L7xb=ZvdRWcIVtVIH^wQ^o%};-Q)w?sC zW(FT0pzYOCSYIu3);^^nK;wMbihn@2Jeqm{O)P0p{qeQLsYrHbzLOQjp#QY|2liqj zp~#-lCF6{{I4&XfGpzi*4xG`c#R&(6T%fjwdtvvt>Iz7{z^LykaqWu3R@xIXk_Ctv ze=fw=%?Y5uMGlxVE9FQWVEId=apXNzQ2bNGt36F{oWAJD=UA>YhpHJnjf=Xj1%E-E zKzjv?P}6Ard8w)$pSP#?FQ#T|?PK27Z*NM4igz~XiF}u;$#If~u4bp;-5CMgu|1ct(<%(tS=#{>RQyv+7$%Pr%S&jbu@G^W4@{)nyiBcL61u`wI5gFp%&lsBhJDPqt6`1jiL_1?yr>%HFn{C98 z@xHw*u(>AT7g2jZ3rK2~vcD;3PC{tCcFYa+S(!)Qw0B zCgQKjOWO?&XnKOrte2Bl&s;Iej2Xv=>Cy`o8ENDt*pS|G7!)rU69zb51}{19j{2C) zCqT8(_Tjw|tZ0&a!Y4jgr!aN{e*m3PbH;hUMSr)%GTSaWua5aw!t#^3v7L%uY(1j6 z_RNv?Na>r>8suY9us_BOB4jF`=Awxp`cAlPz@u$P*os1*`Q6^HVT|hU^{5k;Cyjo- zD%v2%F6&ANz#MEx&+Q)R3*Gy4)gr--gkJph36bp;X!YM+IXyvYHtEX_DTA*|k2(fH2J!LSvBfmQh_bC_tMB2 z;|4&u`!bWi_dB>z`3c;<`GtclfZK6PKMMcCYoey%%mfGc_78M!Wq57Zae^yR<^EWA zI#J$HjP_MQz7w@9?DsIBWWzVfxom~zN!PErM(pFjH5qF-^&T4TicRKqS%=S~12&`h=toni{;dwyO)a5qRU)!AU4Oo`P z7!x!I(_m1HJTHHhf6MM3@&ISRSbt@&eBwmhRT_rJR#00C?r0cJznmSe;XLK1#nP?W z?iNOoVu154<>XS6r6XPy!N?XLL+v8<&${=sPcxctQGFSu&}-je-Fvh#X^8F{)W$MZ zS2&Wv`2$7a1xVk~t-PZauXQG5KpFYufVqT?rNy-Oj3PCP=zKu_K^{>`@`Rx>n0{j?;Ad7QP?FBbqaevWOz|*`-26mguUg=`f3s0)+YRcow{J{JYQOzAzG!) zf(Tu*hIKeU5T+qIL~41YtRbH(+Ef<#!L{m6!0S(M2rucyW%jGJcWZ{Qxv?*nqDc|| z>yExGf+TSK{+c&!!j|y*f+mYLI}!y#8LEsLC7zL2coc&ytC`0VeMaWC&wd1-8hHEB z!XhM>`r`Vv2wqt7tdStYJ8~*iu82r|+5pzv-QSB%*9gZIXeoo-R7-*is+SdDPW@G6 zM5vduQ;!KqyES}tL07R=-8GINBUoxo%;-c;2vXa>JQP4_YZ4itIxE7ooJ?juv15w- z{oV&t2e)oNBVtVgWB!U|QXk>uEIf_`m$E->q8$ADUK7@-vkN%F!kMitj+n;Q`9Ogfhk=d@H>FZ;- z>zHy2t97WN&7HcB)a*CGavG{q9;rRL5icGjxQ9gOUJt&G?jjnSWZWU(b2%O0x^UST z@AWSah{jrD8Ik0=fif>XvWvLy8>Msn)u@LgtRk5Ms_DNDP z2MQ}RR2ZIh=#~p1jG$@_T;h)U_2)WTZFY2cvizc3o<2+cCI7Z1T6eV}ih9V}pN`WD z_RLR0l^nF8TRoGugh{A4Z!E|gWe2~E**zAQ9zRCn%+G6@zLuff&XTyBrzOR_CXY_B zz{(L|O-Lz+*%e5~w?lnh59AN_4IMOTLJv9iXw9wh6l6ngo^hAC&Wz;~#gMfmS^qmS zFGGhm)%2S16n&2DSm?-^P6b<*Yb>Ynoi6(Jm)qqsk$<%S#jcgdsYNOjt6SV2I|~qj z<6uwZat_1?a<}q(+HNAguJT)i%MQ6^Oj`A62`GdYaO z^}8?p>J(dAN!n7JC-b;}H~j6Gyjy7tn|#&I)&@dkR__-!$tyb9FTBSfA){TaR975X z{6Kb~<1qkafYbcc25f@M@3Xva3pZrzO-6zHgDmKY3Qbv)srr;Q((BtY!9q)GyOu)x z)bW<56g0MdsVLn@k)d~?90PXeuSB$=WwutE^BpRTAbt&t17FZUOO^ufe`z+~bxfEg z(WJv{ByZ{q@Uv zpLElX`zlv^({)3W23As}Ud$nRS)EZdxnJ@POG>N09$&7L*>S@CZ7LSY;cr@cR?B$mtbA*a9o~3#X zAnzfHl%6rR`wuGhm*4X9UmuV@>ng%T@*qTR?!uYAz75608GW_L9`W2j(q>KE#y9>_ zuF3bnfqf>}GXFiHU;^<9ceaYhQXK~`!s8E~t1dI4R=U1*NtM0|W3?|zm^Am`U+m4< zShA1R6->=NRfb<)k1R5VXNcYdiSji_1M8Xn9lr+DC|0e09xXJX4GVvd34su#`U&<_aK zT1k;nxQoUQW5X@2PGKgli`(K1rpId(-mjqDyOVM8DhyRW_twv!+tjKg{`;uQ+B27? z7x;c>tgfos1h21F2c^_nQ*$?U^AVOcadK_RDCw>rg=c z=#9};Or2xfN03~@{1m^v)&raVg6Gr0-=X~Sgu6ium^**k6f4AfjSp;)Y=70HWo+O+UK2B> zpTb@u?*Za@rZz(&gE3}yQ|nbB3uR(X@7#*i{hllP6E7Lkd{CYP)y0ucIccUwRPb2l zb~Y117RdFjHik*)k!#w!pJM0s$666t)k?Fer%o;6b&XH;#0%Z6|H&9gmUzf;TbJ`^MNs!(;?|KsZ2-cyh4 z2cKH<@ht83QYGo|o=Z7f5~^h8i=p*|LMRSe|2r|_LS129E^G`_1PEf z8JDlELt>lJi%0UuexR&>`RjUVOFj51WR!FI{(=k2LdAky))?;yHL!MeyJ0#MPm|1p zwtfdz!(WXxsRkzLB8E?(H(F_;4K{|-XvZ068PPARvCI>%2{+6VW#nhJc@vkQ8`!sh z!wHw*PU`}@6wbEWxnsFLU#x3odFte!km9Tkcr_pXyH6>vt~l~8U=HP)cr(w$xlpl) z<3Di8%D#EL?LC6VLAE1_#~Fv{dWlt2^abj6ljJ#c;XByy2gJ>HO+32u1C zc7fYyI2UOLw&gZHW$o^&3L2L!!&EfN@Eb}u{#zrmG}hwm+#@p?``p|@w?6(@nOf2h z);h@K7-T=hJ@Wgo2Uh}*JO$Z0P=pwGz+yG$Z(|l}_5<-h8OX2Y+B*J0;p?dXOa)W? zT7yUoGob+}f+wnhAnGU9D1phuRN%}IhqUK9CZbUGfB5f zh21+8Y5ETMAZ6NqY7?Q<|S1sPzG5y7s{s7W3a4UQccVf~pS{5xnm=2!#9 z{SDg(VND;mIdbhU5`;;UC_`AnnkRng|BlTMj^N8Nw4z{nGAU0T9j1R_=|kkI*Y33; zzL|NH-0(VNPL3wUlllhv;_O$Bj!DYp#HR3M8KQTAnwhqic}AjZs~Y>cx+4_!T0Il$ zW|4b_uYlR?cF`l(-*UF|p>=>JBT{}!!!8RH$e^)jEo92LjWWTLr?Z&O&;3699(EVD zPWx;{`Hjmk#FUA(vD*YO;|Q)CSz6uJaN~61&)x4*UE{{�{`ld3QTElJDxL0>DZ96PN`tRqNaKYlnL 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 &(3{7HMYC*@Y(z8hh{*ni3ITT|AB{9C#B_oE1P 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�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

8#O43HIb7CDR2P?$k{I`t~4KNN2+58i4m` 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¨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%0AyOS!xc29 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
RbGFP|r+{`{Gn>W0ET)RT4OjJB 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¥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%0AdRnL3yAG6bHddR(V2jP^SN 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

j^RcfyujS`B^uQs8xNZ**6cU6zT62PdEVS>s*$ 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

+|dv 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≺%)aq#R3;N}!oAyyE{EBmE$e19CHKl9 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

nJ`wD#s7ltuxE%AJ6$XS_V7O4#mK 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≪N# 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 z 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

rYO(bfRqabLiYPGv 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 literal 0 HcmV?d00001