Help us shape the future of Go! Take the 2026 Go Developer Survey

socks4

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2021 License: MIT Imports: 8 Imported by: 0

README

go-socks4

Socks4 implementation for Go, compatible with net/proxy

Features

  • socks4
  • socks4a

Usage

package main

import (
	"errors"
	"log"
	"net/url"

	"github.com/Bogdan-D/go-socks4"
	"golang.org/x/net/proxy"
)

func main() {
	addr, _ := url.Parse("socks4://ip:port")

	dialer, err := proxy.FromURL(addr, proxy.Direct)
	conn, err := dialer.Dial("tcp", "google.com:80")
	if err != nil {
		// handle error
		if errors.Is(err, socks4.ErrDialFailed) {
			log.Printf("invalid proxy server %s", addr)
			return
		}
		if errors.Is(err, socks4.ErrConnRejected) {
			log.Printf("google.com:80: %s", err)
			return
		}
	}
	// use opened network connection
	_ = conn
}

Tests

If you know proxy server to connect to tests should be running like this go test -socks4.url=socks4://localhost:8080

Documentation

Overview

Package socks4 implements socks4 and socks4a support for net/proxy

Index

Constants

View Source
const (
	ErrWrongNetwork    = typedErrors.String("network should be tcp or tcp4")          // socks4 protocol supports only tcp/ip v4 connections
	ErrDialFailed      = typedErrors.String("socks4 dial")                            // connection to socks4 server failed
	ErrWrongAddr       = typedErrors.String("wrong addr: %s")                         // provided addr should be in format host:port
	ErrConnRejected    = typedErrors.String("connection to remote host was rejected") // connection was rejected by proxy
	ErrIdentRequired   = typedErrors.String("valid ident required")                   // proxy requires valid ident. Check Ident variable
	ErrIO              = typedErrors.String("i\\o error")                             // some network i\o error happened
	ErrHostUnknown     = typedErrors.String("unable to find IP address of host %s")   // host dns resolving failed
	ErrInvalidResponse = typedErrors.String("unknown socks4 server response %v")      // proxy reply contains invalid data
)

Variables

View Source
var Ident = "nobody@0.0.0.0"

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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