Skip to content

Commit 8135dd4

Browse files
authored
Merge pull request #58 from arifcse019/master
Adds scripts to work with IAM users and group
2 parents fd7e104 + e6d09a4 commit 8135dd4

File tree

4 files changed

+134
-0
lines changed

4 files changed

+134
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Description:
2+
# Adds an iam user to an iam group
3+
#
4+
# Commands:
5+
# hubot iam add user to group --username=*** --groupname=***
6+
7+
# Notes:
8+
# --username=*** : [required] The iam username.
9+
# --groupname=*** : [required] The iam groupname.
10+
11+
getArgParams = (arg) ->
12+
username_capture = /--username=(.*?)( |$)/.exec(arg)
13+
username = if username_capture then username_capture[1] else ''
14+
15+
groupname_capture = /--groupname=(.*?)( |$)/.exec(arg)
16+
groupname = if groupname_capture then groupname_capture[1] else ''
17+
18+
return {
19+
username: username,
20+
groupname: groupname
21+
}
22+
23+
module.exports = (robot) ->
24+
robot.respond /iam add user to group(.*)$/i, (msg) ->
25+
arg_params = getArgParams(msg.match[1])
26+
username = arg_params.username
27+
groupname = arg_params.groupname
28+
29+
msg.send "Adding user #{username} to group #{groupname}"
30+
31+
params = {
32+
GroupName: groupname,
33+
UserName: username
34+
};
35+
36+
require('./lib_user_group.coffee').addUserToGroup(params, msg)

scripts/iam/lib_user_group.coffee

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
addUserToGroup = (params,msg) ->
2+
aws = require('../../aws.coffee').aws()
3+
iam = new aws.IAM({apiVersion: '2010-05-08'})
4+
iam.addUserToGroup params, (err, data) ->
5+
if err
6+
msg.send "Error #{err.stack.split('\n')[0]}"
7+
else
8+
msg.send "Success"
9+
10+
removeUserFromGroup = (params,msg) ->
11+
aws = require('../../aws.coffee').aws()
12+
iam = new aws.IAM({apiVersion: '2010-05-08'})
13+
iam.removeUserFromGroup params, (err, data) ->
14+
if err
15+
msg.send "Error #{err.stack.split('\n')[0]}"
16+
else
17+
msg.send "Success"
18+
19+
listUsersInGroup = (params,msg) ->
20+
aws = require('../../aws.coffee').aws()
21+
iam = new aws.IAM({apiVersion: '2010-05-08'})
22+
iam.getGroup params, (err, data) ->
23+
if err
24+
msg.send "Error #{err.stack.split('\n')[0]}"
25+
else
26+
for user in data.Users
27+
msg.send "#{user.UserName} "
28+
29+
module.exports = {
30+
addUserToGroup: addUserToGroup,
31+
removeUserFromGroup: removeUserFromGroup,
32+
listUsersInGroup: listUsersInGroup
33+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Description:
2+
# Lists users of an iam group
3+
#
4+
# Commands:
5+
# hubot iam list users in group --groupname=***
6+
7+
# Notes:
8+
# --groupname=*** : [required] The iam groupname.
9+
10+
getArgParams = (arg) ->
11+
groupname_capture = /--groupname=(.*?)( |$)/.exec(arg)
12+
groupname = if groupname_capture then groupname_capture[1] else ''
13+
14+
return {
15+
groupname: groupname
16+
}
17+
18+
module.exports = (robot) ->
19+
robot.respond /iam list users in group(.*)$/i, (msg) ->
20+
arg_params = getArgParams(msg.match[1])
21+
groupname = arg_params.groupname
22+
23+
msg.send "Listing users in group #{groupname}"
24+
25+
params = {
26+
GroupName: groupname
27+
};
28+
29+
require('./lib_user_group.coffee').listUsersInGroup(params, msg)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Description:
2+
# Removes an iam user from an iam group
3+
#
4+
# Commands:
5+
# hubot iam remove user from group --username=*** --groupname=***
6+
7+
# Notes:
8+
# --username=*** : [required] The iam username.
9+
# --groupname=*** : [required] The iam groupname.
10+
11+
getArgParams = (arg) ->
12+
username_capture = /--username=(.*?)( |$)/.exec(arg)
13+
username = if username_capture then username_capture[1] else ''
14+
15+
groupname_capture = /--groupname=(.*?)( |$)/.exec(arg)
16+
groupname = if groupname_capture then groupname_capture[1] else ''
17+
18+
return {
19+
username: username,
20+
groupname: groupname
21+
}
22+
23+
module.exports = (robot) ->
24+
robot.respond /iam remove user from group(.*)$/i, (msg) ->
25+
arg_params = getArgParams(msg.match[1])
26+
username = arg_params.username
27+
groupname = arg_params.groupname
28+
29+
msg.send "Removing user #{username} from group #{groupname}"
30+
31+
params = {
32+
GroupName: groupname,
33+
UserName: username
34+
};
35+
36+
require('./lib_user_group.coffee').removeUserFromGroup(params, msg)

0 commit comments

Comments
 (0)