From a1fd98601281b5c34f72a5dfad10b94feb0c2b9c Mon Sep 17 00:00:00 2001 From: alexey Date: Sat, 22 Mar 2025 21:30:36 +0300 Subject: [PATCH] Sign. Part 3 --- Gemfile | 2 ++ Gemfile.lock | 2 ++ app.rb | 42 +++++++++++++++++++++++++++++++++++++++--- classes/repomanage.rb | 3 ++- logs/empty | 0 mockgui.service | 19 +++++++++++++++++++ repoview/template.erb | 9 +++++---- 7 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 logs/empty create mode 100644 mockgui.service diff --git a/Gemfile b/Gemfile index c04c53e..6541ac4 100644 --- a/Gemfile +++ b/Gemfile @@ -36,3 +36,5 @@ gem "sequel", "~> 5.89" gem "ffi", "~> 1.17" gem "ptools", "~> 1.5" + +gem "ostruct", "~> 0.6.1" diff --git a/Gemfile.lock b/Gemfile.lock index 90f9d74..ca0fadf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -103,6 +103,7 @@ GEM mustermann (3.0.3) ruby2_keywords (~> 0.0.1) nio4r (2.7.4) + ostruct (0.6.1) ptools (1.5.0) public_suffix (6.0.1) puma (6.6.0) @@ -175,6 +176,7 @@ DEPENDENCIES ffi (~> 1.17) inifile (~> 3.0) json (~> 1.8) + ostruct (~> 0.6.1) ptools (~> 1.5) puma (~> 6.6) rackup (~> 2.2) diff --git a/app.rb b/app.rb index 0590eff..15c4a06 100644 --- a/app.rb +++ b/app.rb @@ -19,6 +19,16 @@ require_relative "classes/utilities" require_relative "classes/projects" require_relative "classes/configs" +configure do + log_file = File.new("logs/actions.log", "a+") + + STDOUT.reopen(log_file) + STDERR.reopen(log_file) + + STDOUT.sync = true + STDERR.sync = true +end + def print_error_page(error_status, error_meaasge) @page_name = "Ошибка выполнения" @status_err = error_status @@ -1339,8 +1349,7 @@ get "/prjsignview/:id" do else gpgKeys = RepoManagerKeys.new(cfg.get_keys_path) if gpgKeys.check_key_exists - sign_path = prj.get_sign_path(params["id"]) - send_file File.join(sign_path, "index.html") + redirect "/prjsignview/#{params["id"]}/" else @page_name = "Ошибка подписания проекта #{prj_info[:projname]}" erb :gpgerror @@ -1350,7 +1359,34 @@ get "/prjsignview/:id" do end get "/prjsignview/:id/*" do - "test" + data_path = params[:splat] + pp data_path + if data_path.nil? || data_path.first.strip == "" + data_path = "index.html" + end + prj = ProjectsActions.new(cfg.get_projects_path, db) + if prj.path.nil? + print_error_page(503, "Путь к проектам не существует") + else + prj_info = prj.get_project(params["id"]) + if prj_info.nil? + print_error_page(503, "Путь к проектам не существует") + else + gpgKeys = RepoManagerKeys.new(cfg.get_keys_path) + if gpgKeys.check_key_exists + sign_path = prj.get_sign_path(params["id"]) + f_path = File.join(sign_path, data_path) + if File.exist? (f_path) + send_file f_path + else + status 404 + end + else + @page_name = "Ошибка подписания проекта #{prj_info[:projname]}" + erb :gpgerror + end + end + end end not_found do diff --git a/classes/repomanage.rb b/classes/repomanage.rb index 6ac1f05..32461d0 100644 --- a/classes/repomanage.rb +++ b/classes/repomanage.rb @@ -97,6 +97,7 @@ class RepoManager end pkg_info = {} pkg_info[:fname] = fileName + pkg_info[:aname] = item pkg_info[:stat] = File.stat(full_rpm_path).ctime if info[:error].nil? pkg_info[:chlog] = info[:pkginfo].changelog.first(5) @@ -116,7 +117,7 @@ class RepoManager end data_keys.sort! data_keys.each do |item| - repo_data << result[item] + repo_data << [result[item], item] end tpl_file = File.join(template_dir, "template.erb") template = File.read(tpl_file) diff --git a/logs/empty b/logs/empty new file mode 100644 index 0000000..e69de29 diff --git a/mockgui.service b/mockgui.service new file mode 100644 index 0000000..bd2cf4e --- /dev/null +++ b/mockgui.service @@ -0,0 +1,19 @@ +[Unit] +Description=MockGUI application server +After=syslog.target network.target + +[Service] +Type=simple +User=alexey +Group=alexey +Environment=RACK_ENV=production +WorkingDirectory=/home/mock-gui/mock-gui +ExecStart=/home/alexey/.rvm/gems/ruby-3.3.7/bin/bundle exec /home/alexey/.rvm/rubies/ruby-3.3.7/bin/ruby app.rb +UMask=0002 +RestartSec=1 +Restart=on-failure +SyslogIdentifier=mockgui_server +LimitNOFILE=15360 + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/repoview/template.erb b/repoview/template.erb index a3454fe..a7cbe40 100644 --- a/repoview/template.erb +++ b/repoview/template.erb @@ -36,26 +36,27 @@ gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo

- <% item.each_with_index do |idata, jndex| %> + <% item[0].each_with_index do |idata, jndex| %>

    +
  • Скачать пакет - <%= idata[:fname] %>
  • <% idata[:chlog].each do |chlg| %> -
  • - <%= chlg.text %>
  • +
  • <%= chlg.text %>
  • <% end %>