diff --git a/Gemfile b/Gemfile index 779f146..5e60a1d 100644 --- a/Gemfile +++ b/Gemfile @@ -56,3 +56,5 @@ group :test do gem "capybara" gem "selenium-webdriver" end + +gem "open3", "~> 0.2.1" diff --git a/Gemfile.lock b/Gemfile.lock index 77b42ca..7a06f47 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -147,6 +147,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + open3 (0.2.1) psych (5.1.2) stringio public_suffix (6.0.1) @@ -251,6 +252,7 @@ DEPENDENCIES debug importmap-rails jbuilder + open3 (~> 0.2.1) puma (>= 5.0) rails (~> 7.1.3, >= 7.1.3.4) selenium-webdriver diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index 23de56a..7e43352 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -1,2 +1,23 @@ +require 'open3' + module HomeHelper + + def list_all_users + stdout, stderr, status = Open3.capture3('getent', 'passwd') + return [] unless status.success? + valid_users = stdout.split("\n").select { |user| user.start_with?(/\w/) }.map(&:split).map(&:first) + valid_users.map do |user| + user.split(':')[0] + end + end + + def users_with_public_html(users) + users.select do |user| + home_dir = Dir.home(user) + File.exist?(File.join(home_dir, 'public_html')) + end + end + + users = list_all_users + users_with_public_html(users) end diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 5655274..897fa33 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -7,14 +7,9 @@

Members