Documentation
¶
Index ¶
- Variables
- func AppendAPIKeyToURL(apiUrl string, apiKey string) string
- func EnumerateServiceAccounts(projectNum string, workerCount int, updateCh chan ScanUpdate, rawKey string) ([]string, error)
- func GetBrandIdentity(projectNumber string) (map[string]interface{}, error)
- func GetP4SACount() int
- func MultipartAllDiscoveries(apiKey string, cleannames []string) (map[string]bool, error)
- func ReqHeaderOnly(req http.Request, apiKey string, useActualResolvedName bool) (*http.Response, error)
- func ReqWithBackoff(req *http.Request, client *http.Client) (*http.Response, error)
- func TestKeyServicePair(target TargetKey, service string, useGet bool) (bool, error)
- type APIsConfig
- type ElapsedCombo
- type EmailTemplate
- type IdentityToolkitResponse
- type IdpConfig
- type ProjectDetails
- type ScanUpdate
- type Service
- type ServiceMeta
- type TargetKey
Constants ¶
This section is empty.
Variables ¶
var ApiMetadata map[string]ServiceMeta // a shell of what was :3 (check embed.go to understand where it comes from, it's all initialized there)
var GetClient = sync.OnceValue(func() *http.Client { return &http.Client{ Transport: &http3.Transport{ EnableDatagrams: true, TLSClientConfig: &tls.Config{ ServerName: "googleapis.com", NextProtos: []string{http3.NextProtoH3}, }, Dial: func(ctx context.Context, addr string, tlsCfg *tls.Config, cfg *quic.Config) (*quic.Conn, error) { hostAddr, _ := net.ResolveUDPAddr("udp4", "0.0.0.0:0") listener, err := net.ListenUDP("udp", hostAddr) if err != nil { log.Printf("Failed to listen on local port - try raising ulimit? Error: %v", err) } var udpAddr *net.UDPAddr udpAddr, err = net.ResolveUDPAddr("udp", addr) if err != nil { log.Printf("Failed to resolve %s", addr) return nil, err } StoredResolvedAddr = udpAddr return quic.Dial(ctx, listener, udpAddr, tlsCfg, cfg) }, }, Timeout: 20 * time.Second, } })
var GoogleApiList []string
var KeyLogFile os.File
var SANames map[string]string
var StoredResolvedAddr *net.UDPAddr
Functions ¶
func AppendAPIKeyToURL ¶
Parse query params and append the API key to it.
func GetBrandIdentity ¶
func GetP4SACount ¶
func GetP4SACount() int
func MultipartAllDiscoveries ¶
WIP - just need to figure out how to use this damn thing I was hoping to be able to multipart it and send multiple services with one big payload. But I might just remove this. Http3 lets me send the data in one big stream, there's no need for this anymore. Still, it has potential for other uses if I keep digging.
func ReqHeaderOnly ¶
func ReqHeaderOnly(req http.Request, apiKey string, useActualResolvedName bool) (*http.Response, error)
For handling errors with a retry for the connection stream itself - otherwise i'd be limited to retrying the domain name resolution / dial
func ReqWithBackoff ¶
Types ¶
type APIsConfig ¶
type ElapsedCombo ¶
func ScanServices ¶
func ScanServices(target TargetKey, gapiServices []Service, workerCount int, timingEnabled bool, updateCh chan<- ScanUpdate, useGet bool) ([]string, int, *ElapsedCombo)
This function is maybe my finest work, but the decrement thing might be better off for interactive mode handled in main.go? Either way, all functioons should strive to be as clear-cut like this. Does its thing and thats it.
type EmailTemplate ¶
type IdentityToolkitResponse ¶
type IdentityToolkitResponse struct {
ProjectDetails
Error *struct {
Message string `json:"message"`
Code int `json:"code"`
Status string `json:"status"`
Details []struct {
Metadata struct {
Consumer string `json:"consumer"`
} `json:"metadata"`
} `json:"details"`
} `json:"error"`
}
type IdpConfig ¶
type IdpConfig struct {
Enabled bool `json:"enabled,omitempty"`
WhitelistedAudiences []string `json:"whitelistedAudiences,omitempty"`
Secret string `json:"secret,omitempty"`
ExperimentPercent int32 `json:"experimentPercent,omitempty"`
ClientId string `json:"clientId,omitempty"`
Provider string `json:"provider,omitempty"`
}
type ProjectDetails ¶
type ProjectDetails struct {
ProjectId string `json:"projectId,omitempty"`
AuthorizedDomains []string `json:"authorizedDomains,omitempty"`
UseEmailSending bool `json:"useEmailSending,omitempty"`
EnableAnonymousUser bool `json:"enableAnonymousUser,omitempty"`
AllowPasswordUser bool `json:"allowPasswordUser,omitempty"`
ApiKey string `json:"apiKey,omitempty"`
DynamicLinksDomain string `json:"dynamicLinksDomain,omitempty"`
ChangeEmailTemplate *EmailTemplate `json:"changeEmailTemplate,omitempty"`
ResetPasswordTemplate *EmailTemplate `json:"resetPasswordTemplate,omitempty"`
LegacyResetPasswordTemplate *EmailTemplate `json:"legacyResetPasswordTemplate,omitempty"`
VerifyEmailTemplate *EmailTemplate `json:"verifyEmailTemplate,omitempty"`
IdpConfig []IdpConfig `json:"idpConfig,omitempty"`
}
func TestKeyValidity ¶
func TestKeyValidity(apiKey string) (bool, *ProjectDetails, error)