aboutsummaryrefslogtreecommitdiff
path: root/applications
diff options
context:
space:
mode:
Diffstat (limited to 'applications')
-rw-r--r--applications/github/github_admins.py31
-rw-r--r--applications/github/github_audit_log.py26
-rw-r--r--applications/github/github_branch_protections.py28
-rw-r--r--applications/github/github_commits.py52
-rw-r--r--applications/gitlab/gitlab_admins.py6
5 files changed, 87 insertions, 56 deletions
diff --git a/applications/github/github_admins.py b/applications/github/github_admins.py
index d737887..b6db534 100644
--- a/applications/github/github_admins.py
+++ b/applications/github/github_admins.py
@@ -5,54 +5,59 @@ and list each user's permission per repo.
import requests
-GITHUB_TOKEN = 'your_personal_access_token'
-ORGANIZATION = 'your_organization'
+GITHUB_TOKEN = "your_personal_access_token"
+ORGANIZATION = "your_organization"
TIMEOUT = 30
# Headers for authentication
headers = {
- 'Authorization': f'token {GITHUB_TOKEN}',
- 'Accept': 'application/vnd.github.v3+json'
+ "Authorization": f"token {GITHUB_TOKEN}",
+ "Accept": "application/vnd.github.v3+json",
}
+
def get_org_members(org):
"""
Get members of an organization
"""
- url = f'https://api.github.com/orgs/{org}/members'
+ url = f"https://api.github.com/orgs/{org}/members"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
+
def get_org_repos(org):
"""
Get repositories of an organization
"""
- url = f'https://api.github.com/orgs/{org}/repos'
+ url = f"https://api.github.com/orgs/{org}/repos"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
+
def get_repo_collaborators(org, repo):
"""
Get collaborators of a repository with their permissions
"""
- url = f'https://api.github.com/repos/{org}/{repo}/collaborators'
+ url = f"https://api.github.com/repos/{org}/{repo}/collaborators"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
+
def get_user_permissions(org, repo, user):
"""
Get a user's permissions for a repository
"""
- url = f'https://api.github.com/repos/{org}/{repo}/collaborators/{user}/permission'
+ url = f"https://api.github.com/repos/{org}/{repo}/collaborators/{user}/permission"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
+
# Main script
-if __name__ == '__main__':
+if __name__ == "__main__":
# Get organization members
members = get_org_members(ORGANIZATION)
print(f"Members of the organization '{ORGANIZATION}':")
@@ -67,10 +72,12 @@ if __name__ == '__main__':
# Get collaborators for each repository and their permissions
for repository in repositories:
- repository_name = repository['name']
+ repository_name = repository["name"]
collaborators = get_repo_collaborators(ORGANIZATION, repository_name)
print(f"\nCollaborators for the repository '{repository_name}':")
for collaborator in collaborators:
- user_login = collaborator['login']
- permissions = get_user_permissions(ORGANIZATION, repository_name, user_login)
+ user_login = collaborator["login"]
+ permissions = get_user_permissions(
+ ORGANIZATION, repository_name, user_login
+ )
print(f"- {user_login}: {permissions['permission']}")
diff --git a/applications/github/github_audit_log.py b/applications/github/github_audit_log.py
index 0937764..dd00535 100644
--- a/applications/github/github_audit_log.py
+++ b/applications/github/github_audit_log.py
@@ -6,16 +6,17 @@ NOTE: REQUIRES A GITHUB ENTERPRISE SUBSCRIPTION TO ACCESS THE API.
import requests
-GITHUB_TOKEN = 'your_personal_access_token'
-ORGANIZATION = 'your_organization'
+GITHUB_TOKEN = "your_personal_access_token"
+ORGANIZATION = "your_organization"
TIMEOUT = 30
# Headers for authentication
headers = {
- 'Authorization': f'token {GITHUB_TOKEN}',
- 'Accept': 'application/vnd.github.v3+json'
+ "Authorization": f"token {GITHUB_TOKEN}",
+ "Accept": "application/vnd.github.v3+json",
}
+
def get_audit_log_events(org, actions):
"""
Get audit log events for specific actions
@@ -23,8 +24,10 @@ def get_audit_log_events(org, actions):
events = []
page = 1
while True:
- url = (f'https://api.github.com/orgs/{org}/audit-log?page={page}&per_page=100'
- f'&action={",".join(actions)}')
+ url = (
+ f"https://api.github.com/orgs/{org}/audit-log?page={page}&per_page=100"
+ f"&action={','.join(actions)}"
+ )
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
page_events = response.json()
@@ -34,12 +37,15 @@ def get_audit_log_events(org, actions):
page += 1
return events
-if __name__ == '__main__':
+
+if __name__ == "__main__":
try:
# Define the actions to filter
- action_filters = ['protected_branch',
- 'repository_branch_protection_evaluation',
- 'repository_ruleset']
+ action_filters = [
+ "protected_branch",
+ "repository_branch_protection_evaluation",
+ "repository_ruleset",
+ ]
# Get audit log events for the specified actions
audit_log_events = get_audit_log_events(ORGANIZATION, action_filters)
diff --git a/applications/github/github_branch_protections.py b/applications/github/github_branch_protections.py
index 73c94b6..705e498 100644
--- a/applications/github/github_branch_protections.py
+++ b/applications/github/github_branch_protections.py
@@ -4,16 +4,17 @@ Gathers branch protection rules for a repository.
import requests
-GITHUB_TOKEN = 'your_personal_access_token'
-ORGANIZATION = 'your_organization'
-REPOSITORY = 'your_repository'
+GITHUB_TOKEN = "your_personal_access_token"
+ORGANIZATION = "your_organization"
+REPOSITORY = "your_repository"
TIMEOUT = 30
headers = {
- 'Authorization': f'token {GITHUB_TOKEN}',
- 'Accept': 'application/vnd.github.v3+json'
+ "Authorization": f"token {GITHUB_TOKEN}",
+ "Accept": "application/vnd.github.v3+json",
}
+
def get_all_branches(org, repo):
"""
Get all branches in a repository
@@ -21,7 +22,7 @@ def get_all_branches(org, repo):
all_branches = []
page = 1
while True:
- url = f'https://api.github.com/repos/{org}/{repo}/branches?page={page}&per_page=100'
+ url = f"https://api.github.com/repos/{org}/{repo}/branches?page={page}&per_page=100"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
page_branches = response.json()
@@ -31,27 +32,30 @@ def get_all_branches(org, repo):
page += 1
return all_branches
+
def get_branch_protection(org, repo, repo_branch):
"""
Get branch protection settings
"""
- url = f'https://api.github.com/repos/{org}/{repo}/branches/{repo_branch}/protection'
+ url = f"https://api.github.com/repos/{org}/{repo}/branches/{repo_branch}/protection"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
if response.status_code == 404:
return None # No protection settings for this branch
response.raise_for_status()
return response.json()
+
def get_repository_rulesets(org, repo):
"""
Get repository rulesets
"""
- url = f'https://api.github.com/repos/{org}/{repo}/rulesets'
+ url = f"https://api.github.com/repos/{org}/{repo}/rulesets"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
-if __name__ == '__main__':
+
+if __name__ == "__main__":
try:
# Get all branches in the repository
branches = get_all_branches(ORGANIZATION, REPOSITORY)
@@ -59,8 +63,10 @@ if __name__ == '__main__':
# Get protection settings for each branch
for branch in branches:
- branch_name = branch['name']
- protection_settings = get_branch_protection(ORGANIZATION, REPOSITORY, branch_name)
+ branch_name = branch["name"]
+ protection_settings = get_branch_protection(
+ ORGANIZATION, REPOSITORY, branch_name
+ )
print(f"\nBranch: {branch_name}")
if protection_settings:
print(f"Protection settings: {protection_settings}")
diff --git a/applications/github/github_commits.py b/applications/github/github_commits.py
index f35d5d6..7581ff1 100644
--- a/applications/github/github_commits.py
+++ b/applications/github/github_commits.py
@@ -4,20 +4,21 @@ Gather all commits from a specific branch of a repository in a GitHub organizati
import requests
-GITHUB_TOKEN = 'your_personal_access_token'
-ORGANIZATION = 'your_organization'
-REPOSITORY = 'your_repository'
-BRANCH = 'your_branch'
+GITHUB_TOKEN = "your_personal_access_token"
+ORGANIZATION = "your_organization"
+REPOSITORY = "your_repository"
+BRANCH = "your_branch"
# Headers for authentication
headers = {
- 'Authorization': f'token {GITHUB_TOKEN}',
- 'Accept': 'application/vnd.github.v3+json'
+ "Authorization": f"token {GITHUB_TOKEN}",
+ "Accept": "application/vnd.github.v3+json",
}
# Define a timeout value (in seconds)
TIMEOUT = 10
+
def get_commit_log(org, repo, branch):
"""
Get the full commit log for a repository branch
@@ -25,8 +26,10 @@ def get_commit_log(org, repo, branch):
commits = []
page = 1
while True:
- url = (f'https://api.github.com/repos/{org}/{repo}/commits?sha={branch}'
- f'&page={page}&per_page=100')
+ url = (
+ f"https://api.github.com/repos/{org}/{repo}/commits?sha={branch}"
+ f"&page={page}&per_page=100"
+ )
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
page_commits = response.json()
@@ -36,39 +39,46 @@ def get_commit_log(org, repo, branch):
page += 1
return commits
+
def get_commit_details(org, repo, sha):
"""
Get detailed information for a specific commit
"""
- url = f'https://api.github.com/repos/{org}/{repo}/commits/{sha}'
+ url = f"https://api.github.com/repos/{org}/{repo}/commits/{sha}"
response = requests.get(url, headers=headers, timeout=TIMEOUT)
response.raise_for_status()
return response.json()
-if __name__ == '__main__':
+
+if __name__ == "__main__":
try:
# Get the full commit log for the specified branch
commit_log = get_commit_log(ORGANIZATION, REPOSITORY, BRANCH)
- print(f"Total commits in the repository '{REPOSITORY}' on branch "
- f"'{BRANCH}': {len(commit_log)}")
+ print(
+ f"Total commits in the repository '{REPOSITORY}' on branch "
+ f"'{BRANCH}': {len(commit_log)}"
+ )
# Get detailed information for each commit
for commit in commit_log:
- sha_hash = commit['sha']
- commit_details = get_commit_details(ORGANIZATION, REPOSITORY,
- sha_hash)
+ sha_hash = commit["sha"]
+ commit_details = get_commit_details(ORGANIZATION, REPOSITORY, sha_hash)
print(f"\nCommit SHA: {commit_details['sha']}")
- print(f"Author: {commit_details['commit']['author']['name']} "
- f"<{commit_details['commit']['author']['email']}>")
+ print(
+ f"Author: {commit_details['commit']['author']['name']} "
+ f"<{commit_details['commit']['author']['email']}>"
+ )
print(f"Date: {commit_details['commit']['author']['date']}")
print(f"Message: {commit_details['commit']['message']}")
print(f"URL: {commit_details['html_url']}")
print("Files changed:")
- for file in commit_details['files']:
+ for file in commit_details["files"]:
print(f" - {file['filename']} ({file['status']})")
- print(f" Additions: {file['additions']}, "
- f"Deletions: {file['deletions']}, "
- f"Changes: {file['changes']}")
+ print(
+ f" Additions: {file['additions']}, "
+ f"Deletions: {file['deletions']}, "
+ f"Changes: {file['changes']}"
+ )
except requests.exceptions.Timeout:
print("The request timed out")
except requests.exceptions.RequestException as e:
diff --git a/applications/gitlab/gitlab_admins.py b/applications/gitlab/gitlab_admins.py
index 7fb2c78..091032c 100644
--- a/applications/gitlab/gitlab_admins.py
+++ b/applications/gitlab/gitlab_admins.py
@@ -12,12 +12,14 @@ TIMEOUT = 30
URL = f"{BASE_URL}/groups/{GROUP_ID}/members"
HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN}
-if __name__ == '__main__':
+if __name__ == "__main__":
# Get group members
response = requests.get(URL, headers=HEADERS, timeout=TIMEOUT)
if response.status_code == 200:
members = response.json()
for member in members:
- print(f"Username: {member['username']}, Access Level: {member['access_level']}")
+ print(
+ f"Username: {member['username']}, Access Level: {member['access_level']}"
+ )
else:
print(f"Failed to fetch group members: {response.status_code}, {response.text}")