mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-02 20:40:52 +08:00
Add support for localhost unauthenticated requests
- Introduced `AllowLocalhostUnauthenticated` flag allowing unauthenticated requests from localhost. - Updated authentication middleware to bypass checks for localhost when enabled. Add new Gemini CLI models and update model registry function - Introduced `GetGeminiCLIModels` for updated Gemini CLI model definitions. - Added new models: "Gemini 2.5 Flash Lite" and "Gemini 2.5 Pro". - Updated `RegisterModels` to use `GetGeminiCLIModels` in Gemini client initialization.
This commit is contained in:
@@ -233,6 +233,11 @@ func (s *Server) UpdateClients(clients []interfaces.Client, cfg *config.Config)
|
|||||||
// - gin.HandlerFunc: The authentication middleware handler
|
// - gin.HandlerFunc: The authentication middleware handler
|
||||||
func AuthMiddleware(cfg *config.Config) gin.HandlerFunc {
|
func AuthMiddleware(cfg *config.Config) gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
|
if cfg.AllowLocalhostUnauthenticated && strings.HasPrefix(c.Request.RemoteAddr, "127.0.0.1:") {
|
||||||
|
c.Next()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if len(cfg.APIKeys) == 0 {
|
if len(cfg.APIKeys) == 0 {
|
||||||
c.Next()
|
c.Next()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ func NewGeminiCLIClient(httpClient *http.Client, ts *geminiAuth.GeminiTokenStora
|
|||||||
|
|
||||||
// Initialize model registry and register Gemini models
|
// Initialize model registry and register Gemini models
|
||||||
client.InitializeModelRegistry(clientID)
|
client.InitializeModelRegistry(clientID)
|
||||||
client.RegisterModels("gemini-cli", registry.GetGeminiModels())
|
client.RegisterModels("gemini-cli", registry.GetGeminiCLIModels())
|
||||||
|
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,10 +40,14 @@ type Config struct {
|
|||||||
// RequestRetry defines the retry times when the request failed.
|
// RequestRetry defines the retry times when the request failed.
|
||||||
RequestRetry int `yaml:"request-retry"`
|
RequestRetry int `yaml:"request-retry"`
|
||||||
|
|
||||||
|
// ClaudeKey defines a list of Claude API key configurations as specified in the YAML configuration file.
|
||||||
ClaudeKey []ClaudeKey `yaml:"claude-api-key"`
|
ClaudeKey []ClaudeKey `yaml:"claude-api-key"`
|
||||||
|
|
||||||
// OpenAICompatibility defines OpenAI API compatibility configurations for external providers.
|
// OpenAICompatibility defines OpenAI API compatibility configurations for external providers.
|
||||||
OpenAICompatibility []OpenAICompatibility `yaml:"openai-compatibility"`
|
OpenAICompatibility []OpenAICompatibility `yaml:"openai-compatibility"`
|
||||||
|
|
||||||
|
// AllowLocalhostUnauthenticated allows unauthenticated requests from localhost.
|
||||||
|
AllowLocalhostUnauthenticated bool `yaml:"allow-localhost-unauthenticated"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// QuotaExceeded defines the behavior when API quota limits are exceeded.
|
// QuotaExceeded defines the behavior when API quota limits are exceeded.
|
||||||
|
|||||||
@@ -53,6 +53,54 @@ func GetClaudeModels() []*ModelInfo {
|
|||||||
|
|
||||||
// GetGeminiModels returns the standard Gemini model definitions
|
// GetGeminiModels returns the standard Gemini model definitions
|
||||||
func GetGeminiModels() []*ModelInfo {
|
func GetGeminiModels() []*ModelInfo {
|
||||||
|
return []*ModelInfo{
|
||||||
|
{
|
||||||
|
ID: "gemini-2.5-flash",
|
||||||
|
Object: "model",
|
||||||
|
Created: time.Now().Unix(),
|
||||||
|
OwnedBy: "google",
|
||||||
|
Type: "gemini",
|
||||||
|
Name: "models/gemini-2.5-flash",
|
||||||
|
Version: "001",
|
||||||
|
DisplayName: "Gemini 2.5 Flash",
|
||||||
|
Description: "Stable version of Gemini 2.5 Flash, our mid-size multimodal model that supports up to 1 million tokens, released in June of 2025.",
|
||||||
|
InputTokenLimit: 1048576,
|
||||||
|
OutputTokenLimit: 65536,
|
||||||
|
SupportedGenerationMethods: []string{"generateContent", "countTokens", "createCachedContent", "batchGenerateContent"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: "gemini-2.5-pro",
|
||||||
|
Object: "model",
|
||||||
|
Created: time.Now().Unix(),
|
||||||
|
OwnedBy: "google",
|
||||||
|
Type: "gemini",
|
||||||
|
Name: "models/gemini-2.5-pro",
|
||||||
|
Version: "2.5",
|
||||||
|
DisplayName: "Gemini 2.5 Pro",
|
||||||
|
Description: "Stable release (June 17th, 2025) of Gemini 2.5 Pro",
|
||||||
|
InputTokenLimit: 1048576,
|
||||||
|
OutputTokenLimit: 65536,
|
||||||
|
SupportedGenerationMethods: []string{"generateContent", "countTokens", "createCachedContent", "batchGenerateContent"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: "gemini-2.5-flash-lite",
|
||||||
|
Object: "model",
|
||||||
|
Created: time.Now().Unix(),
|
||||||
|
OwnedBy: "google",
|
||||||
|
Type: "gemini",
|
||||||
|
Name: "models/gemini-2.5-flash-lite",
|
||||||
|
Version: "2.5",
|
||||||
|
DisplayName: "Gemini 2.5 Flash Lite",
|
||||||
|
Description: "Stable release (June 17th, 2025) of Gemini 2.5 Flash Lite",
|
||||||
|
InputTokenLimit: 1048576,
|
||||||
|
OutputTokenLimit: 65536,
|
||||||
|
SupportedGenerationMethods: []string{"generateContent", "countTokens", "createCachedContent", "batchGenerateContent"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGeminiCLIModels returns the standard Gemini model definitions
|
||||||
|
func GetGeminiCLIModels() []*ModelInfo {
|
||||||
return []*ModelInfo{
|
return []*ModelInfo{
|
||||||
{
|
{
|
||||||
ID: "gemini-2.5-flash",
|
ID: "gemini-2.5-flash",
|
||||||
|
|||||||
Reference in New Issue
Block a user