mirror of
https://github.com/verssache/chatgpt-creator.git
synced 2026-05-17 06:09:42 +00:00
Initial commit: ChatGPT Account Registration Bot
This commit is contained in:
24
internal/util/helpers.go
Normal file
24
internal/util/helpers.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const alphanumeric = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
|
||||
// RandStr generates a random alphanumeric string of given length.
|
||||
func RandStr(length int) string {
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
b := make([]byte, length)
|
||||
for i := range b {
|
||||
b[i] = alphanumeric[r.Intn(len(alphanumeric))]
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
// GenerateUUID generates a random UUID.
|
||||
func GenerateUUID() string {
|
||||
return uuid.New().String()
|
||||
}
|
||||
23
internal/util/names.go
Normal file
23
internal/util/names.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"time"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7"
|
||||
)
|
||||
|
||||
// RandomName returns a random first and last name using gofakeit.
|
||||
func RandomName() (string, string) {
|
||||
return gofakeit.FirstName(), gofakeit.LastName()
|
||||
}
|
||||
|
||||
// RandomBirthdate returns a random birthdate string in YYYY-MM-DD format from 1985-2002.
|
||||
func RandomBirthdate() string {
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
year := r.Intn(2002-1985+1) + 1985
|
||||
month := r.Intn(12) + 1
|
||||
day := r.Intn(28) + 1
|
||||
return fmt.Sprintf("%04d-%02d-%02d", year, month, day)
|
||||
}
|
||||
40
internal/util/password.go
Normal file
40
internal/util/password.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
lowerChars = "abcdefghijklmnopqrstuvwxyz"
|
||||
upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
digitChars = "0123456789"
|
||||
specialChars = "!@#$%&*"
|
||||
allChars = lowerChars + upperChars + digitChars + specialChars
|
||||
)
|
||||
|
||||
// GeneratePassword generates a random password of given length (default 14).
|
||||
// It guarantees at least 1 lowercase, 1 uppercase, 1 digit, and 1 special character.
|
||||
func GeneratePassword(length int) string {
|
||||
if length <= 0 {
|
||||
length = 14
|
||||
}
|
||||
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
|
||||
password := make([]byte, length)
|
||||
password[0] = lowerChars[r.Intn(len(lowerChars))]
|
||||
password[1] = upperChars[r.Intn(len(upperChars))]
|
||||
password[2] = digitChars[r.Intn(len(digitChars))]
|
||||
password[3] = specialChars[r.Intn(len(specialChars))]
|
||||
|
||||
for i := 4; i < length; i++ {
|
||||
password[i] = allChars[r.Intn(len(allChars))]
|
||||
}
|
||||
|
||||
r.Shuffle(len(password), func(i, j int) {
|
||||
password[i], password[j] = password[j], password[i]
|
||||
})
|
||||
|
||||
return string(password)
|
||||
}
|
||||
38
internal/util/trace.go
Normal file
38
internal/util/trace.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
// MakeTraceHeaders generates Datadog-compatible trace headers.
|
||||
func MakeTraceHeaders() map[string]string {
|
||||
traceID := make([]byte, 16)
|
||||
rand.Read(traceID)
|
||||
spanID := make([]byte, 8)
|
||||
rand.Read(spanID)
|
||||
|
||||
traceIDHex := hex.EncodeToString(traceID)
|
||||
spanIDHex := hex.EncodeToString(spanID)
|
||||
|
||||
// traceparent: 00-{traceID}-{spanID}-01
|
||||
traceparent := fmt.Sprintf("00-%s-%s-01", traceIDHex, spanIDHex)
|
||||
|
||||
// tracestate: dd=t.dm:-1;t.tid:{first16ofTraceID};s:-1
|
||||
tracestate := fmt.Sprintf("dd=t.dm:-1;t.tid:%s;s:-1", traceIDHex[:16])
|
||||
|
||||
// x-datadog-trace-id: decimal conversion of last 16 hex chars (last 8 bytes)
|
||||
traceIDInt := new(big.Int).SetBytes(traceID[8:])
|
||||
// x-datadog-parent-id: decimal conversion of spanID
|
||||
spanIDInt := new(big.Int).SetBytes(spanID)
|
||||
|
||||
return map[string]string{
|
||||
"traceparent": traceparent,
|
||||
"tracestate": tracestate,
|
||||
"x-datadog-trace-id": traceIDInt.String(),
|
||||
"x-datadog-parent-id": spanIDInt.String(),
|
||||
"x-datadog-sampling-priority": "-1",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user