Proxy bypass (#3221)

* add proxy bypass option in settings

* add proxy bypass popup and persist settings

* add proxy bypass to proxy config class

* Fix Proxy Bypass Button HTML

* Fix indentation

* Implement Method popup_proxy_bypass

* Fix behaviour in case of empty range tab

* Fix behaviour in case of empty range tab 2
This commit is contained in:
Daniel Wegner 2020-03-02 15:30:23 +01:00 committed by GitHub
parent 36199a3166
commit eb10fae8ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 118 additions and 17 deletions

View File

@ -26,11 +26,18 @@ CLASS zcl_abapgit_proxy_config DEFINITION PUBLIC FINAL CREATE PUBLIC.
DATA: mo_settings TYPE REF TO zcl_abapgit_settings, DATA: mo_settings TYPE REF TO zcl_abapgit_settings,
mi_exit TYPE REF TO zif_abapgit_exit. mi_exit TYPE REF TO zif_abapgit_exit.
METHODS:
bypass_proxy
IMPORTING
iv_repo_url TYPE csequence OPTIONAL
RETURNING
VALUE(rv_bypass_proxy) TYPE abap_bool.
ENDCLASS. ENDCLASS.
CLASS ZCL_ABAPGIT_PROXY_CONFIG IMPLEMENTATION. CLASS zcl_abapgit_proxy_config IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -44,7 +51,9 @@ CLASS ZCL_ABAPGIT_PROXY_CONFIG IMPLEMENTATION.
METHOD get_proxy_authentication. METHOD get_proxy_authentication.
IF bypass_proxy( iv_repo_url ) = abap_false.
rv_auth = mo_settings->get_proxy_authentication( ). rv_auth = mo_settings->get_proxy_authentication( ).
ENDIF.
mi_exit->change_proxy_authentication( mi_exit->change_proxy_authentication(
EXPORTING EXPORTING
@ -57,7 +66,9 @@ CLASS ZCL_ABAPGIT_PROXY_CONFIG IMPLEMENTATION.
METHOD get_proxy_port. METHOD get_proxy_port.
IF bypass_proxy( iv_repo_url ) = abap_false.
rv_port = mo_settings->get_proxy_port( ). rv_port = mo_settings->get_proxy_port( ).
ENDIF.
mi_exit->change_proxy_port( mi_exit->change_proxy_port(
EXPORTING EXPORTING
@ -72,7 +83,9 @@ CLASS ZCL_ABAPGIT_PROXY_CONFIG IMPLEMENTATION.
METHOD get_proxy_url. METHOD get_proxy_url.
IF bypass_proxy( iv_repo_url ) = abap_false.
rv_proxy_url = mo_settings->get_proxy_url( ). rv_proxy_url = mo_settings->get_proxy_url( ).
ENDIF.
mi_exit->change_proxy_url( mi_exit->change_proxy_url(
EXPORTING EXPORTING
@ -81,4 +94,19 @@ CLASS ZCL_ABAPGIT_PROXY_CONFIG IMPLEMENTATION.
cv_proxy_url = rv_proxy_url ). cv_proxy_url = rv_proxy_url ).
ENDMETHOD. ENDMETHOD.
METHOD bypass_proxy.
DATA lt_proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url.
lt_proxy_bypass = mo_settings->get_proxy_bypass( ).
IF lt_proxy_bypass IS NOT INITIAL
AND iv_repo_url IN lt_proxy_bypass.
rv_bypass_proxy = abap_true.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -9,6 +9,7 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
CONSTANTS: CONSTANTS:
BEGIN OF c_action, BEGIN OF c_action,
save_settings TYPE string VALUE 'save_settings', save_settings TYPE string VALUE 'save_settings',
change_proxy_bypass TYPE string VALUE 'change_proxy_bypass',
END OF c_action. END OF c_action.
METHODS constructor. METHODS constructor.
@ -22,6 +23,7 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
DATA mo_settings TYPE REF TO zcl_abapgit_settings . DATA mo_settings TYPE REF TO zcl_abapgit_settings .
DATA mv_error TYPE abap_bool . DATA mv_error TYPE abap_bool .
DATA mt_post_fields TYPE tihttpnvp . DATA mt_post_fields TYPE tihttpnvp .
DATA mt_proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url.
METHODS post_commit_msg . METHODS post_commit_msg .
METHODS post_development_internals . METHODS post_development_internals .
@ -111,7 +113,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION. CLASS zcl_abapgit_gui_page_settings IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -359,6 +361,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
mo_settings->set_proxy_authentication( abap_false ). mo_settings->set_proxy_authentication( abap_false ).
ENDIF. ENDIF.
mo_settings->set_proxy_bypass( mt_proxy_bypass ).
ENDMETHOD. ENDMETHOD.
@ -669,6 +673,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
ro_html->add( `<input name="proxy_auth" type="checkbox">` ). ro_html->add( `<input name="proxy_auth" type="checkbox">` ).
ENDIF. ENDIF.
ro_html->add( |<br>| ). ro_html->add( |<br>| ).
ro_html->add( |<br>| ).
ro_html->add( |<label for="proxy_bypass">Bypass proxy settings for these Hosts & Domains</label>| ).
ro_html->add( |<br>| ).
ro_html->add( |<button type="button" name="proxy_bypass" class="grey-set"|
& |onclick="location.href='sapevent:{ c_action-change_proxy_bypass }';">Maintain</button>| ).
ro_html->add( |<br>| ).
ro_html->add( |<br>| ). ro_html->add( |<br>| ).
@ -781,6 +791,10 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
ENDIF. ENDIF.
ev_state = zcl_abapgit_gui=>c_event_state-go_back. ev_state = zcl_abapgit_gui=>c_event_state-go_back.
WHEN c_action-change_proxy_bypass.
mt_proxy_bypass = zcl_abapgit_ui_factory=>get_popups( )->popup_proxy_bypass( mo_settings->get_proxy_bypass( ) ).
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
ENDCASE. ENDCASE.
ENDMETHOD. ENDMETHOD.

View File

@ -24,7 +24,8 @@ CLASS zcl_abapgit_popups DEFINITION
popup_to_select_from_list FOR zif_abapgit_popups~popup_to_select_from_list, popup_to_select_from_list FOR zif_abapgit_popups~popup_to_select_from_list,
branch_popup_callback FOR zif_abapgit_popups~branch_popup_callback, branch_popup_callback FOR zif_abapgit_popups~branch_popup_callback,
package_popup_callback FOR zif_abapgit_popups~package_popup_callback, package_popup_callback FOR zif_abapgit_popups~package_popup_callback,
popup_transport_request FOR zif_abapgit_popups~popup_transport_request. popup_transport_request FOR zif_abapgit_popups~popup_transport_request,
popup_proxy_bypass FOR zif_abapgit_popups~popup_proxy_bypass.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -94,7 +95,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION. CLASS zcl_abapgit_popups IMPLEMENTATION.
METHOD add_field. METHOD add_field.
@ -1198,6 +1199,32 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_popups~popup_proxy_bypass.
rt_proxy_bypass = it_proxy_bypass.
CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
EXPORTING
title = 'Bypass proxy settings for these Hosts & Domains'
signed = abap_false
lower_case = abap_true
no_interval_check = abap_true
TABLES
range = rt_proxy_bypass
EXCEPTIONS
no_range_tab = 1
cancelled = 2
internal_error = 3
invalid_fieldname = 4
OTHERS = 5.
CASE sy-subrc.
WHEN 0.
WHEN 2.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
WHEN OTHERS.
zcx_abapgit_exception=>raise( 'Error from COMPLEX_SELECTIONS_DIALOG' ).
ENDCASE.
ENDMETHOD.
METHOD _popup_3_get_values. METHOD _popup_3_get_values.
DATA lv_answer TYPE c LENGTH 1. DATA lv_answer TYPE c LENGTH 1.
@ -1240,4 +1267,5 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -96,6 +96,10 @@ CLASS ltcl_abapgit_popups_mock IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_popups~popup_proxy_bypass.
ENDMETHOD.
ENDCLASS. ENDCLASS.
CLASS ltcl_no_dependency_injection IMPLEMENTATION. CLASS ltcl_no_dependency_injection IMPLEMENTATION.

View File

@ -144,4 +144,11 @@ INTERFACE zif_abapgit_popups
VALUE(rv_transport) TYPE trkorr VALUE(rv_transport) TYPE trkorr
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS popup_proxy_bypass
IMPORTING
!it_proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url
RETURNING
VALUE(rt_proxy_bypass) TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url
RAISING
zcx_abapgit_exception.
ENDINTERFACE. ENDINTERFACE.

View File

@ -27,6 +27,9 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
set_proxy_authentication set_proxy_authentication
IMPORTING IMPORTING
iv_auth TYPE abap_bool, iv_auth TYPE abap_bool,
set_proxy_bypass
IMPORTING
it_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url OPTIONAL,
get_proxy_url get_proxy_url
RETURNING RETURNING
VALUE(rv_proxy_url) TYPE string, VALUE(rv_proxy_url) TYPE string,
@ -36,6 +39,8 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
get_proxy_authentication get_proxy_authentication
RETURNING RETURNING
VALUE(rv_auth) TYPE abap_bool, VALUE(rv_auth) TYPE abap_bool,
get_proxy_bypass
RETURNING VALUE(rt_bypass) TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url,
set_run_critical_tests set_run_critical_tests
IMPORTING IMPORTING
iv_run TYPE abap_bool, iv_run TYPE abap_bool,
@ -142,6 +147,7 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
proxy_url TYPE string, proxy_url TYPE string,
proxy_port TYPE string, proxy_port TYPE string,
proxy_auth TYPE string, proxy_auth TYPE string,
proxy_bypass TYPE zif_abapgit_definitions=>ty_range_proxy_bypass_url,
run_critical_tests TYPE abap_bool, run_critical_tests TYPE abap_bool,
experimental_features TYPE abap_bool, experimental_features TYPE abap_bool,
commitmsg_comment_length TYPE i, commitmsg_comment_length TYPE i,
@ -158,7 +164,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION. CLASS zcl_abapgit_settings IMPLEMENTATION.
METHOD get_adt_jump_enabled. METHOD get_adt_jump_enabled.
@ -226,6 +232,11 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_proxy_bypass.
rt_bypass = ms_settings-proxy_bypass.
ENDMETHOD.
METHOD get_run_critical_tests. METHOD get_run_critical_tests.
rv_run = ms_settings-run_critical_tests. rv_run = ms_settings-run_critical_tests.
ENDMETHOD. ENDMETHOD.
@ -352,6 +363,10 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD set_proxy_bypass.
ms_settings-proxy_bypass = it_bypass.
ENDMETHOD.
METHOD set_run_critical_tests. METHOD set_run_critical_tests.
ms_settings-run_critical_tests = iv_run. ms_settings-run_critical_tests = iv_run.
ENDMETHOD. ENDMETHOD.
@ -398,4 +413,5 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
cg_data = ms_settings ). cg_data = ms_settings ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -364,6 +364,10 @@ INTERFACE zif_abapgit_definitions
tty_col_spec TYPE STANDARD TABLE OF ty_col_spec tty_col_spec TYPE STANDARD TABLE OF ty_col_spec
WITH NON-UNIQUE KEY tech_name. WITH NON-UNIQUE KEY tech_name.
TYPES:
ty_proxy_bypass_url TYPE c LENGTH 255,
ty_range_proxy_bypass_url TYPE RANGE OF ty_proxy_bypass_url.
CONSTANTS: CONSTANTS:
BEGIN OF c_git_branch_type, BEGIN OF c_git_branch_type,
branch TYPE ty_git_branch_type VALUE 'HD', branch TYPE ty_git_branch_type VALUE 'HD',