util

package
v2.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2024 License: MIT Imports: 103 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddAllowFirewallRule

func AddAllowFirewallRule()

func AllContainerIsRunning

func AllContainerIsRunning(pod *corev1.Pod) bool

func BytesToInt

func BytesToInt(b []byte) uint32

func CanI

func CanI(clientset *kubernetes.Clientset, sa, ns string, resource *rbacv1.PolicyRule) (allowed bool, err error)

func CleanExtensionLib

func CleanExtensionLib()

func ConvertToKubeconfigBytes

func ConvertToKubeconfigBytes(factory cmdutil.Factory) ([]byte, string, error)

func ConvertToTempKubeconfigFile

func ConvertToTempKubeconfigFile(kubeconfigBytes []byte) (string, error)

func Deduplicate

func Deduplicate(cidr []*net.IPNet) (result []*net.IPNet)

func DeleteAllowFirewallRule

func DeleteAllowFirewallRule()

func DeleteBlockFirewallRule

func DeleteBlockFirewallRule(_ context.Context)

func DialSshRemote

func DialSshRemote(conf *SshConfig) (*ssh.Client, error)

DialSshRemote https://github.com/golang/go/issues/21478

func DoReq

func DoReq(request *http.Request) (body []byte, err error)

func FindAllowFirewallRule

func FindAllowFirewallRule() bool

func FindContainerByName added in v2.2.2

func FindContainerByName(pod *corev1.Pod, name string) (*corev1.Container, int)

func FindContainerEnv added in v2.2.2

func FindContainerEnv(container *corev1.Container, key string) (value string, found bool)

func GetAnnotation

func GetAnnotation(f util.Factory, ns string, resources string) (map[string]string, error)

func GetAvailableTCPPortOrDie

func GetAvailableTCPPortOrDie() (int, error)

func GetAvailableUDPPortOrDie

func GetAvailableUDPPortOrDie() (int, error)

func GetCIDRElegant

func GetCIDRElegant(clientset *kubernetes.Clientset, restclient *rest.RESTClient, restconfig *rest.Config, namespace string) (result []*net.IPNet, err1 error)

GetCIDRElegant 1) dump cluster info 2) grep cmdline 3) create svc + cat *.conflist 4) create svc + get pod ip with svc mask

func GetCIDRFromResourceUgly

func GetCIDRFromResourceUgly(clientset *kubernetes.Clientset, namespace string) ([]*net.IPNet, error)

GetCIDRFromResourceUgly use podIP/24 and serviceIP/16 as cidr

func GetClient

func GetClient() (*client.Client, *command.DockerCli, error)

func GetClusterId

func GetClusterId(client v12.ConfigMapInterface) (types.UID, error)

func GetDNSIPFromDnsPod

func GetDNSIPFromDnsPod(clientset *kubernetes.Clientset) (ips []string, err error)

func GetDNSServiceIPFromPod

func GetDNSServiceIPFromPod(clientset *kubernetes.Clientset, restclient *rest.RESTClient, config *rest.Config, podName, namespace string) (*dns.ClientConfig, error)

func GetEnv

func GetEnv(ctx context.Context, f util.Factory, ns, pod string) (map[string][]string, error)

func GetIPBaseNic

func GetIPBaseNic() (*net.IPNet, error)

func GetKrb5Path

func GetKrb5Path() string

func GetKubeconfigPath

func GetKubeconfigPath(f cmdutil.Factory) string

func GetLocalTunIP

func GetLocalTunIP(tunName string) (net.IP, net.IP, error)

func GetManifest

func GetManifest(httpCli *http.Client, os string, arch string) (version string, commit string, url string, err error)

func GetPodTemplateSpecPath

func GetPodTemplateSpecPath(u *unstructured.Unstructured) (*v1.PodTemplateSpec, []string, error)

func GetTlsDomain

func GetTlsDomain(namespace string) string

func GetTopOwnerReference

func GetTopOwnerReference(factory util.Factory, namespace, workload string) (*resource.Info, error)

func GetTopOwnerReferenceBySelector

func GetTopOwnerReferenceBySelector(factory util.Factory, namespace, selector string) (sets.Set[string], error)

GetTopOwnerReferenceBySelector assume pods, controller has same labels

func GetTunDevice

func GetTunDevice(ips ...net.IP) (*net.Interface, error)

func GetTunDeviceByConn

func GetTunDeviceByConn(tun net.Conn) (*net.Interface, error)

func GetUnstructuredObject

func GetUnstructuredObject(f util.Factory, namespace string, workloads string) (*resource.Info, error)

func GetUnstructuredObjectBySelector

func GetUnstructuredObjectBySelector(f util.Factory, namespace string, selector string) ([]*resource.Info, error)

func GetUnstructuredObjectList

func GetUnstructuredObjectList(f util.Factory, namespace string, workloads []string) ([]*resource.Info, error)

func Heartbeats

func Heartbeats()

func InitLogger

func InitLogger(debug bool)

func InitLoggerForServer added in v2.2.2

func InitLoggerForServer(debug bool)

func IsAdmin

func IsAdmin() bool

func IsIPv4

func IsIPv4(packet []byte) bool

func IsIPv6

func IsIPv6(packet []byte) bool

func IsPortListening

func IsPortListening(port int) bool

func IsSameCluster

func IsSameCluster(client v12.ConfigMapInterface, namespace string, clientB v12.ConfigMapInterface, namespaceB string) (bool, error)

func IsWindows

func IsWindows() bool

func Merge

func Merge[K comparable, V any](fromMap, ToMap map[K]V) map[K]V

func MoveToTemp

func MoveToTemp()

func ParsePort added in v2.2.3

func ParsePort(str string) v1.ContainerPort

ParsePort tcp/udp/remote:local

func Ping

func Ping(targetIP string) (bool, error)

func PortForwardPod

func PortForwardPod(config *rest.Config, clientset *rest.RESTClient, podName, namespace string, portPair []string, readyChan chan struct{}, stopChan <-chan struct{}) error

func PortMapUntil added in v2.2.2

func PortMapUntil(ctx context.Context, conf *SshConfig, remote, local netip.AddrPort) error

func Print

func Print(writer io.Writer, slogan string)

func PrintStatus

func PrintStatus(pod *corev1.Pod, writer io.Writer)

func PrintStatusInline

func PrintStatusInline(pod *corev1.Pod) string

func PullImage

func PullImage(ctx context.Context, platform *v1.Platform, cli *client.Client, c *command.DockerCli, img string, out io.Writer) error

func RemoteRun

func RemoteRun(client *ssh.Client, cmd string, env map[string]string) (output []byte, errOut []byte, err error)

func RolloutStatus

func RolloutStatus(ctx1 context.Context, factory cmdutil.Factory, namespace, workloads string, timeout time.Duration) (err error)

func RunCmd

func RunCmd(exe string, args []string) error

func RunCmdWithElevated

func RunCmdWithElevated(exe string, args []string) error

func RunWithElevated

func RunWithElevated()

func RunWithRollingOutWithChecker

func RunWithRollingOutWithChecker(cmd *osexec.Cmd, checker func(log string)) (string, string, error)

func RunningInContainer

func RunningInContainer() bool

RunningInContainer returns true if the current process runs from inside a docker container.

func SCPAndExec added in v2.2.2

func SCPAndExec(stdout, stderr io.Writer, client *ssh.Client, filename, to string, commands ...string) error

SCPAndExec copy file to remote and exec command

func Shell

func Shell(clientset *kubernetes.Clientset, restclient *rest.RESTClient, config *rest.Config, podName, containerName, namespace string, cmd []string) (string, error)

func SshJump added in v2.2.3

func SshJump(ctx context.Context, conf *SshConfig, flags *pflag.FlagSet, print bool) (path string, err error)

func SshJumpAndSetEnv added in v2.2.3

func SshJumpAndSetEnv(ctx context.Context, conf *SshConfig, flags *pflag.FlagSet, print bool) error

func StartupPProf

func StartupPProf(port int)

func TransferImage

func TransferImage(ctx context.Context, conf *SshConfig, imageSource, imageTarget string, out io.Writer) error

TransferImage 1) if not special ssh config, just pull image and tag and push 2) if special ssh config, pull image, tag image, save image and scp image to remote, load image and push

func UnzipKubeVPNIntoFile

func UnzipKubeVPNIntoFile(zipFile, filename string) error

func WaitPod

func WaitPod(podInterface v12.PodInterface, list v1.ListOptions, checker func(*corev1.Pod) bool) error

func WaitPodToBeReady

func WaitPodToBeReady(ctx context.Context, podInterface v12.PodInterface, selector v1.LabelSelector) error

func WaitPortToBeFree

func WaitPortToBeFree(ctx context.Context, port int) error

Types

type AssetsEntity

type AssetsEntity struct {
	Url                string         `json:"url"`
	Id                 int64          `json:"id"`
	NodeId             string         `json:"node_id"`
	Name               string         `json:"name"`
	Label              string         `json:"label"`
	Uploader           UploaderEntity `json:"uploader"`
	ContentType        string         `json:"content_type"`
	State              string         `json:"state"`
	Size               int64          `json:"size"`
	DownloadCount      int64          `json:"download_count"`
	CreatedAt          string         `json:"created_at"`
	UpdatedAt          string         `json:"updated_at"`
	BrowserDownloadUrl string         `json:"browser_download_url"`
}

type AuthorEntity

type AuthorEntity struct {
	Login             string `json:"login"`
	Id                int64  `json:"id"`
	NodeId            string `json:"node_id"`
	AvatarUrl         string `json:"avatar_url"`
	GravatarId        string `json:"gravatar_id"`
	Url               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	FollowersUrl      string `json:"followers_url"`
	FollowingUrl      string `json:"following_url"`
	GistsUrl          string `json:"gists_url"`
	StarredUrl        string `json:"starred_url"`
	SubscriptionsUrl  string `json:"subscriptions_url"`
	OrganizationsUrl  string `json:"organizations_url"`
	ReposUrl          string `json:"repos_url"`
	EventsUrl         string `json:"events_url"`
	ReceivedEventsUrl string `json:"received_events_url"`
	Type              string `json:"type"`
	SiteAdmin         bool   `json:"site_admin"`
}

type ForwardedPort

type ForwardedPort struct {
	Local  uint16
	Remote uint16
}

ForwardedPort contains a Local:Remote port pairing.

type Krb5ClientState

type Krb5ClientState int
const (
	ContextFlagREADY = 128
	/* initiator states */
	InitiatorStart Krb5ClientState = iota
	InitiatorRestart
	InitiatorWaitForMutal
	InitiatorReady
)

type Krb5InitiatorClient

type Krb5InitiatorClient struct {
	// contains filtered or unexported fields
}

func NewKrb5InitiatorClientWithCache

func NewKrb5InitiatorClientWithCache(krb5Conf, cacheFile string) (kcl Krb5InitiatorClient, err error)

func NewKrb5InitiatorClientWithKeytab

func NewKrb5InitiatorClientWithKeytab(username string, krb5Conf, keytabConf string) (kcl Krb5InitiatorClient, err error)

func NewKrb5InitiatorClientWithPassword

func NewKrb5InitiatorClientWithPassword(username, password, krb5Conf string) (kcl Krb5InitiatorClient, err error)

func (*Krb5InitiatorClient) DeleteSecContext

func (k *Krb5InitiatorClient) DeleteSecContext() error

func (*Krb5InitiatorClient) GetMIC

func (k *Krb5InitiatorClient) GetMIC(micFiled []byte) ([]byte, error)

func (*Krb5InitiatorClient) InitSecContext

func (k *Krb5InitiatorClient) InitSecContext(target string, token []byte, isGSSDelegCreds bool) ([]byte, bool, error)

type PodRouteConfig

type PodRouteConfig struct {
	LocalTunIPv4 string
	LocalTunIPv6 string
}

type PortForwarder

type PortForwarder struct {
	Ready chan struct{}
	// contains filtered or unexported fields
}

PortForwarder knows how to listen for local connections and forward them to a remote pod via an upgraded HTTP request.

func NewOnAddresses

func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)

NewOnAddresses creates a new PortForwarder with custom listen addresses.

func (*PortForwarder) Close

func (pf *PortForwarder) Close()

Close stops all listeners of PortForwarder.

func (*PortForwarder) ForwardPorts

func (pf *PortForwarder) ForwardPorts() error

ForwardPorts formats and executes a port forwarding request. The connection will remain open until stopChan is closed.

func (*PortForwarder) GetPorts

func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error)

GetPorts will return the ports that were forwarded; this can be used to retrieve the locally-bound port in cases where the input was port 0. This function will signal an error if the Ready channel is nil or if the listeners are not ready yet; this function will succeed after the Ready channel has been closed.

type ReactionsEntity

type ReactionsEntity struct {
	Url        string `json:"url"`
	TotalCount int64  `json:"total_count"`
	Normal1    int64  `json:"+1"`
	Normal11   int64  `json:"-1"`
	Laugh      int64  `json:"laugh"`
	Hooray     int64  `json:"hooray"`
	Confused   int64  `json:"confused"`
	Heart      int64  `json:"heart"`
	Rocket     int64  `json:"rocket"`
	Eyes       int64  `json:"eyes"`
}

type RootEntity

type RootEntity struct {
	Url             string          `json:"url"`
	AssetsUrl       string          `json:"assets_url"`
	UploadUrl       string          `json:"upload_url"`
	HtmlUrl         string          `json:"html_url"`
	Id              int64           `json:"id"`
	NodeId          string          `json:"node_id"`
	TagName         string          `json:"tag_name"`
	TargetCommitish string          `json:"target_commitish"`
	Name            string          `json:"name"`
	Draft           bool            `json:"draft"`
	Prerelease      bool            `json:"prerelease"`
	CreatedAt       string          `json:"created_at"`
	PublishedAt     string          `json:"published_at"`
	Assets          []AssetsEntity  `json:"assets"`
	TarballUrl      string          `json:"tarball_url"`
	ZipballUrl      string          `json:"zipball_url"`
	Body            string          `json:"body"`
	Reactions       ReactionsEntity `json:"reactions"`
}

type SshConfig

type SshConfig struct {
	Addr             string
	User             string
	Password         string
	Keyfile          string
	ConfigAlias      string
	RemoteKubeconfig string
	// GSSAPI
	GSSAPIKeytabConf string
	GSSAPIPassword   string
	GSSAPICacheFile  string
}

func ParseSshFromRPC

func ParseSshFromRPC(sshJump *rpc.SshJump) *SshConfig

func (*SshConfig) ToRPC

func (s *SshConfig) ToRPC() *rpc.SshJump

type UploaderEntity

type UploaderEntity struct {
	Login             string `json:"login"`
	Id                int64  `json:"id"`
	NodeId            string `json:"node_id"`
	AvatarUrl         string `json:"avatar_url"`
	GravatarId        string `json:"gravatar_id"`
	Url               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	FollowersUrl      string `json:"followers_url"`
	FollowingUrl      string `json:"following_url"`
	GistsUrl          string `json:"gists_url"`
	StarredUrl        string `json:"starred_url"`
	SubscriptionsUrl  string `json:"subscriptions_url"`
	OrganizationsUrl  string `json:"organizations_url"`
	ReposUrl          string `json:"repos_url"`
	EventsUrl         string `json:"events_url"`
	ReceivedEventsUrl string `json:"received_events_url"`
	Type              string `json:"type"`
	SiteAdmin         bool   `json:"site_admin"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL