From 1ed839cfda710815a715823a149a184eab9e2b58 Mon Sep 17 00:00:00 2001 From: cktricky Date: Sat, 19 May 2018 23:05:17 -0300 Subject: [PATCH] so you can delete SNS topics --- libs/sns.py | 19 +++++++++++++++++++ modules/sns.py | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/libs/sns.py b/libs/sns.py index 3faabec..e4033a0 100644 --- a/libs/sns.py +++ b/libs/sns.py @@ -42,6 +42,7 @@ def list_sns_subscribers(topic,region): result = client.list_subscriptions_by_topic(TopicArn=topic) subscriptions = result['Subscriptions'] for sub in subscriptions: + print("Subscription Arn: {}".format(sub['SubscriptionArn'])) print("Protocol: {}".format(sub['Protocol'])) print("Endpoint: {}".format(sub['Endpoint'])) except botocore.exceptions.ClientError as e: @@ -76,3 +77,21 @@ def delete_sns_topic(topic, region): print("Unexpected error: {}" .format(e)) except KeyboardInterrupt: print("CTRL-C received, exiting...") + +def delete_sns_subscriber(endpoint, region): + try: + client = boto3.client('sns', region_name=region) + action = client.delete_endpoint(EndpointArn=endpoint) + except botocore.exceptions.ClientError as e: + if e.response['Error']['Code'] == 'InvalidClientTokenId': + sys.exit("The AWS KEY IS INVALID. Exiting") + if e.response['Error']['Code'] == 'AccessDenied': + print('{} : Is NOT a root key' .format(AWS_ACCESS_KEY_ID)) + elif e.response['Error']['Code'] == 'SubscriptionRequiredException': + print('{} : Has permissions but isnt signed up for service - usually means you have a root account' .format(AWS_ACCESS_KEY_ID)) + #elif e.response['Error']['Code'] == 'InvalidParameter': + # print('The region you provided ({}) is invalid for the Subscriber endpoint. Are you sure this subscriber exists in this region?'.format(region)) + else: + print("Unexpected error: {}" .format(e)) + except KeyboardInterrupt: + print("CTRL-C received, exiting...") diff --git a/modules/sns.py b/modules/sns.py index 3f37609..cf9460d 100644 --- a/modules/sns.py +++ b/modules/sns.py @@ -32,3 +32,15 @@ def module_sns_delete_topic(*args): delete_sns_topic(args[0][0], args[0][1]) except IndexError: print("Please provide a topic arn *AND* region, ex: -a arn:aws:sns:us-east-1:123456789123:sometopic,us-east-1") + +# Shit is broke atm +#def module_sns_delete_subscriber(*args): +# ''' +# SNS delete a subscriber. Takes two arguments - the subscriber arn and the region. +# python3 weirdAAL.py -m sns_delete_subscriber -a arn:aws:sns:us-east-1:123456789123:pwned-topic:05ac3eaa-703a-4bda-83ad-6861893f7542,us-east-1 +# ''' +# try: +# if args[0][0] and args[0][1]: +# delete_sns_subscriber(args[0][0], args[0][1]) +# except IndexError: +# print("Please provide a subscriber arn *AND* region, ex: -a arn:aws:sns:us-east-1:123456789123:pwned-topic:05ac3eaa-703a-4bda-83ad-6861893f7542,us-east-1")