125 lines
3.9 KiB
Modula-2
125 lines
3.9 KiB
Modula-2
|
|
#!/opt/brepo/ruby33/bin/ruby
|
||
|
|
|
||
|
|
class BunkerwebWorker < Kernel::ModuleCoreWorker
|
||
|
|
MODULE_ID = "bunkerweb_module"
|
||
|
|
|
||
|
|
def info
|
||
|
|
{
|
||
|
|
ID: 5,
|
||
|
|
NAME: MODULE_ID,
|
||
|
|
DESCR: "Bunkerweb enabling",
|
||
|
|
REQ: "",
|
||
|
|
CONF: "yes",
|
||
|
|
}
|
||
|
|
end
|
||
|
|
|
||
|
|
def command(args)
|
||
|
|
return log_return("Not enough arguments. Needed command") if args.length < 1
|
||
|
|
log_file = get_log
|
||
|
|
|
||
|
|
m_command = args[0].strip
|
||
|
|
case m_command
|
||
|
|
when "add"
|
||
|
|
m_domain = args[1].strip unless args[1].nil?
|
||
|
|
if m_domain.nil?
|
||
|
|
log_return("Domain should be specified. #{args}")
|
||
|
|
else
|
||
|
|
|
||
|
|
log("add domain to bunkerweb protection")
|
||
|
|
output = `/usr/local/hestia/bin/v-bunkerweb-module add #{m_domain} shell`
|
||
|
|
exit_status = $?.exitstatus
|
||
|
|
if exit_status != 0
|
||
|
|
log_return("Command failed with status #{exit_status}")
|
||
|
|
else
|
||
|
|
ACTION_OK
|
||
|
|
end
|
||
|
|
end
|
||
|
|
when "delete"
|
||
|
|
m_domain = args[1].strip unless args[1].nil?
|
||
|
|
if m_domain.nil?
|
||
|
|
log_return("Domain should be specified. #{args}")
|
||
|
|
else
|
||
|
|
|
||
|
|
log("add domain to bunkerweb protection")
|
||
|
|
output = `/usr/local/hestia/bin/v-bunkerweb-module delete #{m_domain} shell`
|
||
|
|
exit_status = $?.exitstatus
|
||
|
|
if exit_status != 0
|
||
|
|
log_return("Command failed with status #{exit_status}")
|
||
|
|
else
|
||
|
|
ACTION_OK
|
||
|
|
end
|
||
|
|
end
|
||
|
|
when "addssl"
|
||
|
|
m_domain = args[1].strip unless args[1].nil?
|
||
|
|
m_ssl_cert = args[2].strip unless args[2].nil?
|
||
|
|
m_ssl_key = args[3].strip unless args[3].nil?
|
||
|
|
if m_domain.nil? || m_ssl_cert.nil? || m_ssl_key.nil? || m_ssl_cert.empty? || m_ssl_key.empty?
|
||
|
|
log_return("Domain, SSL cert and SSL key must be specified. #{args}")
|
||
|
|
else
|
||
|
|
log("add ssl cert to bunkerweb protection")
|
||
|
|
output = `/usr/local/hestia/bin/v-bunkerweb-module addssl #{m_domain} #{m_ssl_cert} #{m_ssl_key} shell`
|
||
|
|
exit_status = $?.exitstatus
|
||
|
|
if exit_status != 0
|
||
|
|
log_return("Command failed with status #{exit_status}")
|
||
|
|
else
|
||
|
|
ACTION_OK
|
||
|
|
end
|
||
|
|
end
|
||
|
|
when "updssl"
|
||
|
|
m_domain = args[1].strip unless args[1].nil?
|
||
|
|
m_ssl_cert = args[2].strip unless args[2].nil?
|
||
|
|
m_ssl_key = args[3].strip unless args[3].nil?
|
||
|
|
if m_domain.nil? || m_ssl_cert.nil? || m_ssl_key.nil? || m_ssl_cert.empty? || m_ssl_key.empty?
|
||
|
|
log_return("Domain, SSL cert and SSL key must be specified. #{args}")
|
||
|
|
else
|
||
|
|
log("add ssl cert to bunkerweb protection")
|
||
|
|
output = `/usr/local/hestia/bin/v-bunkerweb-module updssl #{m_domain} #{m_ssl_cert} #{m_ssl_key} shell`
|
||
|
|
exit_status = $?.exitstatus
|
||
|
|
if exit_status != 0
|
||
|
|
log_return("Command failed with status #{exit_status}")
|
||
|
|
else
|
||
|
|
ACTION_OK
|
||
|
|
end
|
||
|
|
end
|
||
|
|
when "list"
|
||
|
|
format = (args[1].nil? ? "shell" : args[1].strip)
|
||
|
|
log("list of services")
|
||
|
|
output = `/usr/local/hestia/bin/v-bunkerweb-module list #{format}`
|
||
|
|
exit_status = $?.exitstatus
|
||
|
|
if exit_status != 0
|
||
|
|
log_return("Command failed with status #{exit_status}")
|
||
|
|
else
|
||
|
|
puts output
|
||
|
|
ACTION_OK
|
||
|
|
end
|
||
|
|
when "help"
|
||
|
|
puts "#{$0} bunkerweb_module COMMAND [OPTIONS] [json|csv|plain]"
|
||
|
|
puts "COMMANDS:"
|
||
|
|
puts " add - add domain to bunkerweb"
|
||
|
|
puts " delete - delete domain from bunkerweb"
|
||
|
|
puts " addssl [path_to_cert] [path_to_key] - add existsing certificate to bunkerweb domain"
|
||
|
|
puts " updssl [path_to_cert] [path_to_key] - update existsing certificate to bunkerweb domain"
|
||
|
|
puts " help - help"
|
||
|
|
ACTION_OK
|
||
|
|
else
|
||
|
|
log_return("Unknown command. #{args}")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
implements IPluginInterface
|
||
|
|
end
|
||
|
|
|
||
|
|
module BunkerwebModule
|
||
|
|
def get_object
|
||
|
|
Proc.new { BunkerwebWorker.new }
|
||
|
|
end
|
||
|
|
|
||
|
|
module_function :get_object
|
||
|
|
end
|
||
|
|
|
||
|
|
class Kernel::PluginConfiguration
|
||
|
|
include BunkerwebModule
|
||
|
|
|
||
|
|
@@loaded_plugins[BunkerwebWorker::MODULE_ID] = BunkerwebModule.get_object
|
||
|
|
end
|