service object to write out config files
This commit is contained in:
parent
44cc15befd
commit
c5e79fc427
3
_vsftpd/ftpd.passwd
Normal file
3
_vsftpd/ftpd.passwd
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
client-two:$1$Uoqdsd1f$A39luV6N91OtA/VvcdBfC0
|
||||||
|
client-one:$1$cVA6ZMIU$K/ITsDMZWeEDFEvoWk0op.
|
||||||
|
client-three:$1$pGYnsuhu$3MPEsgikbEhX1mZQE/qDc/
|
1
_vsftpd/users/client-one
Normal file
1
_vsftpd/users/client-one
Normal file
@ -0,0 +1 @@
|
|||||||
|
local_root=_vsftpd/root/client_one
|
1
_vsftpd/users/client-three
Normal file
1
_vsftpd/users/client-three
Normal file
@ -0,0 +1 @@
|
|||||||
|
local_root=_vsftpd/root/client_three
|
1
_vsftpd/users/client-two
Normal file
1
_vsftpd/users/client-two
Normal file
@ -0,0 +1 @@
|
|||||||
|
local_root=_vsftpd/root/client_two
|
36
app/services/ftp_config.rb
Normal file
36
app/services/ftp_config.rb
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
class FtpConfig
|
||||||
|
def build_password_list accounts
|
||||||
|
File.open(password_file, "w+") do |file|
|
||||||
|
Array(accounts).each do |account|
|
||||||
|
file.write "#{account.username}:#{hash_password(account.password)}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_user_configs accounts
|
||||||
|
Array(accounts).each do |account|
|
||||||
|
File.open("#{config_path}#{account.username}", "w+") do |file|
|
||||||
|
file.write "local_root=#{ftp_root}#{account.home_folder}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def password_file
|
||||||
|
AppConfig.htpasswd
|
||||||
|
end
|
||||||
|
|
||||||
|
def config_path
|
||||||
|
AppConfig.ftpusers
|
||||||
|
end
|
||||||
|
|
||||||
|
def ftp_root
|
||||||
|
AppConfig.ftproot
|
||||||
|
end
|
||||||
|
|
||||||
|
def hash_password password
|
||||||
|
`openssl passwd -1 -noverify -quiet #{password}`
|
||||||
|
end
|
||||||
|
end
|
@ -10,6 +10,9 @@ defaults: &defaults
|
|||||||
client_key: client-id
|
client_key: client-id
|
||||||
secret_key: client-secret
|
secret_key: client-secret
|
||||||
callback_url: local-callback
|
callback_url: local-callback
|
||||||
|
htpasswd: "/path/to/vsftpd/password.file"
|
||||||
|
ftpusers: "/path/to/vsftpd/users/configs"
|
||||||
|
ftproot: "/path/to/root/ftp/prefix/"
|
||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
12
test/fixtures/accounts.yml
vendored
12
test/fixtures/accounts.yml
vendored
@ -5,3 +5,15 @@ account1:
|
|||||||
password: <%= CryptSerializer.dump('1q2w3e4r5t6y7u') %>
|
password: <%= CryptSerializer.dump('1q2w3e4r5t6y7u') %>
|
||||||
home_folder: client_one
|
home_folder: client_one
|
||||||
contact_email: ftp-user@mailinator.com
|
contact_email: ftp-user@mailinator.com
|
||||||
|
|
||||||
|
account2:
|
||||||
|
username: client-two
|
||||||
|
password: <%= CryptSerializer.dump('azsxdcfvgbhnjmk,l.;/') %>
|
||||||
|
home_folder: client_two
|
||||||
|
contact_email: ftp-user@mailinator.com
|
||||||
|
|
||||||
|
account3:
|
||||||
|
username: client-three
|
||||||
|
password: <%= CryptSerializer.dump('p0o9i8u7y6t5r4e3w2q1') %>
|
||||||
|
home_folder: client_three
|
||||||
|
contact_email: ftp-user@mailinator.com
|
||||||
|
21
test/services/ftp_config_test.rb
Normal file
21
test/services/ftp_config_test.rb
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class FtpConfigTest < ActiveSupport::TestCase
|
||||||
|
test 'should write new password file' do
|
||||||
|
config = FtpConfig.new
|
||||||
|
config.build_password_list Account.all
|
||||||
|
|
||||||
|
assert_match "#{accounts(:account2).username}:", File.read(AppConfig.htpasswd)
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'should build user config files' do
|
||||||
|
config = FtpConfig.new
|
||||||
|
config.build_user_configs Account.all
|
||||||
|
|
||||||
|
account = accounts(:account1)
|
||||||
|
fconfig = File.read("#{AppConfig.ftpusers}#{account.username}")
|
||||||
|
|
||||||
|
assert_match account.home_folder, fconfig
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user