github_bitbucket_audit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 892bb28e0de26ae3d42697e84ff19131d6764915
4
- data.tar.gz: af6a30b4030441d0c8e5b3b6cc064d87bc573618
3
+ metadata.gz: 921a09fbd5331053c1322d830e7c13f4302ed215
4
+ data.tar.gz: 2e6c845eba869dd2bac4384e90b30087bead25ea
5
5
  SHA512:
6
- metadata.gz: bf452e796efea3b991e457d1f9ff6e1841ef6ee8569b653732bd5275b8f310920fd22dba71754328346816be27e7dbc351b80f7ae6bda3a9f0c32df1299a7f46
7
- data.tar.gz: f1a352c1eaa3977cc9a60b0a76e2fb0fbd9557491fb69f3c4fd9716f624d3a0a28f693745de5866d892d4135682480ab7b89ecafedb5307ec70deeb065228452
6
+ metadata.gz: 1ec5bd3e4de6d5f181ab00773fd5aaa6afc9cd3bcfe03c4d9aabd351a60dd9f80667965bddb5b7e355d0d1318e4f9d274cbb8e83823acab09c2b3be9061a8eb0
7
+ data.tar.gz: 8d701d9a6c8afd8d12a72d83b032f441cafe94a7e220917ac5db977e980d6abc133481a6041387a14f59edbf97c4eb16e3f352f3bc2dfd8058222a58e37f55ec
@@ -5,7 +5,7 @@ require 'optparse'
5
5
 
6
6
  options = {}
7
7
  OptionParser.new do |opts|
8
- opts.banner = "Usage: gh_bb_audit.rb -u <path_to_user_csv_file> -k <path_tpkeywords_csv_file> -o <path_to_output_file>"
8
+ opts.banner = "Usage: gh_bb_audit.rb -u <path_to_user_csv_file> -k <path_tpkeywords_csv_file> -o <path_to_output_file> -n <github_user> -p <github_password>"
9
9
 
10
10
  opts.on("-users", "-u") do |v|
11
11
  options[:user_file_path] = v
@@ -18,7 +18,14 @@ OptionParser.new do |opts|
18
18
  opts.on("-output", "-o") do |v|
19
19
  options[:output_file_path] = v
20
20
  end
21
+
22
+ opts.on("-github_user", "-n") do |v|
23
+ options[:github_user] = v
24
+ end
21
25
 
26
+ opts.on("-github_password", "-p") do |v|
27
+ options[:github_password] = v
28
+ end
22
29
  end.parse!
23
30
 
24
- ::GhBbAudit::GithubScanner.new(options[:user_file_path], options[:keywords_file_path], options[:output_file_path]).start_scan
31
+ ::GhBbAudit::GithubScanner.new(options[:user_file_path], options[:keywords_file_path], options[:output_file_path], options[:github_user], options[:github_password]).start_scan
@@ -5,7 +5,7 @@ require 'gh_bb_audit/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "github_bitbucket_audit"
8
- spec.version = "0.0.1"
8
+ spec.version = "0.0.2"
9
9
  spec.summary = "Looks for specific keywords in the public repos of github and bitbucket"
10
10
  spec.date = "2014-04-01"
11
11
  spec.description = "The library takes a list of users and searches their public repos for specific keywords"
@@ -1,9 +1,11 @@
1
1
  require 'semantic_logger' unless defined?(logger)
2
2
  require 'github_api'
3
3
 
4
+ SemanticLogger.default_level = :info
5
+ SemanticLogger.add_appender('gh_bb_audit.log')
6
+
4
7
  module GhBbAudit
5
8
  GEM_ROOT = File.join(File.dirname(__FILE__), '..')
6
- logger = SemanticLogger['GithubBitbucketAudit']
7
9
  end
8
10
 
9
11
  require_relative './gh_bb_audit/version'
@@ -13,4 +15,5 @@ require_relative './gh_bb_audit/github_scanner'
13
15
  require_relative './gh_bb_audit/keywords_list'
14
16
  require_relative './gh_bb_audit/keyword_matcher'
15
17
  require_relative './gh_bb_audit/users_list'
18
+ require_relative './gh_bb_audit/github_api'
16
19
  require_relative './gh_bb_audit/output_writer'
@@ -0,0 +1,22 @@
1
+ require 'semantic_logger'
2
+
3
+ module GhBbAudit
4
+ class GithubApi
5
+ include SemanticLogger::Loggable
6
+
7
+ def self.set_user_name_pwd(user_name, password)
8
+ @user_name = user_name
9
+ @password = password
10
+ end
11
+
12
+ def self.get_api_accesor
13
+ if !!@user_name && !!@password
14
+ logger.info("Using Authentication for Github with Username:: #{@user_name}")
15
+ Github.new login: @user_name, password: @password
16
+ else
17
+ Github.new
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -1,5 +1,8 @@
1
+ require 'semantic_logger'
2
+
1
3
  module GhBbAudit
2
4
  class GithubRepo
5
+ include SemanticLogger::Loggable
3
6
  def initialize(user_name,repo_name)
4
7
  @user_name = user_name
5
8
  @repo_name = repo_name
@@ -20,16 +23,20 @@ module GhBbAudit
20
23
 
21
24
  private
22
25
  def get_tree
23
- repo = ::Github::Repos.new user: @user_name, repo: @repo_name
24
- last_commit_sha = repo.commits.all[0].sha rescue nil
26
+ all_commits = begin
27
+ GithubApi.get_api_accesor.repos.commits.all @user_name, @repo_name
28
+ rescue StandardError => e
29
+ logger.error "Error in fetching Commits for Repo::#{@repo_name} for User:: #{@user_name} ", error: e.inspect
30
+ return nil
31
+ end
32
+ last_commit_sha = all_commits[0].sha rescue nil
25
33
  if !last_commit_sha
26
34
  logger.info("Could not find any commit for Github Repo:: #{@repo_name} for User:: #{@user_name}")
27
35
  return nil
28
36
  end
29
- github = ::Github.new
30
- @github_tree ||= github.git_data.trees.get @user_name, @repo_name, last_commit_sha , 'recursive' => true rescue nil
37
+ @github_tree ||= GithubApi.get_api_accesor.git_data.trees.get @user_name, @repo_name, last_commit_sha , 'recursive' => true rescue nil
31
38
  if !@github_tree
32
- logger.info("Could not fetch tree for Repo:: #{@repo_name} for User:: #{@user_name}")
39
+ logger.error("Could not fetch tree for Repo:: #{@repo_name} for User:: #{@user_name}")
33
40
  return
34
41
  end
35
42
  @github_tree.tree
@@ -1,9 +1,13 @@
1
+ require 'semantic_logger'
1
2
  module GhBbAudit
2
3
  class GithubScanner
3
- def initialize(user_csv_path, keyword_csv_path, output_file_path)
4
+ include SemanticLogger::Loggable
5
+
6
+ def initialize(user_csv_path, keyword_csv_path, output_file_path, github_user =nil, github_password =nil)
4
7
  @user_csv_path = user_csv_path
5
8
  @keyword_csv_path = keyword_csv_path
6
9
  @output_file_path = output_file_path
10
+ GithubApi.set_user_name_pwd(github_user, github_password) if github_user && github_password
7
11
  end
8
12
 
9
13
  def start_scan
@@ -13,8 +17,17 @@ module GhBbAudit
13
17
  all_github_user = ::GhBbAudit::UsersList.new(@user_csv_path).all_users
14
18
 
15
19
  all_github_user.each do |user|
20
+ logger.info("Scanning for User:: #{user}")
16
21
  ::GhBbAudit::GithubUser.new(user).public_repos.each do |public_repo|
22
+ logger.info("Scanning Repo:: #{public_repo.name} for User:: #{user}")
23
+ if matcher.repo_contains_keyword?([public_repo.name])
24
+ output_writer.write_red_flag_record(user,public_repo.name)
25
+ break
26
+ end
27
+
28
+
17
29
  file_paths = ::GhBbAudit::GithubRepo.new(user,public_repo.name).get_all_file_paths
30
+
18
31
  if matcher.repo_contains_keyword?(file_paths)
19
32
  output_writer.write_red_flag_record(user,public_repo.name)
20
33
  end
@@ -27,6 +40,7 @@ module GhBbAudit
27
40
  end
28
41
  end
29
42
 
43
+
30
44
  end
31
45
 
32
46
  end
@@ -1,11 +1,20 @@
1
+ require 'semantic_logger'
2
+
1
3
  module GhBbAudit
2
4
  class GithubUser
5
+ include SemanticLogger::Loggable
6
+
3
7
  def initialize(user_name)
4
- @user_name = user_name
8
+ @user_name = user_name
5
9
  end
6
10
 
7
11
  def public_repos
8
- @public_repos ||= (::Github.repos.list user: @user_name rescue [])
12
+ @public_repos ||= begin
13
+ GithubApi.get_api_accesor.repos.list user: @user_name
14
+ rescue StandardError => e
15
+ logger.error "Error in fetching repos for User:: #{@user_name} ", error: e.inspect
16
+ []
17
+ end
9
18
  end
10
19
  end
11
20
  end
@@ -1,3 +1,3 @@
1
1
  module GhBbAudit
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_bitbucket_audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ankur Maheshwari
@@ -67,6 +67,7 @@ files:
67
67
  - bin/gh_bb_audit.rb
68
68
  - gh_bb_audit.gemspec
69
69
  - lib/gh_bb_audit.rb
70
+ - lib/gh_bb_audit/github_api.rb
70
71
  - lib/gh_bb_audit/github_repo.rb
71
72
  - lib/gh_bb_audit/github_scanner.rb
72
73
  - lib/gh_bb_audit/github_user.rb