10원팁)라이믹스 안드로이드 웹뷰 다운로드 버그 임시 해결방법
최근 PIE 안드로이드 9.0이상 앱에서 라이믹스 사이트는 첨부파일 다운로드시 정상동작하지 않는 것이 확인되어
https://github.com/rhymix/rhymix/issues/1180
XE는 정상 다운됨
XE코드로 일부 수정한 뒤 테스트해본 결과 잘 받아집니다.
임시 수정이기 때문에 급하게 수정해서 써야하는 경우만 사용하시고 차후 라이믹스에서 패치되면
패치 버전을 적용하세요~ (백업필수)
아마도
$_SESSION['__XE_FILE_KEY__'] = Rhymix\Framework\Security::getRandom(32, 'hex'); |
이 부분이랑
if(strstr($_SERVER['HTTP_USER_AGENT'], "Android")) $is_android = true;
안드로이드에 대한 AGENT가 따로 없어서 그런지 XE코드로 일부 수정하면 index.php 파일명이 아니라
정상적으로 잘 받아집니다~!
file.controller.php
function procFileDownload()
// Call a trigger (after) | |||
ModuleHandler::triggerCall('file.downloadFile', 'after', $file_obj); | |||
// Redirect to procFileOutput using file key | |||
if(!isset($_SESSION['__XE_FILE_KEY__']) || !is_string($_SESSION['__XE_FILE_KEY__']) || strlen($_SESSION['__XE_FILE_KEY__']) != 32) | |||
{ | |||
$_SESSION['__XE_FILE_KEY__'] = Rhymix\Framework\Security::getRandom(32, 'hex'); | |||
} | |||
$file_key_data = $file_obj->file_srl . $file_obj->file_size . $file_obj->uploaded_filename . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']; | |||
$file_key_data = $file_obj->file_srl . $file_obj->file_size . $file_obj->uploaded_filename . $_SERVER['REMOTE_ADDR']; | |||
$file_key = substr(hash_hmac('sha256', $file_key_data, $_SESSION['__XE_FILE_KEY__']), 0, 32); | |||
header('Location: '.getNotEncodedUrl('', 'act', 'procFileOutput','file_srl',$file_srl,'file_key',$file_key)); | |||
Context::close(); | |||
exit(); | |||
} |
아래 소스로 교체
// Call a trigger (after) $output = ModuleHandler::triggerCall('file.downloadFile', 'after', $file_obj);
$file_key = $_SESSION['__XE_FILE_KEY__'][$file_srl] = $random->createSecureSalt(32, 'hex'); header('Location: '.getNotEncodedUrl('', 'act', 'procFileOutput','file_srl',$file_srl,'file_key',$file_key)); Context::close(); exit();
|
|
public function procFileOutput() 부분 모든 코드 부분을 XE로 교체
https://github.com/xpressengine/xe-core/blob/develop/modules/file/file.controller.php
다운로드 테스트 실험
|
댓글 0