47 lines · 1.4 KB · Go
RawDownload
package executor import (	"crypto/rand"	"encoding/hex"	"regexp"	"strings" 	"github.com/google/uuid") // userIDPattern matches Claude Code format: user_[64-hex]_account__session_[uuid-v4]var userIDPattern = regexp.MustCompile(`^user_[a-fA-F0-9]{64}_account__session_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$`) // generateFakeUserID generates a fake user ID in Claude Code format.// Format: user_[64-hex-chars]_account__session_[UUID-v4]func generateFakeUserID() string {	hexBytes := make([]byte, 32)	_, _ = rand.Read(hexBytes)	hexPart := hex.EncodeToString(hexBytes)	uuidPart := uuid.New().String()	return "user_" + hexPart + "_account__session_" + uuidPart} // isValidUserID checks if a user ID matches Claude Code format.func isValidUserID(userID string) bool {	return userIDPattern.MatchString(userID)} // shouldCloak determines if request should be cloaked based on config and client User-Agent.// Returns true if cloaking should be applied.func shouldCloak(cloakMode string, userAgent string) bool {	switch strings.ToLower(cloakMode) {	case "always":		return true	case "never":		return false	default: // "auto" or empty		// If client is Claude Code, don't cloak		return !strings.HasPrefix(userAgent, "claude-cli")	}} // isClaudeCodeClient checks if the User-Agent indicates a Claude Code client.func isClaudeCodeClient(userAgent string) bool {	return strings.HasPrefix(userAgent, "claude-cli")}