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.
rv_auth = mo_settings->get_proxy_authentication( ). IF bypass_proxy( iv_repo_url ) = abap_false.
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.
rv_port = mo_settings->get_proxy_port( ). IF bypass_proxy( iv_repo_url ) = abap_false.
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.
rv_proxy_url = mo_settings->get_proxy_url( ). IF bypass_proxy( iv_repo_url ) = abap_false.
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

@ -8,7 +8,8 @@ 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.
@ -594,8 +598,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
METHOD render_link_hints. METHOD render_link_hints.
DATA: lv_checked TYPE string, DATA: lv_checked TYPE string,
lv_link_hint_key TYPE char01. lv_link_hint_key TYPE char01.
IF mo_settings->get_link_hints_enabled( ) = abap_true. IF mo_settings->get_link_hints_enabled( ) = abap_true.
lv_checked = 'checked'. lv_checked = 'checked'.
@ -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>| ).
@ -718,8 +728,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
DATA: DATA:
BEGIN OF ls_sel, BEGIN OF ls_sel,
default TYPE string, default TYPE string,
dark TYPE string, dark TYPE string,
belize TYPE string, belize TYPE string,
END OF ls_sel. END OF ls_sel.
CASE mo_settings->get_ui_theme( ). CASE mo_settings->get_ui_theme( ).
@ -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

@ -17,8 +17,8 @@ INTERFACE zif_abapgit_popups
METHODS popup_package_export METHODS popup_package_export
EXPORTING EXPORTING
!ev_package TYPE devclass !ev_package TYPE devclass
!ev_folder_logic TYPE string !ev_folder_logic TYPE string
!ev_serialize_master_lang_only TYPE abap_bool !ev_serialize_master_lang_only TYPE abap_bool
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
@ -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

@ -13,8 +13,8 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
CONSTANTS: CONSTANTS:
BEGIN OF c_ui_theme, BEGIN OF c_ui_theme,
default TYPE string VALUE 'default', default TYPE string VALUE 'default',
dark TYPE string VALUE 'dark', dark TYPE string VALUE 'dark',
belize TYPE string VALUE 'belize', belize TYPE string VALUE 'belize',
END OF c_ui_theme. END OF c_ui_theme.
METHODS: METHODS:
@ -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',