summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Magorsch <arzano@gentoo.org>2020-04-18 02:38:35 +0200
committerMax Magorsch <arzano@gentoo.org>2020-04-18 02:50:54 +0200
commit35a41e63ebd5f6cf9d17419c150eb53a005d2e87 (patch)
treee0bcc21bbb1e7e200857cfbd52acb82b008a3a6d /lib/bugzilla.rb
parentDisplay version and last update in the footer (diff)
downloadglsamaker-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.rb195
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