# coding: utf-8 hestiacp_ruby_gem_version = "3.3.0" Gem.paths = { "GEM_HOME" => "#{__dir__}/vendor/bundle/ruby/#{hestiacp_ruby_gem_version}", "GEM_PATH" => "#{__dir__}/vendor/bundle/ruby/#{hestiacp_ruby_gem_version}", } require "rubygems" require "sinatra" require "puma" require_relative "classes/config" require_relative "classes/gitinfo" require_relative "classes/db" def print_error_page(error_status, error_meaasge) @page_name = "Ошибка выполнения" @status_err = error_status @error_msg = error_meaasge halt erb(:page5xx) end def sanitize_filename(filename) filename = filename.strip sanitized = filename.gsub(/[^a-zA-Z0-9_]/, "_") sanitized.gsub!(/_+/, "_") sanitized.gsub!(/^_+|_+$/, "") sanitized end cfg = IniConfig.new() db = DBase.new() set :port, cfg.get_port set :public_folder, File.dirname(__FILE__) + "/public" use Rack::Session::Pool, :expire_after => 2592000 get "/" do @page_name = "Система сборки rpm пакетов" erb :index end get "/repos/:reponame" do @page_name = params["reponame"] erb :gits end get "/repos" do @page_name = "Список доступных git репозиториев" repo = GitRepo.new(cfg.get_repo, db) if repo.path.nil? print_error_page(503, "Путь к репозиториям не существует") else @repo_data = repo.getrepos erb :gits end end get "/gitcreate" do @page_name = "Создать новый пустой git репозиторий" @error_data = session[:gitcreate_error] session[:gitcreate_error] = nil erb :newgit end post "/gitcreate" do if request.form_data? if params["gitname"].nil? session[:gitcreate_error] = "Не задано имя репозитория" else filename = sanitize_filename(params["gitname"]) if filename != "" repo = GitRepo.new(cfg.get_repo, db) if repo.path.nil? print_error_page(503, "Путь к репозиториям не существует") else if repo.create_git(filename, params["gitdescr"]) != 0 session[:gitcreate_error] = repo.error else redirect "/repos" return end end else session[:gitcreate_error] = "Название репозитория должно содержать только символы a-z, A-Z. 0-9 и _" end end end redirect "/gitcreate" end not_found do status 404 @page_name = "Кто-то потерялся" @req_referer = request.referer erb :page404 end