mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 20:32:26 +08:00
Introduce separate proxy configuration class
Introduce separate proxy configuration class and userexit to manipulate proxy settings
This commit is contained in:
parent
a228f701a6
commit
a435191564
|
@ -48,6 +48,7 @@ INCLUDE zabapgit_folder_logic.
|
||||||
INCLUDE zabapgit_requirements.
|
INCLUDE zabapgit_requirements.
|
||||||
INCLUDE zabapgit_authorizations.
|
INCLUDE zabapgit_authorizations.
|
||||||
INCLUDE zabapgit_exit.
|
INCLUDE zabapgit_exit.
|
||||||
|
INCLUDE zabapgit_proxy.
|
||||||
|
|
||||||
INCLUDE zabapgit_stage.
|
INCLUDE zabapgit_stage.
|
||||||
INCLUDE zabapgit_git_helpers.
|
INCLUDE zabapgit_git_helpers.
|
||||||
|
|
|
@ -446,17 +446,18 @@ CLASS lcl_2fa_github_auth IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD is_2fa_required.
|
METHOD is_2fa_required.
|
||||||
DATA: li_client TYPE REF TO if_http_client,
|
|
||||||
lo_settings TYPE REF TO lcl_settings.
|
|
||||||
|
|
||||||
lo_settings = lcl_app=>settings( )->read( ).
|
DATA: li_client TYPE REF TO if_http_client,
|
||||||
|
lo_proxy TYPE REF TO lcl_proxy_configuration.
|
||||||
|
|
||||||
|
lo_proxy = lcl_app=>proxy( ).
|
||||||
|
|
||||||
cl_http_client=>create_by_url(
|
cl_http_client=>create_by_url(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
url = gc_github_api_url
|
url = gc_github_api_url
|
||||||
ssl_id = 'ANONYM'
|
ssl_id = 'ANONYM'
|
||||||
proxy_host = lo_settings->get_proxy_url( )
|
proxy_host = lo_proxy->get_proxy_url( )
|
||||||
proxy_service = lo_settings->get_proxy_port( )
|
proxy_service = lo_proxy->get_proxy_port( )
|
||||||
IMPORTING
|
IMPORTING
|
||||||
client = li_client
|
client = li_client
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
|
|
|
@ -7,6 +7,7 @@ CLASS lcl_persistence_user DEFINITION DEFERRED.
|
||||||
CLASS lcl_repo_srv DEFINITION DEFERRED.
|
CLASS lcl_repo_srv DEFINITION DEFERRED.
|
||||||
CLASS lcl_persistence_db DEFINITION DEFERRED.
|
CLASS lcl_persistence_db DEFINITION DEFERRED.
|
||||||
CLASS lcl_persist_settings DEFINITION DEFERRED.
|
CLASS lcl_persist_settings DEFINITION DEFERRED.
|
||||||
|
CLASS lcl_proxy_configuration DEFINITION DEFERRED.
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS lcl_app DEFINITION
|
* CLASS lcl_app DEFINITION
|
||||||
|
@ -32,11 +33,15 @@ CLASS lcl_app DEFINITION FINAL.
|
||||||
CLASS-METHODS settings
|
CLASS-METHODS settings
|
||||||
RETURNING VALUE(ro_settings) TYPE REF TO lcl_persist_settings.
|
RETURNING VALUE(ro_settings) TYPE REF TO lcl_persist_settings.
|
||||||
|
|
||||||
|
CLASS-METHODS proxy
|
||||||
|
RETURNING VALUE(ro_proxy) TYPE REF TO lcl_proxy_configuration.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
CLASS-DATA: go_gui TYPE REF TO lcl_gui,
|
CLASS-DATA: go_gui TYPE REF TO lcl_gui,
|
||||||
go_current_user TYPE REF TO lcl_persistence_user,
|
go_current_user TYPE REF TO lcl_persistence_user,
|
||||||
go_db TYPE REF TO lcl_persistence_db,
|
go_db TYPE REF TO lcl_persistence_db,
|
||||||
go_repo_srv TYPE REF TO lcl_repo_srv,
|
go_repo_srv TYPE REF TO lcl_repo_srv,
|
||||||
go_settings TYPE REF TO lcl_persist_settings.
|
go_settings TYPE REF TO lcl_persist_settings,
|
||||||
|
go_proxy TYPE REF TO lcl_proxy_configuration.
|
||||||
|
|
||||||
ENDCLASS. "lcl_app
|
ENDCLASS. "lcl_app
|
||||||
|
|
|
@ -56,4 +56,11 @@ CLASS lcl_app IMPLEMENTATION.
|
||||||
ro_settings = go_settings.
|
ro_settings = go_settings.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD proxy.
|
||||||
|
IF go_proxy IS NOT BOUND.
|
||||||
|
CREATE OBJECT go_proxy.
|
||||||
|
ENDIF.
|
||||||
|
ro_proxy = go_proxy.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS. "lcl_app
|
ENDCLASS. "lcl_app
|
||||||
|
|
|
@ -8,7 +8,17 @@ INTERFACE lif_exit.
|
||||||
change_local_host
|
change_local_host
|
||||||
CHANGING ct_hosts TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
CHANGING ct_hosts TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
||||||
allow_sap_objects
|
allow_sap_objects
|
||||||
RETURNING VALUE(rv_allowed) TYPE abap_bool.
|
RETURNING VALUE(rv_allowed) TYPE abap_bool,
|
||||||
|
change_proxy_url
|
||||||
|
IMPORTING iv_repo_url TYPE csequence
|
||||||
|
CHANGING c_proxy_url TYPE string,
|
||||||
|
change_proxy_port
|
||||||
|
IMPORTING iv_repo_url TYPE csequence
|
||||||
|
CHANGING c_proxy_port TYPE string,
|
||||||
|
change_proxy_authentication
|
||||||
|
IMPORTING iv_repo_url TYPE csequence
|
||||||
|
CHANGING c_proxy_authentication TYPE abap_bool.
|
||||||
|
|
||||||
|
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
||||||
|
@ -48,4 +58,20 @@ CLASS lcl_exit IMPLEMENTATION.
|
||||||
rv_allowed = abap_false.
|
rv_allowed = abap_false.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD lif_exit~change_proxy_url.
|
||||||
|
* default behavior change nothing
|
||||||
|
RETURN.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_exit~change_proxy_port.
|
||||||
|
* default behavior change nothing
|
||||||
|
RETURN.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_exit~change_proxy_authentication.
|
||||||
|
* default behavior change nothing
|
||||||
|
RETURN.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -417,18 +417,17 @@ CLASS lcl_http IMPLEMENTATION.
|
||||||
DATA: lv_uri TYPE string,
|
DATA: lv_uri TYPE string,
|
||||||
lv_scheme TYPE string,
|
lv_scheme TYPE string,
|
||||||
li_client TYPE REF TO if_http_client,
|
li_client TYPE REF TO if_http_client,
|
||||||
lo_settings TYPE REF TO lcl_settings,
|
lo_proxy_configuration TYPE REF TO lcl_proxy_configuration,
|
||||||
lv_text TYPE string.
|
lv_text TYPE string.
|
||||||
|
|
||||||
|
lo_proxy_configuration = lcl_app=>proxy( ).
|
||||||
lo_settings = lcl_app=>settings( )->read( ).
|
|
||||||
|
|
||||||
cl_http_client=>create_by_url(
|
cl_http_client=>create_by_url(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
url = lcl_url=>host( iv_url )
|
url = lcl_url=>host( iv_url )
|
||||||
ssl_id = 'ANONYM'
|
ssl_id = 'ANONYM'
|
||||||
proxy_host = lo_settings->get_proxy_url( )
|
proxy_host = lo_proxy_configuration->get_proxy_url( iv_url )
|
||||||
proxy_service = lo_settings->get_proxy_port( )
|
proxy_service = lo_proxy_configuration->get_proxy_port( iv_url )
|
||||||
IMPORTING
|
IMPORTING
|
||||||
client = li_client
|
client = li_client
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
|
@ -449,7 +448,7 @@ CLASS lcl_http IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( lv_text ).
|
zcx_abapgit_exception=>raise( lv_text ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF lo_settings->get_proxy_authentication( ) = abap_true.
|
IF lo_proxy_configuration->get_proxy_authentication( iv_url ) = abap_true.
|
||||||
lcl_proxy_auth=>run( li_client ).
|
lcl_proxy_auth=>run( li_client ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -502,7 +501,7 @@ CLASS lcl_http IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: lv_host TYPE string,
|
DATA: lv_host TYPE string,
|
||||||
lt_list TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
lt_list TYPE zif_abapgit_definitions=>ty_icm_sinfo2_tt,
|
||||||
li_exit TYPE ref to lif_exit.
|
li_exit TYPE REF TO lif_exit.
|
||||||
|
|
||||||
CALL FUNCTION 'ICM_GET_INFO2'
|
CALL FUNCTION 'ICM_GET_INFO2'
|
||||||
TABLES
|
TABLES
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
*& Include ZABAPGIT_PERSISTENCE
|
*& Include ZABAPGIT_PERSISTENCE
|
||||||
*&---------------------------------------------------------------------*
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
|
INTERFACE lif_exit DEFERRED.
|
||||||
CLASS lcl_settings DEFINITION DEFERRED.
|
CLASS lcl_settings DEFINITION DEFERRED.
|
||||||
|
CLASS lcl_exit DEFINITION DEFERRED.
|
||||||
|
|
||||||
CLASS lcl_persist_migrate DEFINITION FINAL.
|
CLASS lcl_persist_migrate DEFINITION FINAL.
|
||||||
|
|
||||||
|
|
81
src/zabapgit_proxy.prog.abap
Normal file
81
src/zabapgit_proxy.prog.abap
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
*& Include zabapgit_proxy
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
|
CLASS lcl_proxy_configuration DEFINITION CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
METHODS:
|
||||||
|
constructor,
|
||||||
|
|
||||||
|
get_proxy_url
|
||||||
|
IMPORTING
|
||||||
|
iv_repo_url TYPE csequence OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_proxy_url) TYPE string,
|
||||||
|
|
||||||
|
get_proxy_port
|
||||||
|
IMPORTING
|
||||||
|
iv_repo_url TYPE csequence OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_port) TYPE string,
|
||||||
|
|
||||||
|
get_proxy_authentication
|
||||||
|
IMPORTING
|
||||||
|
iv_repo_url TYPE csequence OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_auth) TYPE abap_bool.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA: mo_settings TYPE REF TO lcl_settings,
|
||||||
|
mi_exit TYPE REF TO lif_exit.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_proxy_configuration IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
mo_settings = lcl_app=>settings( )->read( ).
|
||||||
|
|
||||||
|
mi_exit = lcl_exit=>get_instance( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_proxy_url.
|
||||||
|
|
||||||
|
rv_proxy_url = mo_settings->get_proxy_url( ).
|
||||||
|
|
||||||
|
mi_exit->change_proxy_url(
|
||||||
|
EXPORTING
|
||||||
|
iv_repo_url = iv_repo_url
|
||||||
|
CHANGING
|
||||||
|
c_proxy_url = rv_proxy_url ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_proxy_port.
|
||||||
|
|
||||||
|
rv_port = mo_settings->get_proxy_port( ).
|
||||||
|
|
||||||
|
mi_exit->change_proxy_port(
|
||||||
|
EXPORTING
|
||||||
|
iv_repo_url = iv_repo_url
|
||||||
|
CHANGING
|
||||||
|
c_proxy_port = rv_port ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_proxy_authentication.
|
||||||
|
|
||||||
|
rv_auth = mo_settings->get_proxy_authentication( ).
|
||||||
|
|
||||||
|
mi_exit->change_proxy_authentication(
|
||||||
|
EXPORTING
|
||||||
|
iv_repo_url = iv_repo_url
|
||||||
|
CHANGING
|
||||||
|
c_proxy_authentication = rv_auth ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
25
src/zabapgit_proxy.prog.xml
Normal file
25
src/zabapgit_proxy.prog.xml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<PROGDIR>
|
||||||
|
<NAME>ZABAPGIT_PROXY</NAME>
|
||||||
|
<STATE>A</STATE>
|
||||||
|
<VARCL>X</VARCL>
|
||||||
|
<DBAPL>S</DBAPL>
|
||||||
|
<DBNA>D$</DBNA>
|
||||||
|
<SUBC>I</SUBC>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<LDBNAME>D$S</LDBNAME>
|
||||||
|
<UCCHECK>X</UCCHECK>
|
||||||
|
</PROGDIR>
|
||||||
|
<TPOOL>
|
||||||
|
<item>
|
||||||
|
<ID>R</ID>
|
||||||
|
<ENTRY>ZABAPGIT_PROXY</ENTRY>
|
||||||
|
<LENGTH>14</LENGTH>
|
||||||
|
</item>
|
||||||
|
</TPOOL>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
Loading…
Reference in New Issue
Block a user