proxy

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AuthMiddleware

func AuthMiddleware(logger *zap.Logger, jwtMgr *auth.Manager, next http.Handler) http.Handler

AuthMiddleware 验证请求头 X-PairProxy-Auth 中的 JWT,提取 claims 写入 context。 验证失败返回 401,通过后继续处理。

func ClaimsFromContext

func ClaimsFromContext(ctx context.Context) *auth.JWTClaims

ClaimsFromContext 从 context 中取 JWT claims。

func RecoveryMiddleware

func RecoveryMiddleware(logger *zap.Logger, next http.Handler) http.Handler

RecoveryMiddleware 捕获 panic,返回 500,避免进程崩溃。

func RequestIDFromContext

func RequestIDFromContext(ctx context.Context) string

RequestIDFromContext 从 context 中取 request_id。

func RequestIDMiddleware

func RequestIDMiddleware(logger *zap.Logger, next http.Handler) http.Handler

RequestIDMiddleware 为每个请求生成 UUID 写入 context 和响应头 X-Request-ID。

Types

type CProxy

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

CProxy c-proxy 核心处理器。

func NewCProxy

func NewCProxy(
	logger *zap.Logger,
	tokenStore *auth.TokenStore,
	tokenDir string,
	balancer lb.Balancer,
	cacheDir string,
) (*CProxy, error)

NewCProxy 创建 CProxy。 tokenDir: token 文件所在目录(通常是 ~/.pairproxy) balancer: 上游 s-proxy 负载均衡器 cacheDir: 路由表持久化目录(可为空)

func (*CProxy) Handler

func (cp *CProxy) Handler() http.Handler

Handler 构建完整 c-proxy 处理链:

RecoveryMiddleware → RequestIDMiddleware → CProxyHandler

type LLMTarget

type LLMTarget struct {
	URL    string
	APIKey string
}

LLMTarget 代表一个 LLM 后端(含 API Key)。

type SProxy

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

SProxy s-proxy 核心处理器

func NewSProxy

func NewSProxy(
	logger *zap.Logger,
	jwtMgr *auth.Manager,
	writer *db.UsageWriter,
	targets []LLMTarget,
) (*SProxy, error)

NewSProxy 创建 SProxy。 targets 至少需要一个 LLM 后端。

func NewSProxyWithCluster

func NewSProxyWithCluster(
	logger *zap.Logger,
	jwtMgr *auth.Manager,
	writer *db.UsageWriter,
	targets []LLMTarget,
	clusterMgr *cluster.Manager,
	sourceNode string,
) (*SProxy, error)

NewSProxyWithCluster 创建带集群管理器的 SProxy(sp-1 模式)。

func (*SProxy) Handler

func (sp *SProxy) Handler() http.Handler

Handler 构建并返回完整的 s-proxy HTTP 处理链:

RecoveryMiddleware → RequestIDMiddleware → AuthMiddleware → [QuotaMiddleware] → SProxyHandler

func (*SProxy) HealthHandler

func (sp *SProxy) HealthHandler() http.HandlerFunc

HealthHandler 返回 s-proxy 健康检查处理器,供 /health 注册使用。

func (*SProxy) SetQuotaChecker

func (sp *SProxy) SetQuotaChecker(checker *quota.Checker)

SetQuotaChecker 设置配额检查器(可选;设置后每次请求前检查配额)。

Jump to

Keyboard shortcuts

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