codosdk 1.0.28__tar.gz → 1.0.30__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 (52) hide show
  1. {codosdk-1.0.28 → codosdk-1.0.30}/PKG-INFO +1 -1
  2. {codosdk-1.0.28 → codosdk-1.0.30}/codosdk.egg-info/PKG-INFO +1 -1
  3. {codosdk-1.0.28 → codosdk-1.0.30}/setup.py +1 -1
  4. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/cmdb_apis.py +6 -0
  5. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/ldap.py +58 -4
  6. {codosdk-1.0.28 → codosdk-1.0.30}/LICENSE +0 -0
  7. {codosdk-1.0.28 → codosdk-1.0.30}/README.md +0 -0
  8. {codosdk-1.0.28 → codosdk-1.0.30}/codosdk.egg-info/SOURCES.txt +0 -0
  9. {codosdk-1.0.28 → codosdk-1.0.30}/codosdk.egg-info/dependency_links.txt +0 -0
  10. {codosdk-1.0.28 → codosdk-1.0.30}/codosdk.egg-info/requires.txt +0 -0
  11. {codosdk-1.0.28 → codosdk-1.0.30}/codosdk.egg-info/top_level.txt +0 -0
  12. {codosdk-1.0.28 → codosdk-1.0.30}/opssdk/__init__.py +0 -0
  13. {codosdk-1.0.28 → codosdk-1.0.30}/opssdk/utils/__init__.py +0 -0
  14. {codosdk-1.0.28 → codosdk-1.0.30}/pyproject.toml +0 -0
  15. {codosdk-1.0.28 → codosdk-1.0.30}/setup.cfg +0 -0
  16. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/__init__.py +0 -0
  17. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/api_set.py +0 -0
  18. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/__init__.py +0 -0
  19. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/admin_apis.py +0 -0
  20. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/agent_apis.py +0 -0
  21. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/kerrigan_apis.py +0 -0
  22. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/mgv4_apis.py +0 -0
  23. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/notice_apis.py +0 -0
  24. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/apis/task_apis.py +0 -0
  25. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/application.py +0 -0
  26. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/base_handler.py +0 -0
  27. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cache.py +0 -0
  28. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cache_context.py +0 -0
  29. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/client.py +0 -0
  30. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cloud/__init__.py +0 -0
  31. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cloud/qcloud_api.py +0 -0
  32. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cloud/ucloud_api.py +0 -0
  33. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/cloud_utils.py +0 -0
  34. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/configs.py +0 -0
  35. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/consts.py +0 -0
  36. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/crud_utils.py +0 -0
  37. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/db_context.py +0 -0
  38. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/error.py +0 -0
  39. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/fetch_coroutine.py +0 -0
  40. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/jwt_token.py +0 -0
  41. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/logger.py +0 -0
  42. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/model_utils.py +0 -0
  43. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/mqhelper.py +0 -0
  44. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/program.py +0 -0
  45. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/salt_api.py +0 -0
  46. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/sqlalchemy_pagination.py +0 -0
  47. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/tools.py +0 -0
  48. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/utils/__init__.py +0 -0
  49. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/utils/cc_crypto.py +0 -0
  50. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/utils/date_format.py +0 -0
  51. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/utils/pydantic_utils.py +0 -0
  52. {codosdk-1.0.28 → codosdk-1.0.30}/websdk2/web_logs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: codosdk
3
- Version: 1.0.28
3
+ Version: 1.0.30
4
4
  Summary: CODO项目的Python SDK
5
5
  Home-page: https://github.com/ss1917/codo_sdk/
6
6
  Author: shenshuo
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: codosdk
3
- Version: 1.0.28
3
+ Version: 1.0.30
4
4
  Summary: CODO项目的Python SDK
5
5
  Home-page: https://github.com/ss1917/codo_sdk/
6
6
  Author: shenshuo
@@ -9,7 +9,7 @@ desc : CODO SDK
9
9
  import sys
10
10
  from setuptools import setup, find_packages
11
11
 
12
- VERSION = '1.0.28'
12
+ VERSION = '1.0.30'
13
13
 
14
14
  if sys.version_info < (2, 7) or (3, 0) <= sys.version_info < (3, 6):
15
15
  print('This program requires at least Python 2.7 or 3.6 to run.')
@@ -45,3 +45,9 @@ class CMDBAPIS:
45
45
  params={
46
46
  },
47
47
  description='根据业务获取资源信息')
48
+
49
+ get_tree_asset_server_old = dict(method='GET',
50
+ url=f'{cmdb_prefix}/api/v2/cmdb/tree/asset/',
51
+ params={
52
+ },
53
+ description='根据业务获取资源信息,待废弃')
@@ -6,8 +6,11 @@ Author : shenshuo
6
6
  Date : 2023/3/17
7
7
  Desc : 对接LDAP登录认证
8
8
  """
9
+
10
+ import logging
9
11
  import json
10
- from ldap3 import Server, Connection, ALL, SUBTREE, ServerPool
12
+ from typing import Dict, Optional, Tuple, Union
13
+ from ldap3 import Server, Connection, SUBTREE, ALL_ATTRIBUTES
11
14
 
12
15
 
13
16
  class LdapApi:
@@ -110,8 +113,59 @@ class LdapApi:
110
113
  return False, None
111
114
 
112
115
 
116
+ class LdapApiV4:
117
+ def __init__(self, ldap_server_host: str, ldap_admin_dn: str, ldap_admin_password: str,
118
+ ldap_server_port: int = 389, ldap_use_ssl: Union[bool, str] = False):
119
+ self._ldap_admin_dn = ldap_admin_dn
120
+ self._ldap_admin_password = ldap_admin_password
121
+ self.ldap_server = Server(ldap_server_host, port=ldap_server_port,
122
+ use_ssl=str(ldap_use_ssl).lower() in {'y', 'yes', 'true'})
123
+
124
+ def test_server_connection(self) -> bool:
125
+ try:
126
+ with Connection(self.ldap_server, self._ldap_admin_dn, self._ldap_admin_password, auto_bind=True) as conn:
127
+ return conn.bound
128
+ except Exception as e:
129
+ logging.error(f"Server connection failed: {e}")
130
+ return False
131
+
132
+ def ldap_auth(self, username: str, password: str, search_base: str,
133
+ attribute_map: Union[Dict[str, str], str, None] = None,
134
+ search_filter: str = 'cn') -> Tuple[bool, Optional[Dict]]:
135
+ if not self.test_server_connection():
136
+ return False, None
137
+ try:
138
+ with Connection(self.ldap_server, self._ldap_admin_dn, self._ldap_admin_password) as conn:
139
+ if not conn.search(search_base, f'({search_filter}={username})', SUBTREE, attributes=ALL_ATTRIBUTES):
140
+ return False, None
141
+ user_attrs, user_dn = conn.entries[0].entry_attributes_as_dict, conn.entries[0].entry_dn
142
+
143
+ try:
144
+ with Connection(self.ldap_server, user=user_dn, password=password, auto_bind=True) as uc:
145
+ if not uc.bound:
146
+ return False, None
147
+ except Exception as e:
148
+ logging.error(f"User auth failed: {e}")
149
+ return False, None
150
+
151
+ final_attrs = user_attrs
152
+ if attribute_map:
153
+ if isinstance(attribute_map, str):
154
+ try:
155
+ attribute_map = json.loads(attribute_map)
156
+ except json.JSONDecodeError:
157
+ attribute_map = None
158
+ if isinstance(attribute_map, dict):
159
+ final_attrs = {k: (v[0] if isinstance(v := user_attrs.get(mv), list) else v)
160
+ for k, mv in attribute_map.items()}
161
+ return True, final_attrs
162
+ except Exception as e:
163
+ logging.error(f"Auth error: {e}")
164
+ return False, None
165
+
166
+
113
167
  if __name__ == "__main__":
114
- obj = LdapApi('172.16.0.102', 'cn=Manager,DC=sz,DC=com', '070068')
115
- print(obj.ldap_server_test())
168
+ obj = LdapApiV4('172.16.0.102', 'cn=Manager,DC=sz,DC=com', '070068')
169
+ print(obj.test_server_connection())
116
170
  print('____________')
117
- print(obj.ldap_auth_v2("yanghongfei", "123456", 'ou=opendevops,dc=sz,dc=com', 'cn'))
171
+ print(obj.ldap_auth("yanghongfei", "123456", 'ou=opendevops,dc=sz,dc=com', 'cn'))
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes