diff --git a/.drone.yml b/.drone.yml index d715e37..c63a2d8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,6 +14,7 @@ steps: - apk --no-cache add build-base - go vet -v -buildvcs=false ./checker - go vet -v -buildvcs=false ./token-validator + - cd ./pkg/token-validator && go test && cd - - cd ./pkg/minichecker/cmd && go vet -v -buildvcs=false . && cd - - cd ./pkg/arp-spoofer/cmd && go vet -v -buildvcs=false . && go build -buildvcs=false -v -ldflags="-s -w" . && cd - - cd ./pkg/login-validator/cmd && go vet -v -buildvcs=false . && go build -buildvcs=false -v -ldflags="-s -w" . && cd - @@ -46,6 +47,7 @@ steps: - apk --no-cache add build-base - go vet -v -buildvcs=false ./checker - go vet -v -buildvcs=false ./token-validator + - cd ./pkg/token-validator && go test && cd - - cd ./pkg/minichecker/cmd && go vet -v -buildvcs=false . && cd - - cd ./pkg/arp-spoofer/cmd && go vet -v -buildvcs=false . && go build -buildvcs=false -v -ldflags="-s -w" . && cd - - cd ./pkg/login-validator/cmd && go vet -v -buildvcs=false . && go build -buildvcs=false -v -ldflags="-s -w" . && cd - diff --git a/token-validator/ip.go b/token-validator/ip.go index 9805562..206f526 100644 --- a/token-validator/ip.go +++ b/token-validator/ip.go @@ -18,9 +18,10 @@ func init() { } func IPSuffix(s *adlin.Student, network net.IPNet) net.IP { - ipshift := s.Id*4 + 10 + ipshift := s.Id*4 + 7 - myIP := network.IP + myIP := make(net.IP, len(network.IP)) + copy(myIP, network.IP) if ipshift > 254 { myIP[len(myIP)-2] += byte(ipshift / 254) diff --git a/token-validator/ip_test.go b/token-validator/ip_test.go new file mode 100644 index 0000000..688dc14 --- /dev/null +++ b/token-validator/ip_test.go @@ -0,0 +1,53 @@ +package main + +import ( + "log" + "net" + "testing" + + "git.nemunai.re/srs/adlin/libadlin" +) + +func TestIPSuffix(t *testing.T) { + network := net.IPNet{IP: net.ParseIP("172.23.0.0"), Mask: net.CIDRMask(17, 32)} + + std := &adlin.Student{Id: 1} + ip := IPSuffix(std, network) + + log.Println(ip) + + if ip.String() != "172.23.0.11" { + t.Fatalf(`IPSuffix(%v, %q) = %q, expected %q`, std, network.String(), ip.String(), "172.23.0.11") + } + + std = &adlin.Student{Id: 60} + ip = IPSuffix(std, network) + + if ip.String() != "172.23.0.247" { + t.Fatalf(`IPSuffix(%v, %q) = %q, expected %q`, std, network.String(), ip.String(), "172.23.0.247") + } + + std = &adlin.Student{Id: 62} + ip = IPSuffix(std, network) + + if ip.String() != "172.23.1.1" { + t.Fatalf(`IPSuffix(%v, %q) = %q, expected %q`, std, network.String(), ip.String(), "172.23.1.1") + } + + std = &adlin.Student{Id: 70} + ip = IPSuffix(std, network) + + if ip.String() != "172.23.1.33" { + t.Fatalf(`IPSuffix(%v, %q) = %q, expected %q`, std, network.String(), ip.String(), "172.23.1.33") + } + + // Other network + network = net.IPNet{IP: net.ParseIP("192.168.42.0"), Mask: net.CIDRMask(17, 32)} + + std = &adlin.Student{Id: 70} + ip = IPSuffix(std, network) + + if ip.String() != "192.168.43.33" { + t.Fatalf(`IPSuffix(%v, %q) = %q, expected %q`, std, network.String(), ip.String(), "192.168.43.33") + } +}