sycommon-python-lib 0.2.1a32__tar.gz → 0.2.1a34__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/auth/ldap_service.py +50 -14
  4. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  5. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/README.md +0 -0
  6. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/setup.cfg +0 -0
  7. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/__init__.py +0 -0
  8. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/cli.py +0 -0
  9. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/core/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/core/console.py +0 -0
  11. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/core/models.py +0 -0
  12. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/core/project.py +0 -0
  13. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/core/utils.py +0 -0
  14. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/templates/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/templates/agent/__init__.py +0 -0
  16. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/templates/base/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/command/templates/web/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/agent_manager.py +0 -0
  21. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/chat_events.py +0 -0
  22. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/deep_agent.py +0 -0
  23. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/multi_agent_team.py +0 -0
  24. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/__init__.py +0 -0
  25. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  26. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  27. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  28. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  29. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/agent/sandbox/session.py +0 -0
  30. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/auth/__init__.py +0 -0
  31. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/Config.py +0 -0
  32. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/DatabaseConfig.py +0 -0
  33. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  34. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/EmbeddingConfig.py +0 -0
  35. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/LLMConfig.py +0 -0
  36. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/LangfuseConfig.py +0 -0
  37. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/MQConfig.py +0 -0
  38. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/RedisConfig.py +0 -0
  39. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/RerankerConfig.py +0 -0
  40. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/SentryConfig.py +0 -0
  41. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/config/__init__.py +0 -0
  42. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/async_base_db_service.py +0 -0
  43. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/async_database_service.py +0 -0
  44. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/base_db_service.py +0 -0
  45. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/database_service.py +0 -0
  46. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/elasticsearch_service.py +0 -0
  47. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/redis_service.py +0 -0
  48. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/database/token_usage_db_service.py +0 -0
  49. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/health/__init__.py +0 -0
  50. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/health/health_check.py +0 -0
  51. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/health/metrics.py +0 -0
  52. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/health/ping.py +0 -0
  53. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/heartbeat_process/__init__.py +0 -0
  54. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  55. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  56. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  57. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/__init__.py +0 -0
  58. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/embedding.py +0 -0
  59. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/get_llm.py +0 -0
  60. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/llm_logger.py +0 -0
  61. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/llm_tokens.py +0 -0
  62. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  63. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  64. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  65. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/struct_token.py +0 -0
  66. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/sy_langfuse.py +0 -0
  67. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/token_usage_es_service.py +0 -0
  68. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  69. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/llm/usage_token.py +0 -0
  70. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/__init__.py +0 -0
  71. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/async_sql_logger.py +0 -0
  72. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/kafka_log.py +0 -0
  73. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/logger_levels.py +0 -0
  74. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/logger_wrapper.py +0 -0
  75. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/process_logger.py +0 -0
  76. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/logging/sql_logger.py +0 -0
  77. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/background_execution.py +0 -0
  79. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/context.py +0 -0
  80. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/cors.py +0 -0
  81. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/docs.py +0 -0
  82. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/exception.py +0 -0
  83. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/middleware.py +0 -0
  84. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/monitor_memory.py +0 -0
  85. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/mq.py +0 -0
  86. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/sandbox.py +0 -0
  87. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/timeout.py +0 -0
  88. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/middleware/traceid.py +0 -0
  89. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/__init__.py +0 -0
  90. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/base_http.py +0 -0
  91. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/log.py +0 -0
  92. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/mqlistener_config.py +0 -0
  93. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/mqmsg_model.py +0 -0
  94. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/mqsend_config.py +0 -0
  95. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/sandbox.py +0 -0
  96. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/sso_user.py +0 -0
  97. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/token_usage.py +0 -0
  98. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/models/token_usage_mysql.py +0 -0
  99. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/notice/__init__.py +0 -0
  100. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  101. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  102. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  103. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  104. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  105. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  106. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  107. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  108. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  109. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  110. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/sentry/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/sentry/sy_sentry.py +0 -0
  112. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/services.py +0 -0
  113. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/sse/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/sse/event.py +0 -0
  115. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/sse/sse.py +0 -0
  116. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/example.py +0 -0
  118. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/example2.py +0 -0
  119. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/feign.py +0 -0
  120. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/feign_client.py +0 -0
  121. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_client_base.py +0 -0
  122. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  123. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  124. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_service.py +0 -0
  125. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  126. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  127. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/synacos/param.py +0 -0
  128. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tests/deep_agent_server.py +0 -0
  129. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tests/test_deep_agent.py +0 -0
  130. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tests/test_email.py +0 -0
  131. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tests/test_mq.py +0 -0
  132. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/__init__.py +0 -0
  133. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/async_utils.py +0 -0
  134. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/docs.py +0 -0
  135. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/env.py +0 -0
  136. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/merge_headers.py +0 -0
  137. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/snowflake.py +0 -0
  138. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/syemail.py +0 -0
  139. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon/tools/timing.py +0 -0
  140. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  141. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  142. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  143. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  144. {sycommon_python_lib-0.2.1a32 → sycommon_python_lib-0.2.1a34}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a32
3
+ Version: 0.2.1a34
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.1a32"
3
+ version = "0.2.1a34"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -129,13 +129,19 @@ class LDAPAuthService:
129
129
  last_error = None
130
130
  for url in self.config.urls:
131
131
  try:
132
- # 创建连接
133
- server = ldap3.Server(url, get_info=ldap3.ALL)
132
+ # 创建连接(移除末尾的斜杠,设置连接超时)
133
+ clean_url = url.rstrip("/")
134
+ server = ldap3.Server(
135
+ clean_url,
136
+ get_info=ldap3.ALL,
137
+ connect_timeout=5, # 连接超时 5 秒
138
+ )
134
139
  conn = ldap3.Connection(
135
140
  server,
136
141
  user=user_dn,
137
142
  password=password,
138
143
  auto_bind=True,
144
+ receive_timeout=10, # 接收超时 10 秒
139
145
  )
140
146
 
141
147
  # 认证成功,获取用户信息
@@ -168,9 +174,26 @@ class LDAPAuthService:
168
174
  Returns:
169
175
  str: 用户 DN
170
176
  """
171
- # 根据域构建用户 DN
172
- # 格式: cn=username,ou=Users,dc=syf,dc=com
173
- base_parts = self.config.base.split(",")
177
+ # 对于 Active Directory,使用 UPN 格式更可靠
178
+ # 格式: username@domain
179
+ if self.config.default_dc:
180
+ domain = self.config.default_dc
181
+ return f"{username}@{domain}"
182
+ # 回退到 DN 格式
183
+ return f"cn={username},{self.config.base}"
184
+
185
+ def _build_bind_dn(self, username: str) -> str:
186
+ """构建绑定用户 DN(用于管理员绑定)
187
+
188
+ Args:
189
+ username: 绑定用户名
190
+
191
+ Returns:
192
+ str: 绑定用户 DN
193
+ """
194
+ # 对于 Active Directory,使用 UPN 格式
195
+ if self.config.default_dc:
196
+ return f"{username}@{self.config.default_dc}"
174
197
  return f"cn={username},{self.config.base}"
175
198
 
176
199
  def _get_user_info(self, conn, username: str) -> LDAPUser:
@@ -185,12 +208,10 @@ class LDAPAuthService:
185
208
  """
186
209
  import ldap3
187
210
 
188
- user_dn = self._build_user_dn(username)
189
-
190
- # 搜索用户属性
211
+ # base DN 中搜索用户
191
212
  conn.search(
192
- search_base=user_dn,
193
- search_filter="(objectClass=*)",
213
+ search_base=self.config.base,
214
+ search_filter=f"(sAMAccountName={username})",
194
215
  attributes=[
195
216
  "cn",
196
217
  "mail",
@@ -199,6 +220,7 @@ class LDAPAuthService:
199
220
  "telephoneNumber",
200
221
  "title",
201
222
  "distinguishedName",
223
+ "sAMAccountName",
202
224
  ],
203
225
  )
204
226
 
@@ -242,14 +264,21 @@ class LDAPAuthService:
242
264
  import ldap3
243
265
  from ldap3.core.exceptions import LDAPException
244
266
 
267
+ bind_user = self._build_bind_dn(self.config.username)
268
+
245
269
  for url in self.config.urls:
246
270
  try:
247
- server = ldap3.Server(url, get_info=ldap3.ALL)
271
+ server = ldap3.Server(
272
+ url.rstrip("/"),
273
+ get_info=ldap3.ALL,
274
+ connect_timeout=5,
275
+ )
248
276
  conn = ldap3.Connection(
249
277
  server,
250
- user=self.config.username,
278
+ user=bind_user,
251
279
  password=self.config.password,
252
280
  auto_bind=True,
281
+ receive_timeout=10,
253
282
  )
254
283
 
255
284
  # 搜索用户
@@ -285,14 +314,21 @@ class LDAPAuthService:
285
314
  """同步验证连接"""
286
315
  import ldap3
287
316
 
317
+ bind_user = self._build_bind_dn(self.config.username)
318
+
288
319
  for url in self.config.urls:
289
320
  try:
290
- server = ldap3.Server(url, get_info=ldap3.ALL)
321
+ server = ldap3.Server(
322
+ url.rstrip("/"),
323
+ get_info=ldap3.ALL,
324
+ connect_timeout=5,
325
+ )
291
326
  conn = ldap3.Connection(
292
327
  server,
293
- user=self.config.username,
328
+ user=bind_user,
294
329
  password=self.config.password,
295
330
  auto_bind=True,
331
+ receive_timeout=10,
296
332
  )
297
333
  conn.unbind()
298
334
  SYLogger.info(f"[LDAP] 连接 {url} 验证成功")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a32
3
+ Version: 0.2.1a34
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown