Files
dsProject/dsLightRag/Tools/deleteRubishGitUser.py
2025-09-12 08:37:47 +08:00

68 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
# 脚本功能删除Gitea中非法创建的用户只保留指定用户
# Gitea服务器 URL 和 API 访问 token
gitea_url = 'http://10.10.14.176:3000' # Gitea 服务器的地址
api_token = '703a2bbe4d4ac3ffdb00a2d53a93eeb910e5b84e' # 用于认证的 API Token
# 令牌获取办法:
# https://blog.csdn.net/luoqinwen123/article/details/149537504
# 获取所有用户的API请求
users_api = f'{gitea_url}/api/v1/admin/users' # 获取所有用户的 API URL
headers = {
'Authorization': f'token {api_token}' # 设置认证头,使用 API Token
}
# 删除指定用户的仓库
def delete_user_repositories(username):
"""
获取并删除指定用户的所有仓库。
:param username: 用户名
"""
# 获取用户的仓库
repos_api = f'{gitea_url}/api/v1/users/{username}/repos' # 用户仓库 API URL
response = requests.get(repos_api, headers=headers)
if response.status_code == 200:
# 如果请求成功,遍历该用户的所有仓库
repos = response.json()
for repo in repos:
repo_name = repo['name'] # 获取仓库的名字
# 删除仓库
delete_repo_api = f'{gitea_url}/api/v1/repos/{username}/{repo_name}' # 删除仓库的 API URL
delete_response = requests.delete(delete_repo_api, headers=headers)
if delete_response.status_code == 204:
print(f'Repository {repo_name} deleted successfully.')
else:
print(f'Failed to delete repository {repo_name}.') # 删除仓库失败
else:
print(f'Failed to fetch repositories for {username}. Status code:', response.status_code) # 请求仓库失败
# 获取所有用户并删除除 'clint' 外的用户及其仓库
response = requests.get(users_api, headers=headers) # 获取所有用户
if response.status_code == 200:
users = response.json() # 将响应的 JSON 数据转换为 Python 对象
for user in users:
username = user['username'] # 获取用户名
"""
huanghai
chengminglong
wubin
"""
if username not in ['huanghai', 'chengminglong', 'wubin']: # 保留 'huanghai','chengminglong','wubin' 用户,其他用户删除
print(f'Processing user: {username}')
# 先删除该用户的仓库
delete_user_repositories(username) # 删除仓库
# 然后删除用户
delete_user_api = f'{gitea_url}/api/v1/admin/users/{username}' # 删除用户的 API URL
delete_response = requests.delete(delete_user_api, headers=headers)
if delete_response.status_code == 204:
print(f'User {username} deleted successfully.')
else:
print(f'Failed to delete user {username}.') # 删除用户失败
else:
print(f'User {username} is being kept.') # 'clint' 用户被保留
else:
print('Failed to fetch users. Status code:', response.status_code) # 获取用户失败