configs

package
v1.6.5 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2026 License: GPL-3.0 Imports: 14 Imported by: 22

README

server/configs

Overview

Configuration loading and validation for the server. Parses config files, environment overrides, and applies defaults. Key routines cover crack, database, and HTTP C2 within the configs subsystem.

Go Files

  • crack.go – Defines configuration structures for cracking infrastructure.
  • database.go – Loads and validates database connection settings.
  • http-c2.go – Parses HTTP C2 configuration blocks.
  • http-c2_test.go (tests) – Tests HTTP C2 configuration parsing logic.
  • server.go – Top-level server configuration loading and defaults.

Documentation

Index

Constants

View Source
const (
	// Sqlite - SQLite protocol
	Sqlite = "sqlite3"
	// Postgres - Postgresql protocol
	Postgres = "postgresql"
	// MySQL - MySQL protocol
	MySQL = "mysql"
)
View Source
const (
	DefaultChromeBaseVer = 106
	DefaultMacOSVer      = "10_15_7"
)

Variables

View Source
var (
	ErrMissingCookies             = errors.New("server config must specify at least one cookie")
	ErrMissingExtensions          = errors.New("implant config must specify at least one file extension")
	ErrMissingFiles               = errors.New("implant config must specify at least one files value")
	ErrMissingPaths               = errors.New("implant config must specify at least one paths value")
	ErrDuplicateC2ProfileName     = errors.New("C2 Profile name is already in use")
	ErrMissingC2ProfileName       = errors.New("C2 Profile name is required")
	ErrC2ProfileNotFound          = errors.New("C2 Profile does not exist")
	ErrUserAgentIllegalCharacters = errors.New("user agent cannot contain the ` character")
)
View Source
var (

	// Pro-tip: You can use ChatGPT to generate this stuff for you!
	Cookies = []string{
		"JSESSIONID",
		"rememberMe",
		"authToken",
		"userId",
		"userName",
		"language",
		"theme",
		"locale",
		"currency",
		"lastVisited",
		"loggedIn",
		"userRole",
		"cartId",
		"accessToken",
		"refreshToken",
		"consent",
		"notificationPreference",
		"userSettings",
		"sessionTimeout",
		"error",
		"errorMessage",
		"successMessage",
		"infoMessage",
		"warningMessage",
		"errorMessageKey",
		"successMessageKey",
		"infoMessageKey",
		"warningMessageKey",
		"sessionID",
		"userID",
		"username",
		"authToken",
		"rememberMe",
		"language",
		"theme",
		"locale",
		"currency",
		"lastVisit",
		"loggedIn",
		"userRole",
		"cartID",
		"accessToken",
		"refreshToken",
		"consent",
		"notificationPref",
		"userSettings",
		"sessionTimeout",
		"visitedPages",
		"favoriteItems",
		"searchHistory",
		"basketID",
		"promoCode",
		"campaignID",
		"referrer",
		"source",
		"utmCampaign",
		"utmSource",
		"utmMedium",
		"utmContent",
		"utmTerm",
		"deviceType",
		"OSVersion",
		"browser",
		"screenResolution",
		"timezone",
		"firstVisit",
		"feedbackGiven",
		"surveyID",
		"errorAlerts",
		"successAlerts",
		"infoAlerts",
		"warningAlerts",
		"darkMode",
		"emailSubscription",
		"privacyConsent",
		"PHPSESSID",
		"SID",
		"SSID",
		"APISID",
		"csrf-state",
		"AWSALBCORS",
	}
	Files = []string{}/* 109 elements not displayed */

	Paths = []string{
		"js",
		"umd",
		"assets",
		"bundle",
		"bundles",
		"scripts",
		"script",
		"javascripts",
		"javascript",
		"jscript",
		"js",
		"scripts",
		"assets",
		"src",
		"lib",
		"public",
		"static",
		"app",
		"www",
		"dist",
		"frontend",
		"client",
		"server",
		"resources",
		"jsfiles",
		"javascript",
		"jslib",
		"jslibraries",
		"jsdir",
		"jsfolder",
		"jsfilesdir",
		"jsfilesfolder",
		"scriptsdir",
		"assetsjs",
		"srcjs",
		"srcscripts",
		"libjs",
		"libscripts",
		"publicjs",
		"publicscripts",
		"staticjs",
		"staticscripts",
		"appjs",
		"appscripts",
		"distjs",
		"distscripts",
		"frontendjs",
		"frontendscripts",
		"clientjs",
		"clientscripts",
		"serverjs",
		"resourcesjs",
		"jsfilesjs",
		"jsfilesscripts",
		"javascriptjs",
		"jslibscripts",
		"assetsjs",
		"assetsjsscripts",
		"assetsjs",
		"assetsscripts",
		"srcjs",
		"srcjsscripts",
		"srcscripts",
		"srcscripts",
		"libjs",
		"libjsscripts",
	}
)
View Source
var (
	// ErrInvalidDialect - An invalid dialect was specified
	ErrInvalidDialect = errors.New("invalid SQL Dialect")
)

Functions

func CheckHTTPC2ConfigErrors added in v1.5.4

func CheckHTTPC2ConfigErrors(config *clientpb.HTTPC2Config) error

CheckHTTPC2ConfigErrors - Get the current HTTP C2 config

func GenerateDefaultHTTPC2Config added in v1.6.0

func GenerateDefaultHTTPC2Config() *clientpb.HTTPC2Config

func GenerateDefaultHTTPC2Cookies added in v1.6.0

func GenerateDefaultHTTPC2Cookies() []*clientpb.HTTPC2Cookie

func GenerateHTTPC2DefaultPathSegment added in v1.6.0

func GenerateHTTPC2DefaultPathSegment() []*clientpb.HTTPC2PathSegment

func GetDatabaseConfigPath

func GetDatabaseConfigPath() string

GetDatabaseConfigPath - File path to config.json

func GetServerConfigPath

func GetServerConfigPath() string

GetServerConfigPath - File path to config.json

func LoadCrackConfig added in v1.6.0

func LoadCrackConfig() (*clientpb.CrackConfig, error)

LoadCrackConfig - Get config value

func SaveCrackConfig added in v1.6.0

func SaveCrackConfig(config *clientpb.CrackConfig) error

Save - Save config file to disk

Types

type DNSJobConfig

type DNSJobConfig struct {
	Domains    []string `json:"domains"`
	Canaries   bool     `json:"canaries"`
	Host       string   `json:"host"`
	Port       uint16   `json:"port"`
	JobID      string   `json:"job_id"`
	EnforceOTP bool     `json:"enforce_otp"`
}

DNSJobConfig - Persistent DNS job config

type DaemonConfig

type DaemonConfig struct {
	Host      string `json:"host"`
	Port      int    `json:"port"`
	Tailscale bool   `json:"tailscale"`
}

DaemonConfig - Configure daemon mode

type DatabaseConfig

type DatabaseConfig struct {
	Dialect  string `json:"dialect"`
	Database string `json:"database"`
	Username string `json:"username"`
	Password string `json:"password"`
	Host     string `json:"host"`
	Port     uint16 `json:"port"`

	Params map[string]string `json:"params"`

	MaxIdleConns int `json:"max_idle_conns"`
	MaxOpenConns int `json:"max_open_conns"`

	LogLevel string `json:"log_level"`
}

DatabaseConfig - Server config

func GetDatabaseConfig

func GetDatabaseConfig() *DatabaseConfig

GetDatabaseConfig - Get config value

func (*DatabaseConfig) DSN

func (c *DatabaseConfig) DSN() (string, error)

DSN - Get the db connections string https://github.com/go-sql-driver/mysql#examples

func (*DatabaseConfig) Save

func (c *DatabaseConfig) Save() error

Save - Save config file to disk

type HTTPJobConfig

type HTTPJobConfig struct {
	Domain          string `json:"domain"`
	Host            string `json:"host"`
	Port            uint16 `json:"port"`
	Secure          bool   `json:"secure"`
	Website         string `json:"website"`
	Cert            []byte `json:"cert"`
	Key             []byte `json:"key"`
	ACME            bool   `json:"acme"`
	JobID           string `json:"job_id"`
	EnforceOTP      bool   `json:"enforce_otp"`
	LongPollTimeout int64  `json:"long_poll_timeout"`
	LongPollJitter  int64  `json:"long_poll_jitter"`
	RandomizeJARM   bool   `json:"randomize_jarm"`
}

HTTPJobConfig - Persistent HTTP job config

type HttpDefaultConfig added in v1.6.0

type HttpDefaultConfig struct {
	Headers []models.HttpC2Header `json:"headers"`
}

http server defaults for anonymous requests

type JobConfig

type JobConfig struct {
	Multiplayer []*MultiplayerJobConfig `json:"multiplayer"`
	MTLS        []*MTLSJobConfig        `json:"mtls,omitempty"`
	WG          []*WGJobConfig          `json:"wg,omitempty"`
	DNS         []*DNSJobConfig         `json:"dns,omitempty"`
	HTTP        []*HTTPJobConfig        `json:"http,omitempty"`
}

JobConfig - Restart Jobs on Load

type LogConfig

type LogConfig struct {
	Level              int  `json:"level"`
	GRPCUnaryPayloads  bool `json:"grpc_unary_payloads"`
	GRPCStreamPayloads bool `json:"grpc_stream_payloads"`
	TLSKeyLogger       bool `json:"tls_key_logger"`
}

LogConfig - Server logging config

type MTLSJobConfig

type MTLSJobConfig struct {
	Host  string `json:"host"`
	Port  uint16 `json:"port"`
	JobID string `json:"job_id"`
}

MTLSJobConfig - Per-type job configs

type MultiplayerJobConfig added in v1.5.0

type MultiplayerJobConfig struct {
	Host      string `json:"host"`
	Port      uint16 `json:"port"`
	JobID     string `json:"job_id"`
	Tailscale bool   `json:"tailscale"`
}

type ServerConfig

type ServerConfig struct {
	DaemonMode   bool               `json:"daemon_mode"`
	DaemonConfig *DaemonConfig      `json:"daemon"`
	Logs         *LogConfig         `json:"logs"`
	Watchtower   *WatchTowerConfig  `json:"watch_tower"`
	GoProxy      string             `json:"go_proxy"`
	HTTPDefaults *HttpDefaultConfig `json:"http_default"`
	DonutBypass  int                `json:"donut_bypass"` // 1=skip, 2=abort on fail, 3=continue on fail.

	// 'GOOS/GOARCH' -> CC path
	CC  map[string]string `json:"cc"`
	CXX map[string]string `json:"cxx"`
}

ServerConfig - Server config

func GetServerConfig

func GetServerConfig() *ServerConfig

GetServerConfig - Get config value

func (*ServerConfig) Save

func (c *ServerConfig) Save() error

Save - Save config file to disk

type WGJobConfig added in v1.4.9

type WGJobConfig struct {
	Port    uint16 `json:"port"`
	NPort   uint16 `json:"nport"`
	KeyPort uint16 `json:"key_port"`
	JobID   string `json:"job_id"`
}

WGJobConfig - Per-type job configs

type WatchTowerConfig added in v1.4.17

type WatchTowerConfig struct {
	VTApiKey          string `json:"vt_api_key"`
	XForceApiKey      string `json:"xforce_api_key"`
	XForceApiPassword string `json:"xforce_api_password"`
}

WatchTowerConfig - Watch Tower job config

Jump to

Keyboard shortcuts

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