W3xx remove path from filename #374

This commit is contained in:
sbcgua 2016-11-26 19:53:52 +02:00
parent 2080398f38
commit 96f805d50a
3 changed files with 60 additions and 0 deletions

View File

@ -38,6 +38,10 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT.
CHANGING ct_params TYPE ty_wwwparams_tt CHANGING ct_params TYPE ty_wwwparams_tt
RAISING lcx_exception. RAISING lcx_exception.
METHODS patch_filename
CHANGING ct_params TYPE ty_wwwparams_tt
RAISING lcx_exception.
ENDCLASS. "lcl_object_W3SUPER DEFINITION ENDCLASS. "lcl_object_W3SUPER DEFINITION
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
@ -144,6 +148,9 @@ CLASS lcl_object_w3super IMPLEMENTATION.
lv_size = ls_wwwparam-value. lv_size = ls_wwwparam-value.
" Remove file path (for security concerns)
patch_filename( CHANGING ct_params = lt_w3params ).
CASE ms_key-relid. CASE ms_key-relid.
WHEN 'MI'. WHEN 'MI'.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
@ -387,6 +394,21 @@ CLASS lcl_object_w3super IMPLEMENTATION.
ENDMETHOD. " patch_size. ENDMETHOD. " patch_size.
METHOD patch_filename.
FIELD-SYMBOLS <param> LIKE LINE OF ct_params.
READ TABLE ct_params ASSIGNING <param> WITH KEY name = 'filename'.
IF sy-subrc > 0.
lcx_exception=>raise( |W3xx: Cannot find file name for { ms_key-objid }| ).
ENDIF.
" Remove path
<param>-value = lcl_path=>get_filename_from_syspath( |{ <param>-value }| ).
ENDMETHOD. " patch_filename.
METHOD lif_object~compare_to_remote_version. METHOD lif_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
ENDMETHOD. ENDMETHOD.

View File

@ -1676,6 +1676,7 @@ CLASS ltcl_path DEFINITION
METHODS split_file_location FOR TESTING. METHODS split_file_location FOR TESTING.
METHODS is_subdir FOR TESTING. METHODS is_subdir FOR TESTING.
METHODS change_dir FOR TESTING. METHODS change_dir FOR TESTING.
METHODS get_filename_from_syspath FOR TESTING.
ENDCLASS. "ltcl_path ENDCLASS. "ltcl_path
@ -1794,6 +1795,30 @@ CLASS ltcl_path IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD get_filename_from_syspath.
DATA lv_filename TYPE string.
lv_filename = lcl_path=>get_filename_from_syspath( 'file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
lv_filename = lcl_path=>get_filename_from_syspath( 'c:\dir\file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
lv_filename = lcl_path=>get_filename_from_syspath( 'c:\file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
lv_filename = lcl_path=>get_filename_from_syspath( '/dir/file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
lv_filename = lcl_path=>get_filename_from_syspath( '/file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
lv_filename = lcl_path=>get_filename_from_syspath( '\\server$\file.txt' ).
assert_equals( act = lv_filename exp = 'file.txt' ).
ENDMETHOD. " get_filename_from_syspath.
ENDCLASS. "ltcl_path ENDCLASS. "ltcl_path
CLASS ltcl_file_status DEFINITION CLASS ltcl_file_status DEFINITION

View File

@ -360,6 +360,10 @@ CLASS lcl_path DEFINITION FINAL.
iv_cd TYPE string iv_cd TYPE string
RETURNING VALUE(rv_path) TYPE string. RETURNING VALUE(rv_path) TYPE string.
CLASS-METHODS get_filename_from_syspath
IMPORTING iv_path TYPE string
RETURNING VALUE(rv_filename) TYPE string.
ENDCLASS. "lcl_path ENDCLASS. "lcl_path
CLASS lcl_path IMPLEMENTATION. CLASS lcl_path IMPLEMENTATION.
@ -434,6 +438,15 @@ CLASS lcl_path IMPLEMENTATION.
ENDMETHOD. "change_dir ENDMETHOD. "change_dir
METHOD get_filename_from_syspath.
" filename | c:\filename | /dir/filename | \\server\filename
FIND FIRST OCCURRENCE OF REGEX '^(?:/(?:.+/)*|(?:\w:|\\)\\(?:.+\\)*)?([^\\/]+)$'
IN iv_path
SUBMATCHES rv_filename.
ENDMETHOD. " get_filename_from_syspath.
ENDCLASS. "lcl_path ENDCLASS. "lcl_path
*----------------------------------------------------------------------* *----------------------------------------------------------------------*