ebandal / H2Orestart

한컴파일을 LibreOffice에서 읽을 수 있도록 하는 extension입니다.
GNU General Public License v3.0
75 stars 6 forks source link

~/.H2Orestart 경로의 문서 복사본 임시파일 및 로그파일 #19

Closed changwoo closed 4 months ago

changwoo commented 4 months ago

안녕하세요.

확장이 동작할 뒤에 ~/.H2Orestart 경로에 문서의 복사본 임시 파일이 계속 남아있고, 저장된 로그도 남아있어서 문의드립니다.

changwoo@asdf:~$ ls -la ~/.H2Orestart/
합계 8820
drwxr-xr-x   2 changwoo changwoo    4096  2월 10일  04:29 .
drwxr-xr-x 267 changwoo changwoo   16384  2월 10일  10:00 ..
-rw-r--r--   1 changwoo changwoo   18944  2월  8일  00:39 H2O_TMP_15740972841711833834.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월 10일  04:04 H2O_TMP_16898042134096726141.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월 10일  04:02 H2O_TMP_17849547051897521922.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월  8일  00:59 H2O_TMP_18369233613417444898.tmp
-rw-r--r--   1 changwoo changwoo  954368  2월  8일  00:59 H2O_TMP_6076117792916350423.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월 10일  04:28 H2O_TMP_6287583800927604855.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월 10일  04:29 H2O_TMP_7267532201499549400.tmp
-rw-r--r--   1 changwoo changwoo 1333248  2월 10일  03:53 H2O_TMP_9314589350149063300.tmp
-rw-r--r--   1 changwoo changwoo     622  2월 10일  04:29 import_0.log
-rw-r--r--   1 changwoo changwoo       0  2월  8일  00:39 import_0.log.lck
-rw-r--r--   1 changwoo changwoo     622  2월 10일  04:28 import_1.log
-rw-r--r--   1 changwoo changwoo     622  2월 10일  04:04 import_2.log
-rw-r--r--   1 changwoo changwoo     622  2월 10일  04:02 import_3.log
-rw-r--r--   1 changwoo changwoo     622  2월 10일  03:53 import_4.log
-rw-r--r--   1 changwoo changwoo    1336  2월  8일  00:59 import_5.log
changwoo@asdf:~$ file ~/.H2Orestart/*
/home/changwoo/.H2Orestart/H2O_TMP_15740972841711833834.tmp: Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_16898042134096726141.tmp: Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_17849547051897521922.tmp: Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_18369233613417444898.tmp: Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_6076117792916350423.tmp:  Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_6287583800927604855.tmp:  Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_7267532201499549400.tmp:  Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/H2O_TMP_9314589350149063300.tmp:  Hancom HWP (Hangul Word Processor) file, version 5.0
/home/changwoo/.H2Orestart/import_0.log:                     ASCII text
/home/changwoo/.H2Orestart/import_0.log.lck:                 empty
/home/changwoo/.H2Orestart/import_1.log:                     ASCII text
/home/changwoo/.H2Orestart/import_2.log:                     ASCII text
/home/changwoo/.H2Orestart/import_3.log:                     ASCII text
/home/changwoo/.H2Orestart/import_4.log:                     ASCII text
/home/changwoo/.H2Orestart/import_5.log:                     ASCII text
changwoo@asdf:~$ 

임시파일의 경우 다른 유저가 읽을 수 있는 경로에 계속 남아있어서 리눅스에서는 보안 문제가 있습니다. 보기에는 원본 파일의 복사본이고 읽기만 하니까 아예 안 써도 될 것 같은데요. 계속 쓴다면 다른 유저가 읽을 수 없는 퍼미션으로 임시파일을 만들고 사용 뒤에 삭제되는 방법으로 처리되야 할 것으로 생각합니다.

로그의 경우에도 계속 누적되는 부분이 걸리는데요. 디버깅 목적이라면 기본값이 아니라 opt-in으로 설정할 수 있게 하면 좋을 것 같습니다.

ebandal commented 4 months ago

안녕하세요. 리브레오피스 확장관리자 창에 항상 보이는 그분 맞지요? 조언 감사합니다.

일반적으로 원본파일의 복사본이 필요없습니다만, 원격파일 (URL이 smb://, ftp:// 로 시작)의 경우엔 detect, open 2번씩 발생하는 트래픽을 줄이고자 복사본을 만들고 있습니다. 리눅스에서 보안 문제가 있다니 다음 릴리스부터는 복사본 남기지 않도록 하겠습니다. 제가 리눅스를 주로 사용하지 않고 1인 1PC 중심으로 생각하다보니, 이 부분은 소홀했던것 같습니다.

로그의 경우 (복사본 포함) 5일까지만 누적됩니다. 즉, 5일이 넘은 파일은 알아서 삭제합니다. 제가 원본 파일을 입수하지 못하는 상황에서 최소한의 디버깅 가능하고자 로그를 남도록 하고 있습니다. Q&A포함한 이슈 확인 과정이 통상 5일까지는 걸릴거라 보는 것이지요. 화면이 필요없는 확장인데 opt-in 하도록 일부러 화면 구성하거나, 개인정보를 수집하는 것도 아닌데 사용자 동의를 구할 이유는 없을듯 합니다. 어디까지를 개인정보로 볼지는 사람마다 관점의 차이가 있으므로 argue가 될것 같긴 합니다. 많은 사람이 저와 다르게 생각한다면 제가 생각을 바꿔야겠지요.

changwoo commented 4 months ago

필요하다면 쓸 수 있는데요.

말씀하신 것과 다르게 복사본이 로컬 파일을 열 때도 생성되고 있습니다. 그리고 복사본이 삭제되지 않고 남아 있습니다.

폴더, 복사본, 로그 파일 모두 리눅스에서 모든 유저가 읽을 수 있는 퍼미션으로 만들어지는 부분이 문제가 됩니다. 사용하는 게 불가피하다면 말씀드렸듯이 다른 유저가 읽을 수 없는 퍼미션으로 만들어 주세요. 생성할 때 디렉터리는 "rwx------" 파일은 "rw-------" 퍼미션으로 설정할 수 있을까요?

또 (써야 하는 경우) 유닉스/리눅스 시스템의 경우에는 홈디렉터리 아래에 dotfile이 과도하게 많아서 피하는 게 추세입니다. ~/.H2Orestart 보다는 XDG base directory spec에 따라 $XDG_CACHE_HOME/H2Orestart (~/.cache/H2Orestart) 을 쓰는 것을 건의합니다.

ebandal commented 4 months ago

복사본이 생성되었을때 아래처럼 로그파일에 남은 URL 정보 알려주실수 있으실까요?

[02-13 22:23] (OrestartImpl.dete) INFO: URL starts with : file:///C:/worksp

복사본이 남았다면 URL이 file:/// 로 시작하지 않고, 다른 형태로 남아있을것 같습니다. 제 짐작이 맞다면 리브레오피스에서 직접 파일을 열지 않고, 다른 방식으로 여신것 같은데요. 더블클릭하면 자동으로 리브레오피스에서 열리도록 하신건지, 어떤 프로그램에서 어떻게 (마우스 드래그드롭?) 파일을 리브레오피스로 넘기셨는지 궁금합니다.

복사본 삭제는 복사본 생성이 5일 지난시점에서 한컴파일을 열때 (H2Orestart 확장 동작할때) 지우도록 되어 있습니다. 아마도 복사본 생성일부터 5일이 지나지 않아서가 아닌가 싶습니다. 아니면 5일이 지났더라도 본 확장이 아직 실행하지 않았거나요.

XDG spec은 내용을 좀더 보고 판단하겠습니다. 리브레오피스가 유닉스/리눅스 계열뿐만 아니라 윈도우즈도 지원하고, 본 확장 역시도 마찬가지입니다. 윈도우만 보면 App마다 홈아래 첫번째 디렉토리에 폴더들을 가진 것들이 많습니다.

changwoo commented 4 months ago
[02-14 00:06] (riterContext.dete) INFO: file detected not HWPX
[02-14 00:06] (riterContext.dete) INFO: file detected as HWP
[02-14 00:06] (OrestartImpl.dete) INFO: File is Hancomm document.
[02-14 00:06] (OrestartImpl.dete) INFO: URL=file:///home/changwoo/hacks
[02-14 00:06] (riterContext.dete) INFO: file detected not HWPX
[02-14 00:06] (riterContext.dete) INFO: file detected as HWP
[02-14 00:06] (OrestartImpl.dete) INFO: File is Hancomm document.

한번 열면 위와 같이 남습니다.

커맨드라인, 메뉴에서 파일 열기, 최근파일에서 선택 모두 해 봤는데 예외 없이 복사본이 남고 로그에도 file:/// 로 남습니다.

ebandal commented 4 months ago

빼박 증거로 오류를 인정할수 밖에 없는 상황이 되니, 오류의 원인이 이제야 보이는 것 같습니다. 도움주셔서 감사합니다.

changwoo commented 4 months ago

수정된 것 확인했습니다. 복사를 안 해서 그런지 읽어들일때 많이 빨라졌네요. 감사합니다.

여러가지 이슈가 들어있는데 해결된 것 같으니 닫겠습니다. XDG base dir spec은 건의 사항이기도 해서 적용은 다른 이슈로 만들겠습니다.