Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
889 B go
/* SPDX-License-Identifier: MIT
 *
 * Phobos
 */

package manager

import (
	"fmt"

	"golang.org/x/sys/windows"
	"golang.zx2c4.com/wireguard/windows/conf"
	"golang.zx2c4.com/wireguard/windows/tunnel/winipcfg"
)

func findAdapterLUID(name string) (winipcfg.LUID, error) {
	interfaces, err := winipcfg.GetAdaptersAddresses(windows.AF_UNSPEC, winipcfg.GAAFlagIncludeAll)
	if err != nil {
		return 0, err
	}
	for _, iface := range interfaces {
		if iface.FriendlyName() == name {
			return iface.LUID, nil
		}
	}
	return 0, fmt.Errorf("no adapter named %q", name)
}

func attachSocks5RuntimeCounters(config *conf.Config) error {
	luid, err := findAdapterLUID(config.Name)
	if err != nil {
		return err
	}
	row, err := luid.Interface()
	if err != nil {
		return err
	}
	config.Obfuscation.RxBytes = conf.Bytes(row.InOctets)
	config.Obfuscation.TxBytes = conf.Bytes(row.OutOctets)
	return nil
}