-
-
- <%- @T('Create OTRS Migration Plugin') %>
-
-
-
- - <%- @T('Personalise Migration Plugin ...') %> -
-
+
<%- @T('Download OTRS Migration Plugin') %>
- <%- @T('Download and install your personalised OTRS Migration Plugin on your OTRS System') %>: + <%- @T('Download and install the OTRS Migration Plugin on your OTRS System') %>:
- <%- @Icon('download') %> <%- @T('Personal Migration Plugin') %> + <%- @Icon('download') %> <%- @T('Migration Plugin') %>
<%- @T('Go Back') %>
@@ -34,7 +23,7 @@
-
+
<%- @Icon('diagonal-cross', 'icon-error') %>
diff --git a/app/controllers/import_otrs_controller.rb b/app/controllers/import_otrs_controller.rb
index 197073a75..5219e44d0 100644
--- a/app/controllers/import_otrs_controller.rb
+++ b/app/controllers/import_otrs_controller.rb
@@ -9,7 +9,7 @@ class ImportOtrsController < ApplicationController
if !params[:url] || params[:url] !~ %r{^(http|https)://.+?$}
render json: {
result: 'invalid',
- message: 'Invalid!',
+ message: 'Invalid URL!',
}
return
end
@@ -22,8 +22,10 @@ class ImportOtrsController < ApplicationController
'Connection refused' => 'Connection refused!',
}
- # try connecting to otrs
- response = UserAgent.request(params[:url])
+ url_parts = params[:url].split(';')
+
+ response = UserAgent.request( url_parts[0] )
+
if !response.success? && response.code.to_s !~ /^40.$/
message_human = ''
translation_map.each {|key, message|
@@ -39,34 +41,32 @@ class ImportOtrsController < ApplicationController
return
end
- message_human = 'Host found, but it seems to be no OTRS installation!'
- suffixes = ['/public.pl', '/otrs/public.pl']
- suffixes.each {|suffix|
- url = params[:url] + suffix + '?Action=ZammadMigrator'
- # strip multiple / in url
- url.gsub!(%r{([^:])(/+/)}, '\\1/')
- response = UserAgent.request( url )
+ result = {}
+ if response.body =~ /zammad migrator/
+
+ key_parts = url_parts[1].split('=')
- #Setting.set('import_mode', true)
Setting.set('import_backend', 'otrs')
- Setting.set('import_otrs_endpoint', url)
- Setting.set('import_otrs_endpoint_key', '01234567899876543210')
- if response.body =~ /zammad migrator/
- render json: {
- url: url,
- result: 'ok',
- }
- return # rubocop:disable Lint/NonLocalExitFromIterator
- elsif response.body =~ /(otrs\sag|otrs.com|otrs.org)/i
- message_human = 'Host found, but no OTRS migrator is installed!'
- end
- }
+ Setting.set('import_otrs_endpoint', url_parts[0])
+ Setting.set('import_otrs_endpoint_key', key_parts[1])
- # return result
- render json: {
- result: 'invalid',
- message_human: message_human,
- }
+ result = {
+ result: 'ok',
+ url: params[:url],
+ }
+ elsif response.body =~ /(otrs\sag|otrs\.com|otrs\.org)/i
+ result = {
+ result: 'invalid',
+ message_human: 'Host found, but no OTRS migrator is installed!'
+ }
+ else
+ result = {
+ result: 'invalid',
+ message_human: 'Host found, but it seems to be no OTRS installation!',
+ }
+ end
+
+ render json: result
end
def import_start
@@ -91,7 +91,7 @@ class ImportOtrsController < ApplicationController
end
def import_status
- return if setup_done_response
+ # return if setup_done_response
state = Import::OTRS.current_state
diff --git a/test/integration/otrs_import_browser_test.rb b/test/integration/otrs_import_browser_test.rb
index 7ca777e46..816f56d47 100644
--- a/test/integration/otrs_import_browser_test.rb
+++ b/test/integration/otrs_import_browser_test.rb
@@ -3,9 +3,28 @@ require 'browser_test_helper'
class OtrsImportBrowserTest < TestCase
def test_import
+
+ if !ENV['IMPORT_BT_OTRS_ENDPOINT']
+ fail "ERROR: Need IMPORT_BT_OTRS_ENDPOINT - hint IMPORT_BT_OTRS_ENDPOINT='http://vz305.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator'"
+ end
+ if !ENV['IMPORT_BT_OTRS_ENDPOINT_KEY']
+ fail "ERROR: Need IMPORT_BT_OTRS_ENDPOINT_KEY - hint IMPORT_BT_OTRS_ENDPOINT_KEY='01234567899876543210'"
+ end
+
+ import_url = "#{ENV['IMPORT_BT_OTRS_ENDPOINT']};Key=#{ENV['IMPORT_BT_OTRS_ENDPOINT_KEY']}"
+
@browser = browser_instance
location(url: browser_url)
+ click(css: 'a[href="#import"]')
+
+ click(css: 'a[href="#import/otrs"]')
+
+ set(
+ css: '#otrs-link',
+ value: import_url
+ )
+
watch_for(
css: 'body',
value: 'xxxx',