diff options
author | Max Magorsch <arzano@gentoo.org> | 2020-04-18 02:38:35 +0200 |
---|---|---|
committer | Max Magorsch <arzano@gentoo.org> | 2020-04-18 02:50:54 +0200 |
commit | 35a41e63ebd5f6cf9d17419c150eb53a005d2e87 (patch) | |
tree | e0bcc21bbb1e7e200857cfbd52acb82b008a3a6d /lib/bugzilla.rb | |
parent | Display version and last update in the footer (diff) | |
download | glsamaker-35a41e63ebd5f6cf9d17419c150eb53a005d2e87.tar.gz glsamaker-35a41e63ebd5f6cf9d17419c150eb53a005d2e87.tar.bz2 glsamaker-35a41e63ebd5f6cf9d17419c150eb53a005d2e87.zip |
Add the initial version of the rewritten glsamaker
The glsamaker has been completly rewritten in go. It is
using postgres instead of mysql now. The look and feel is
based on tyrian.
Signed-off-by: Max Magorsch <arzano@gentoo.org>
Diffstat (limited to 'lib/bugzilla.rb')
-rw-r--r-- | lib/bugzilla.rb | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/lib/bugzilla.rb b/lib/bugzilla.rb deleted file mode 100644 index d6af1b3..0000000 --- a/lib/bugzilla.rb +++ /dev/null @@ -1,195 +0,0 @@ -# ===GLSAMaker v2 -# Copyright (C) 2009-2011 Alex Legler <a3li@gentoo.org> -# Copyright (C) 2009 Pierre-Yves Rofes <py@gentoo.org> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# For more information, see the LICENSE file. - -require 'nokogiri' -require 'fileutils' -require 'xmlrpc/client' - -module Bugzilla ; end - -%w[ comment history bug ].each {|lib| require File.join(File.dirname(__FILE__), "bugzilla/#{lib}")} - -# Bugzilla module -module Bugzilla - module_function - # Adds a comment to a bug. Returns the comment id on success, raises an exception on failure. - def add_comment(bug, comment) - if GLSAMAKER_BUGZIE_SKIP - Rails.logger.info 'Skipped Bugzilla.add_comment' - return - end - - Rails.logger.debug 'Called Bugzilla.add_comment' - did_retry = false - - begin - client, token = xmlrpc_client - - result = client.call('Bug.add_comment', { - 'id' => bug.to_i, - 'comment' => comment, - 'Bugzilla_token' => token, - }) - result['id'] - rescue XMLRPC::FaultException => e - if did_retry - raise "Could not add the comment: #{e.faultString} (code #{e.faultCode})" - end - - # If we need to log in first - if e.faultCode == 410 - Rails.logger.debug "Not logged in, doing that now." - log_in - did_retry = true - retry - else - raise "Could not add the comment: #{e.faultString} (code #{e.faultCode})" - end - end - - end - - # Updates a bug. Returns an array of changes that were done on the bug. - def update_bug(bug, changes = {}) - if GLSAMAKER_BUGZIE_SKIP - Rails.logger.info 'Skipped Bugzilla.update_bug' - return - end - - Rails.logger.debug 'Called Bugzilla.update_bug' - did_retry = false - - begin - client, token = xmlrpc_client - - rpc_data = {} - rpc_data['ids'] = [bug] - rpc_data['component'] = changes[:component] if changes.has_key?(:component) - rpc_data['product'] = changes[:product] if changes.has_key?(:product) - rpc_data['summary'] = changes[:summary] if changes.has_key?(:summary) - rpc_data['version'] = changes[:version] if changes.has_key?(:version) - rpc_data['comment'] = {'body' => changes[:comment]} if changes.has_key?(:comment) - rpc_data['priority'] = changes[:priority] if changes.has_key?(:priority) - rpc_data['severity'] = changes[:severity] if changes.has_key?(:severity) - rpc_data['alias'] = changes[:alias] if changes.has_key?(:alias) - rpc_data['assigned_to'] = changes[:assignee] if changes.has_key?(:assignee) - #rpc_data['cc'] = changes[:cc].to_a if changes.has_key?(:cc) TODO: add and remove - rpc_data['status'] = changes[:status] if changes.has_key?(:status) - rpc_data['whiteboard'] = changes[:whiteboard] if changes.has_key?(:whiteboard) - rpc_data['url'] = changes[:url] if changes.has_key?(:url) - rpc_data['resolution'] = changes[:resolution] if changes.has_key?(:resolution) - rpc_data['Bugzilla_token'] = token - - result = client.call('Bug.update', rpc_data) - result['bugs'].first - rescue XMLRPC::FaultException => e - if did_retry - raise "Could not file the bug: #{e.faultString} (code #{e.faultCode})" - end - - # If we need to log in first - if e.faultCode == 410 - Rails.logger.debug "Not logged in, doing that now." - log_in - did_retry = true - retry - else - raise "Could not file the bug: #{e.faultString} (code #{e.faultCode})" - end - end - end - - # Files a bug, and returns the id of the filed bug - def file_bug(data) - if GLSAMAKER_BUGZIE_SKIP - Rails.logger.info 'Skipped Bugzilla.file_bug' - return - end - - Rails.logger.debug 'Called Bugzilla.file_bug' - did_retry = false - - begin - client, token = xmlrpc_client - - rpc_data = {} - rpc_data['component'] = data[:component] if data.has_key?(:component) - rpc_data['product'] = data[:product] if data.has_key?(:product) - rpc_data['summary'] = data[:summary] if data.has_key?(:summary) - rpc_data['version'] = data[:version] if data.has_key?(:version) - rpc_data['description'] = data[:comment] if data.has_key?(:comment) - rpc_data['priority'] = data[:priority] if data.has_key?(:priority) - rpc_data['severity'] = data[:severity] if data.has_key?(:severity) - rpc_data['alias'] = data[:alias] if data.has_key?(:alias) - rpc_data['assigned_to'] = data[:assignee] if data.has_key?(:assignee) - rpc_data['cc'] = data[:cc].to_a if data.has_key?(:cc) - rpc_data['status'] = data[:status] if data.has_key?(:status) - rpc_data['Bugzilla_token'] = token - - result = client.call('Bug.create', rpc_data) - result['id'] - rescue XMLRPC::FaultException => e - if did_retry - raise "Could not file the bug: #{e.faultString} (code #{e.faultCode})" - end - - # If we need to log in first - if e.faultCode == 410 - Rails.logger.debug "Not logged in, doing that now." - log_in - did_retry = true - retry - else - raise "Could not file the bug: #{e.faultString} (code #{e.faultCode})" - end - end - end - - def log_in - Rails.logger.debug "Called Bugzilla.log_in" - raise unless GLSAMAKER_BUGZIE_USER and GLSAMAKER_BUGZIE_PW - - client, token = xmlrpc_client - - begin - result = client.call('User.login', { - 'login' => GLSAMAKER_BUGZIE_USER, - 'password' => GLSAMAKER_BUGZIE_PW - }) - - Rails.logger.debug "Successfully logged in. UID: #{result['id']}" - - token_file = File.join(Rails.root, 'tmp', 'bugzie-token.txt') - FileUtils.rm(token_file) if File.exist?(token_file) - FileUtils.touch(token_file) - File.chmod(0600, token_file) - File.open(token_file, 'w') {|f| f.write result['token'] } - - return true - rescue XMLRPC::FaultException => e - Rails.logger.warn "Failure logging in: #{e.message}" - return false - end - end - - def xmlrpc_client - client = XMLRPC::Client.new(GLSAMAKER_BUGZIE_HOST, '/xmlrpc.cgi', 443, nil, nil, nil, nil, true) - client.http_header_extra = {'User-Agent' => "GLSAMaker/#{GLSAMAKER_VERSION} (https://security.gentoo.org/)"} - - token = '' - token_file = File.join(Rails.root, 'tmp', 'bugzie-token.txt') - if File.readable? token_file - token = File.read(token_file) - end - - [client, token] - end -end |