Initial import

This commit is contained in:
2025-09-26 08:49:53 +02:00
commit a76650da35
35 changed files with 4660 additions and 0 deletions

89
proxy/mitm/config.go Normal file
View File

@@ -0,0 +1,89 @@
package mitm
import (
"crypto/x509/pkix"
"github.com/hashicorp/hcl/v2"
)
const (
DefaultCommonName = "Styx Certificate Authority"
DefaultDays = 3
)
type Config struct {
CA *CAConfig `hcl:"ca,block"`
Key *KeyConfig `hcl:"key,block"`
Cache *CacheConfig `hcl:"cache,block"`
}
type CAConfig struct {
Cert string `hcl:"cert"`
Key string `hcl:"key,optional"`
Days int `hcl:"days,optional"`
KeyType string `hcl:"key_type,optional"`
Bits int `hcl:"bits,optional"`
Name string `hcl:"name,optional"`
Country string `hcl:"country,optional"`
Organization string `hcl:"organization,optional"`
Unit string `hcl:"unit,optional"`
Locality string `hcl:"locality,optional"`
Province string `hcl:"province,optional"`
Address []string `hcl:"address,optional"`
PostalCode string `hcl:"postal_code,optional"`
}
func (config CAConfig) DN() pkix.Name {
var name = pkix.Name{
CommonName: config.Name,
StreetAddress: config.Address,
}
if config.Name == "" {
name.CommonName = DefaultCommonName
}
if config.Country != "" {
name.Country = append(name.Country, config.Country)
}
if config.Organization != "" {
name.Organization = append(name.Organization, config.Organization)
}
if config.Unit != "" {
name.OrganizationalUnit = append(name.OrganizationalUnit, config.Unit)
}
if config.Locality != "" {
name.Locality = append(name.Locality, config.Locality)
}
if config.Province != "" {
name.Province = append(name.Province, config.Province)
}
if config.PostalCode != "" {
name.PostalCode = append(name.PostalCode, config.PostalCode)
}
return name
}
type KeyConfig struct {
Type string `hcl:"type,optional"`
Bits int `hcl:"bits,optional"`
Pool int `hcl:"pool,optional"`
}
var defaultKeyConfig = KeyConfig{
Type: "rsa",
Bits: 2048,
Pool: 5,
}
type CacheConfig struct {
Type string `hcl:"type"`
Body hcl.Body `hcl:",remain"`
}
type MemoryCacheConfig struct {
Size int `hcl:"size,optional"`
}
type DiskCacheConfig struct {
Path string `hcl:"path"`
Expire float64 `hcl:"expire,optional"`
}