-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathslack_clean.py
More file actions
70 lines (65 loc) · 2.58 KB
/
Copy pathslack_clean.py
File metadata and controls
70 lines (65 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import argparse
import requests
import time
import json
requests.packages.urllib3.disable_warnings()
#the token is taken from this url: https://api.slack.com/custom-integrations/legacy-tokens while logged on
token = "yourToken"
#name is your user name, yourID is found on your slack by clicking on your user and looking at the URL
#i.e.https://<slack_workspace>.slack.com/messages/<teamID>/team/<userID>
users = [{"name": "yourName", "user":"yourID" }]
def main():
"""
Entry point of the application
:return: void
"""
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--days", type=int, default=None, help="Delete files older than x days (optional)")
options = parser.parse_args()
try:
print "[*] Fetching file list.."
file_ids = list_file_ids(days=options.days)
except KeyboardInterrupt:
print "\b\b[-] Aborted"
exit(1)
def calculate_days(days):
"""
Calculate days to unix time
:param days: int
:return: int
"""
return int(time.time()) - days * 24 * 60 * 60
def list_file_ids(days=None):
print "[+] Fetching user list"
users_uri = "https://slack.com/api/users.list"
users_param = {'token':token}
response_users = requests.get(users_uri, params=users_param).json()
members_users = response_users['members']
for user in members_users:
print "[+] The name is", user['name'], "and the ID is", user['id'], "status is", user['deleted']
if user['deleted'] is True:
print "[!!!] User", user['name'], "is deleted, passing."
continue
user_name = user['name']
print "delete files of user: "+user_name
user_id = user['id']
user_token = token
if days:
params = {'token': user_token, 'count': 1000, 'ts_to': calculate_days(days), 'user': user_id}
print "ts_to: ", calculate_days(days)
else:
params = {'token': user_token, 'count': 1000, 'user': user_id}
uri = 'https://slack.com/api/files.list'
response = requests.get(uri, params=params).json()
files = response['files']
#return [f['id'] for f in files]
print [f['id'] for f in files]
for f in files:
dresponse = json.loads(requests.get('https://slack.com/api/files.delete', params={'token': user_token, 'file': f['id']}).text)
time.sleep(2)
if dresponse["ok"]:
print "[+] Deleted: ", f['id']
else:
print "[!] Unable to delete: ", f['id'] + ", reason:", dresponse["error"]
if __name__ == '__main__':
main()