neetob 0.5.68 → 0.5.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.env +2 -1
  3. data/.neetoci/default.yml +1 -1
  4. data/.ruby-version +1 -1
  5. data/Gemfile.lock +44 -21
  6. data/README.md +11 -0
  7. data/bookmarks.md +113 -113
  8. data/data/github-labels.json +80 -45
  9. data/data/repo-team-leads.json +82 -0
  10. data/exe/neetob +1 -1
  11. data/lib/neetob/cli/base.rb +67 -5
  12. data/lib/neetob/cli/cloudflare/automatic_https_rewrites.rb +34 -0
  13. data/lib/neetob/cli/cloudflare/base.rb +2 -2
  14. data/lib/neetob/cli/cloudflare/commands.rb +7 -0
  15. data/lib/neetob/cli/github/active_record_doctor.rb +1 -1
  16. data/lib/neetob/cli/github/brakeman.rb +1 -1
  17. data/lib/neetob/cli/github/bundle_audit.rb +1 -1
  18. data/lib/neetob/cli/github/issues/helpers.rb +40 -0
  19. data/lib/neetob/cli/github/make_pr/base.rb +1 -1
  20. data/lib/neetob/cli/github/repositories/pull_requests.rb +19 -0
  21. data/lib/neetob/cli/github/repositories/team_leads.rb +34 -0
  22. data/lib/neetob/cli/github/unused_assets_audit.rb +5 -1
  23. data/lib/neetob/cli/monthly_audit/commands.rb +2 -1
  24. data/lib/neetob/cli/monthly_audit/databases/users_unique_email_index.rb +6 -1
  25. data/lib/neetob/cli/monthly_audit/databases/uuid_primary_key.rb +8 -0
  26. data/lib/neetob/cli/monthly_audit/github_issue_creation.rb +75 -0
  27. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/always_use_https_is_enabled.rb +11 -0
  28. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/automatic_https_rewrites_is_enabled.rb +43 -0
  29. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/dns_entry_has_proxy_status.rb +9 -0
  30. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/main.rb +2 -2
  31. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/minimum_tls_version_is_one_point_two.rb +11 -0
  32. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/spf_records_are_valid.rb +9 -0
  33. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/ssl_tls_encryption_mode_set_to_full.rb +9 -0
  34. data/lib/neetob/cli/monthly_audit/instances_and_addons/cronitor/setup_correctly_for_apps.rb +10 -0
  35. data/lib/neetob/cli/monthly_audit/instances_and_addons/cronitor/setup_correctly_for_help_center.rb +12 -0
  36. data/lib/neetob/cli/monthly_audit/instances_and_addons/cronitor/setup_correctly_for_landing_pages.rb +15 -2
  37. data/lib/neetob/cli/monthly_audit/instances_and_addons/honeybadger/setup_correctly_for_apps.rb +28 -29
  38. data/lib/neetob/cli/monthly_audit/instances_and_addons/main.rb +5 -5
  39. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/cloudfront_cdn_enabled.rb +11 -17
  40. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/essential_environment_variables_set.rb +7 -10
  41. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/main.rb +0 -3
  42. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/scheduled_exports_enabled.rb +8 -4
  43. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/ssl_certificates_over_thirty_days_from_expiry.rb +69 -24
  44. data/lib/neetob/cli/monthly_audit/misc/main.rb +1 -1
  45. data/lib/neetob/cli/monthly_audit/misc/redirections_working_correctly.rb +14 -1
  46. data/lib/neetob/cli/monthly_audit/misc/sparkpost_sub_account_used_for_all_apps.rb +24 -18
  47. data/lib/neetob/cli/monthly_audit/perform.rb +7 -2
  48. data/lib/neetob/cli/monthly_audit/security/code/active_record_doctor.rb +10 -5
  49. data/lib/neetob/cli/monthly_audit/security/code/brakeman.rb +10 -2
  50. data/lib/neetob/cli/monthly_audit/security/code/bundle_audit.rb +19 -6
  51. data/lib/neetob/cli/monthly_audit/security/code/checks_for_unused_assets.rb +5 -0
  52. data/lib/neetob/cli/monthly_audit/security/code/fasterer.rb +10 -2
  53. data/lib/neetob/cli/monthly_audit/security/code/yarn_audit.rb +6 -1
  54. data/lib/neetob/cli/monthly_audit/security/github/dependabot_prs_merged.rb +20 -0
  55. data/lib/neetob/cli/monthly_audit/security/github/dependabot_turned_on.rb +25 -21
  56. data/lib/neetob/cli/neeto_deploy/autoscaling_config.rb +1 -1
  57. data/lib/neetob/cli/neeto_deploy/certificates.rb +1 -1
  58. data/lib/neetob/cli/neeto_deploy/commands.rb +7 -0
  59. data/lib/neetob/cli/neeto_deploy/config_vars/list.rb +1 -1
  60. data/lib/neetob/cli/neeto_deploy/config_vars/remove.rb +1 -1
  61. data/lib/neetob/cli/neeto_deploy/config_vars/upsert.rb +1 -1
  62. data/lib/neetob/cli/neeto_deploy/scheduled_exports.rb +1 -1
  63. data/lib/neetob/cli/neeto_deploy/unique_email_domains.rb +165 -0
  64. data/lib/neetob/cli/sre/base.rb +13 -13
  65. data/lib/neetob/cli/sre/check_essential_env.rb +7 -2
  66. data/lib/neetob/cli/sre/checklist.rb +2 -2
  67. data/lib/neetob/version.rb +1 -1
  68. data/neetob.gemspec +1 -1
  69. data/package.json +30 -0
  70. data/playwright.config.ts +39 -0
  71. data/scripts/config/.env.local +17 -0
  72. data/scripts/constants/auditData.ts +402 -0
  73. data/scripts/constants/routes.ts +30 -0
  74. data/scripts/constants/selectors.ts +4 -0
  75. data/scripts/constants/table.ts +30 -0
  76. data/scripts/constants/texts.ts +46 -0
  77. data/scripts/constants/userAgents.ts +14 -0
  78. data/scripts/utils/markdown.ts +23 -0
  79. data/scripts/workflows/dependabot.ts +104 -0
  80. data/scripts/workflows/honeybadger.ts +169 -0
  81. data/scripts/workflows/sparkpost.ts +204 -0
  82. data/tsconfig.json +35 -0
  83. data/yarn.lock +2216 -0
  84. metadata +26 -6
  85. data/lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/bot_protection_enabled.rb +0 -32
  86. data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/auto_scaling_enabled.rb +0 -60
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.68
4
+ version: 0.5.77
5
5
  platform: ruby
6
6
  authors:
7
7
  - Udai Gupta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-26 00:00:00.000000000 Z
11
+ date: 2026-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: 1.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.0
26
+ version: 1.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: octokit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -211,6 +211,7 @@ files:
211
211
  - data/config-vars-list.json
212
212
  - data/config-vars-upsert.json
213
213
  - data/github-labels.json
214
+ - data/repo-team-leads.json
214
215
  - docs/development.md
215
216
  - docs/testing.md
216
217
  - exe/neetob
@@ -220,6 +221,7 @@ files:
220
221
  - lib/neetob/cli.rb
221
222
  - lib/neetob/cli/base.rb
222
223
  - lib/neetob/cli/cloudflare/always_use_https.rb
224
+ - lib/neetob/cli/cloudflare/automatic_https_rewrites.rb
223
225
  - lib/neetob/cli/cloudflare/base.rb
224
226
  - lib/neetob/cli/cloudflare/bot_fight_mode.rb
225
227
  - lib/neetob/cli/cloudflare/commands.rb
@@ -245,6 +247,7 @@ files:
245
247
  - lib/neetob/cli/github/issues/commands.rb
246
248
  - lib/neetob/cli/github/issues/create.rb
247
249
  - lib/neetob/cli/github/issues/create_product_sub_issues.rb
250
+ - lib/neetob/cli/github/issues/helpers.rb
248
251
  - lib/neetob/cli/github/issues/list.rb
249
252
  - lib/neetob/cli/github/labels/commands.rb
250
253
  - lib/neetob/cli/github/labels/delete.rb
@@ -261,6 +264,7 @@ files:
261
264
  - lib/neetob/cli/github/protect_branch.rb
262
265
  - lib/neetob/cli/github/repositories/get_security_details.rb
263
266
  - lib/neetob/cli/github/repositories/pull_requests.rb
267
+ - lib/neetob/cli/github/repositories/team_leads.rb
264
268
  - lib/neetob/cli/github/search.rb
265
269
  - lib/neetob/cli/github/unused_assets_audit.rb
266
270
  - lib/neetob/cli/github/yarn_audit.rb
@@ -287,8 +291,9 @@ files:
287
291
  - lib/neetob/cli/monthly_audit/databases/main.rb
288
292
  - lib/neetob/cli/monthly_audit/databases/users_unique_email_index.rb
289
293
  - lib/neetob/cli/monthly_audit/databases/uuid_primary_key.rb
294
+ - lib/neetob/cli/monthly_audit/github_issue_creation.rb
290
295
  - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/always_use_https_is_enabled.rb
291
- - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/bot_protection_enabled.rb
296
+ - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/automatic_https_rewrites_is_enabled.rb
292
297
  - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/dns_entry_has_proxy_status.rb
293
298
  - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/main.rb
294
299
  - lib/neetob/cli/monthly_audit/instances_and_addons/cloudflare/minimum_tls_version_is_one_point_two.rb
@@ -301,7 +306,6 @@ files:
301
306
  - lib/neetob/cli/monthly_audit/instances_and_addons/honeybadger/main.rb
302
307
  - lib/neetob/cli/monthly_audit/instances_and_addons/honeybadger/setup_correctly_for_apps.rb
303
308
  - lib/neetob/cli/monthly_audit/instances_and_addons/main.rb
304
- - lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/auto_scaling_enabled.rb
305
309
  - lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/cloudfront_cdn_enabled.rb
306
310
  - lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/essential_environment_variables_set.rb
307
311
  - lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/main.rb
@@ -331,6 +335,7 @@ files:
331
335
  - lib/neetob/cli/neeto_deploy/config_vars/remove.rb
332
336
  - lib/neetob/cli/neeto_deploy/config_vars/upsert.rb
333
337
  - lib/neetob/cli/neeto_deploy/scheduled_exports.rb
338
+ - lib/neetob/cli/neeto_deploy/unique_email_domains.rb
334
339
  - lib/neetob/cli/redirections/check.rb
335
340
  - lib/neetob/cli/redirections/commands.rb
336
341
  - lib/neetob/cli/sre/base.rb
@@ -352,8 +357,23 @@ files:
352
357
  - lib/neetob/version.rb
353
358
  - neetob.gemspec
354
359
  - overcommit.yml
360
+ - package.json
361
+ - playwright.config.ts
355
362
  - scripts/add_label_to_milestone_issues.sh
363
+ - scripts/config/.env.local
364
+ - scripts/constants/auditData.ts
365
+ - scripts/constants/routes.ts
366
+ - scripts/constants/selectors.ts
367
+ - scripts/constants/table.ts
368
+ - scripts/constants/texts.ts
369
+ - scripts/constants/userAgents.ts
356
370
  - scripts/delete_unused_assets.rb
371
+ - scripts/utils/markdown.ts
372
+ - scripts/workflows/dependabot.ts
373
+ - scripts/workflows/honeybadger.ts
374
+ - scripts/workflows/sparkpost.ts
375
+ - tsconfig.json
376
+ - yarn.lock
357
377
  homepage: https://github.com/bigbinary/neetob
358
378
  licenses:
359
379
  - MIT
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Neetob
4
- class CLI
5
- module MonthlyAudit
6
- module InstancesAndAddons
7
- module Cloudflare
8
- class BotProtectionEnabled < CLI::Base
9
- def initialize
10
- super()
11
- end
12
-
13
- def run
14
- ui.success "### 3.2.6. Checking whether Bot Protection is enabled"
15
-
16
- domains_data = [["Domain", "Bot protection", "Audit Passed"]]
17
- ui.info("\n", print_to_audit_log: false)
18
- Neetob::CLI::Cloudflare::Base::ZONE_IDS.keys.select { |domain|
19
- domain.to_s.include?(".com") }.map do |domain|
20
- bot_fight_mode = Neetob::CLI::Cloudflare::BotFightMode.new(domain).run
21
- ui.info("Checking Bot fight mode for #{domain}", print_to_audit_log: false)
22
- audit_passed = bot_fight_mode == "on" ? "Yes" : "No"
23
- domains_data << [domain, bot_fight_mode, audit_passed]
24
- end
25
- ui.print_table(domains_data)
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Neetob
4
- class CLI
5
- module MonthlyAudit
6
- module InstancesAndAddons
7
- module NeetoDeployOrHeroku
8
- class AutoScalingEnabled < CLI::Base
9
- def initialize
10
- super()
11
- end
12
-
13
- def run
14
- ui.success "### 3.1.4. Checking whether auto-scaling is enabled"
15
-
16
- apps_data = [["App", "Autoscaling config", "Comments", "Audit Passed"]]
17
- ui.info("\n", print_to_audit_log: false)
18
- last_comment = nil
19
- Neetob::CLI::Sre::Base::APPS_LIST[:neetodeploy].select { |app| app.include?("production") }.each do |app|
20
- ui.info("Checking auto_scaling config for #{app}", print_to_audit_log: false)
21
- autoscaling_config_result = Neetob::CLI::NeetoDeploy::AutoscalingConfig.new(app).run
22
- audit_passed = nil
23
- comments = nil
24
- autoscaling_config = nil
25
- if autoscaling_config_result.is_a?(Hash) && autoscaling_config_result["error"] == "Forbidden"
26
- audit_passed = "No"
27
- comments = "You do not have permission to access the config for this app."
28
- else
29
- autoscaling_config = JSON.parse(autoscaling_config_result.gsub("=>", ":"))
30
- autoscaling_turned_on_for_web = autoscaling_config["web"]
31
-
32
- audit_passed = autoscaling_turned_on_for_web ? "Yes" : "No"
33
- if audit_passed == "No"
34
- comments = "Auto-scaling is not enabled for web dynos."
35
- same_as_last_comment = comments == last_comment
36
- last_comment = comments
37
- comments = "''" if same_as_last_comment
38
- end
39
- end
40
- apps_data << [app, autoscaling_config, comments, audit_passed]
41
- end
42
- Neetob::CLI::Sre::Base::APPS_LIST[:heroku].select { |app| app.include?("production") }.each do |app|
43
- ui.info("Checking auto_scaling config for #{app}", print_to_audit_log: false)
44
- autoscaling_config_result = Neetob::CLI::Heroku::AutoscalingConfig.new(app).run
45
- comments = nil
46
-
47
- audit_passed = autoscaling_config_result[:judoscale_addon_enabled] ? "Yes" : "No"
48
- if audit_passed == "No"
49
- comments = "Judoscale addon is not enabled"
50
- end
51
- apps_data << [app, autoscaling_config_result, comments, audit_passed]
52
- end
53
- ui.print_table(apps_data)
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end