Documentation
¶
Index ¶
- Variables
- func Bindings(c *container.Container, m *Manager)
- func GetBalance(ctx context.Context) (float64, error)
- func Protect() router.Middleware
- func ProtectWithOptions(opts MiddlewareOptions) router.Middleware
- type BalanceResponse
- type Client
- func (c *Client) CreateTask(ctx context.Context, payload TaskPayload) (*CreateTaskResponse, error)
- func (c *Client) GetBalance(ctx context.Context) (float64, error)
- func (c *Client) GetTaskResult(ctx context.Context, taskID string) (*GetTaskResultResponse, error)
- func (c *Client) Solve(ctx context.Context, payload TaskPayload) (*Solution, error)
- type Config
- type CreateTaskRequest
- type CreateTaskResponse
- type GetTaskResultRequest
- type GetTaskResultResponse
- type Manager
- type MiddlewareOptions
- type MockSolver
- type Plugin
- type Solution
- type TaskPayload
- type TaskType
- type VerificationResult
- type Verifier
Constants ¶
This section is empty.
Variables ¶
var ( // ErrMockSolveFailed is returned when mock solver fails intentionally in tests. ErrMockSolveFailed = errors.New("captcha: mock solve failed") // ErrPluginNotRegistered is returned when captcha facade is called before plugin registration. ErrPluginNotRegistered = errors.New("captcha: plugin not registered. Call app.Use(captcha.New())") )
Functions ¶
func GetBalance ¶
GetBalance checks remaining credits on Nimbus Cloud.
func Protect ¶
func Protect() router.Middleware
Protect returns a Nimbus HTTP middleware that verifies incoming captchas.
Usage:
app.Router.Post("/submit", captcha.Protect(), SubmitHandler)
app.Router.Post("/register", captcha.ProtectWithOptions(captcha.MiddlewareOptions{Provider: "recaptcha"}), RegisterHandler)
func ProtectWithOptions ¶
func ProtectWithOptions(opts MiddlewareOptions) router.Middleware
ProtectWithOptions returns middleware configured with custom options.
Types ¶
type BalanceResponse ¶
type BalanceResponse struct {
ErrorId int `json:"errorId"`
ErrorCode string `json:"errorCode,omitempty"`
ErrorDescription string `json:"errorDescription,omitempty"`
Balance float64 `json:"balance"`
}
BalanceResponse returns remaining user credit or quota on Nimbus Cloud.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client handles interaction with the Nimbus Cloud Captcha API (CapSolver alternative).
func (*Client) CreateTask ¶
func (c *Client) CreateTask(ctx context.Context, payload TaskPayload) (*CreateTaskResponse, error)
CreateTask submits a new captcha task to Nimbus Cloud.
func (*Client) GetBalance ¶
GetBalance checks the remaining credit on the Nimbus Cloud API key.
func (*Client) GetTaskResult ¶
GetTaskResult queries the current status and solution for a task ID.
type Config ¶
type Config struct {
// APIKey for Nimbus Cloud Captcha API (or CapSolver fallback).
APIKey string
// Endpoint base URL for Nimbus Cloud Captcha API.
// Default: "https://api.nimbuscloud.io/v1/captcha"
Endpoint string
// DefaultProvider for verification (e.g. "turnstile", "recaptcha", "hcaptcha", "nimbus").
DefaultProvider string
// ProviderSecretKeys maps provider names to secret keys used for server verification.
// e.g. {"turnstile": "0x4AAAAAA...", "recaptcha": "6LeIx..."}
ProviderSecretKeys map[string]string
// MockMode when set to true will auto-solve tasks and approve verification
// without reaching out to external networks (useful in dev/tests).
MockMode bool
// Timeout for captcha solving requests. Default: 60s.
Timeout time.Duration
// PollingInterval for checking task status. Default: 1s.
PollingInterval time.Duration
// MaxRetries for task polling. Default: 60.
MaxRetries int
}
Config defines settings for the Captcha plugin.
func DefaultConfig ¶
func DefaultConfig() *Config
DefaultConfig returns the standard default settings.
type CreateTaskRequest ¶
type CreateTaskRequest struct {
ClientKey string `json:"clientKey"`
Task TaskPayload `json:"task"`
AppID string `json:"appID,omitempty"`
}
CreateTaskRequest is the request sent to Nimbus Cloud API.
type CreateTaskResponse ¶
type CreateTaskResponse struct {
ErrorId int `json:"errorId"`
ErrorCode string `json:"errorCode,omitempty"`
ErrorDescription string `json:"errorDescription,omitempty"`
Status string `json:"status,omitempty"` // "idle", "processing", "ready"
TaskID string `json:"taskId,omitempty"`
}
CreateTaskResponse is returned after task submission.
func CreateTask ¶
func CreateTask(ctx context.Context, payload TaskPayload) (*CreateTaskResponse, error)
CreateTask submits a captcha task to Nimbus Cloud.
type GetTaskResultRequest ¶
type GetTaskResultRequest struct {
ClientKey string `json:"clientKey"`
TaskID string `json:"taskId"`
}
GetTaskResultRequest requests the outcome of an async captcha task.
type GetTaskResultResponse ¶
type GetTaskResultResponse struct {
ErrorId int `json:"errorId"`
ErrorCode string `json:"errorCode,omitempty"`
ErrorDescription string `json:"errorDescription,omitempty"`
Status string `json:"status"` // "processing" or "ready"
Solution Solution `json:"solution,omitempty"`
}
GetTaskResultResponse returns status and solution of a captcha task.
func GetTaskResult ¶
func GetTaskResult(ctx context.Context, taskID string) (*GetTaskResultResponse, error)
GetTaskResult gets status or solution of an async task.
type Manager ¶
Manager coordinates Captcha Client and Verifier operations.
func NewManager ¶
NewManager creates a Manager instance from configuration.
type MiddlewareOptions ¶
MiddlewareOptions configures captcha protection middleware behavior.
func DefaultMiddlewareOptions ¶
func DefaultMiddlewareOptions() MiddlewareOptions
DefaultMiddlewareOptions provides sensible default form/header field names.
type MockSolver ¶
MockSolver provides mock responses for unit testing without external network calls.
func (*MockSolver) Solve ¶
func (m *MockSolver) Solve(ctx context.Context, payload TaskPayload) (*Solution, error)
Solve returns a pre-configured mock Solution.
type Plugin ¶
type Plugin struct {
nimbus.BasePlugin
// contains filtered or unexported fields
}
Plugin integrates Nimbus Cloud Captcha solver & verifier into Nimbus apps.
func (*Plugin) DefaultConfig ¶
DefaultConfig returns default configuration parameters.
func (*Plugin) Middleware ¶
func (p *Plugin) Middleware() map[string]router.Middleware
Middleware exposes named middleware for application router.
type Solution ¶
type Solution struct {
Token string `json:"token,omitempty"`
GRecaptchaResponse string `json:"gRecaptchaResponse,omitempty"`
Text string `json:"text,omitempty"` // OCR result
UserAgent string `json:"userAgent,omitempty"`
RespKey string `json:"respKey,omitempty"`
SolveTime time.Duration `json:"solveTime,omitempty"`
Extra map[string]any `json:"extra,omitempty"`
}
Solution contains the resulting token or solved output.
type TaskPayload ¶
type TaskPayload struct {
Type TaskType `json:"type"`
WebsiteURL string `json:"websiteURL,omitempty"`
WebsiteKey string `json:"websiteKey,omitempty"`
PageAction string `json:"pageAction,omitempty"`
MinScore float64 `json:"minScore,omitempty"`
Body string `json:"body,omitempty"` // For ImageToText base64 string
Proxy string `json:"proxy,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
MetaData map[string]any `json:"metadata,omitempty"`
ExtraParams map[string]string `json:"extraParams,omitempty"`
}
TaskPayload defines parameters required to solve a captcha.
type TaskType ¶
type TaskType string
TaskType represents the kind of Captcha challenge to solve.
const ( // TurnstileTaskTypes TaskTypeTurnstile TaskType = "TurnstileTask" TaskTypeTurnstileProxyless TaskType = "TurnstileTaskProxyless" // ReCaptchaTaskTypes TaskTypeReCaptchaV2 TaskType = "ReCaptchaV2Task" TaskTypeReCaptchaV2Proxyless TaskType = "ReCaptchaV2TaskProxyless" TaskTypeReCaptchaV3 TaskType = "ReCaptchaV3Task" TaskTypeReCaptchaV3Proxyless TaskType = "ReCaptchaV3TaskProxyless" TaskTypeReCaptchaEnterprise TaskType = "ReCaptchaV2EnterpriseTask" // HCaptchaTaskTypes TaskTypeHCaptcha TaskType = "HCaptchaTask" TaskTypeHCaptchaProxyless TaskType = "HCaptchaTaskProxyless" // Vision & OCR TaskTypeImageToText TaskType = "ImageToTextTask" // Advanced TaskTypeGeeTest TaskType = "GeeTestTask" TaskTypeAmazonWAF TaskType = "AmazonWAFTask" )
type VerificationResult ¶
type VerificationResult struct {
Success bool `json:"success"`
ChallengeTS time.Time `json:"challenge_ts,omitempty"`
Hostname string `json:"hostname,omitempty"`
Score float64 `json:"score,omitempty"`
Action string `json:"action,omitempty"`
ErrorCodes []string `json:"error-codes,omitempty"`
}
VerificationResult contains the result of validating a user's submitted token (Turnstile/reCAPTCHA).
type Verifier ¶
type Verifier struct {
// contains filtered or unexported fields
}
Verifier interface handles server-side token validation.
func NewVerifier ¶
NewVerifier creates a new Verifier instance.
func (*Verifier) VerifyToken ¶
func (v *Verifier) VerifyToken(ctx context.Context, provider, token, remoteIP string) (*VerificationResult, error)
VerifyToken validates a token submitted by a client frontend against the designated provider.