Categories
나의/기술

포에디트로 워드프레스 번역할 때 SFTP로 ‘서버에 접속’을 이용하려면 이 IP를 추가하세요

워드프레스 커뮤니티에서 번역을 시작했을 때, 번역 파일을 직접 내려받아 편집하려고 PoEdit(포에디트)를 사용했다. 플러그인 번역에 조금 더 열정을 가지게 되면서 프로판을 사서 운영하고 있는 워드프레스에 설치된 플러그인을 하나씩 번역하려고 했다.

처음에는 PC에 서버를 돌려서 해 보려고 했는데, ‘서버에 연결’ 방식으로는 내부 서버에 접속이 안 되었다. 이유는 기억이 안 나지만 몇 번 여러가지1로 시도했지만 되지 않아서, 이 블로그가 설치되어 있는 서버에 접속을 시도했다.

하지만 무슨 일인지 접속이 되지 않았다. 로그를 보면 접근 시도는 하는데, 인증이 되지 않았다. 개발자에게 문의를 해 보았더니 ‘서버에 연결’을 시도하는 PC에서 바로 접속하는 것이 아니라 포에디트 서버에서 인증 정보를 전달 받아 접속하는 것이기에, 포에디트 서버의 주소에서 접속할 수 있도록 허용해주면 된다고 했다.2

이 블로그는 우분투 18.04에 LEMP 스택으로 운영하는 서버에 있는데, 서버를 ssh로만 접근할 수 있도록 설정해 두었다. 외부에서 이 서버에 접근할 수 있는 방식을 ssh만 열어 놓았다는 말이다. 서버에 접근할 수 있는 방식을 ssh 포트로만 제한하고, 인스턴스 규칙과 방화벽(ufw) 규칙에 접근 가능한 IP를 제한해 두는 방식으로 보안을 강화해 놓았다.3

IP는 auditd를 설치하고, 포에디트의 ‘서버에 연결’을 시도하여, 접근하는 IP를 확인하는 방식으로 알아내었다. 이렇게 확인된 IP는 172.104.150.128이다. 혹시 포에디트 워드프레스 번역의 서버 접속이 안 된다면 이 IP를 방화벽 규칙에 허용해 주면 큰 문제 없이 사용할 수 있을 것으로 생각된다.

  1. hosts에서 일반 도메인 형식으로 설정도 해 보았지만 안 되었다[]
  2. 포에디트 개발자를 믿지 못하겠으면 안 하면 그만 이지만, 이 블로그의 자료는 수시로 백업이 되고 있어서 다 털어봤자 별로 중요한 내용을 건져갈 것도 없다[]
  3. 이 전에 별도의 규칙을 해 두지 않았더니 웬 듣보잡 해커놈이 들어와서 db와 cpu 자원을 마구 괴롭힌 경험을 한 뒤로 이렇게 강화하게 되었다. 이렇게 접근 ip를 제한하는 것 만으로도 장난질을 방지할 수 있다.[]
Categories
나의/기술

이용자 역할 자동으로 바꾸기

이용자 역할을 등록된 이메일 기준으로 변경하는 코드이다. PHP로 작성되었고, crontab에 등록해서 5분마다 실행하도록 설정하고 로그를 남기는 방식으로 작동된다.

이용자 역할

최근 워드프레스로 작업하고 있는 사이트가 특정 학생을 대상으로 서비스되고 있다. 워드프레스의 로그인 정보를 인식하고, 등록된 이용자가 특정 역할을 가지고 있어야 페이지의 내용이 표시되게 하는 방식으로 처리하고 있다.

이용자 역할 편집기로 ‘학생’ 역할을 만들고, 학생 역할에 특정 기능을 이용가능하게 해 놨다. 특정 기능을 이용할 수 있게 되어 있는 역할이라면 이용할 수 있게 해 놨다는게 더 정확하겠다. 학생이 학습 페이지의 내용을 보려면 워드프레스 계정에 등록한 뒤 ‘학생’ 역할을 부여 받아야 한다.

처음에는 이런 기능을 제공해주는 플러그인이 없나 찾아보다가 없어서 일일히 수작업으로 진행하였다. 차피 사이트의 존재를 알고 있는 학생이 제한되어 있고, 우리나라에서 이용될 수 없는 이메일 주소를 가지고 있지 않는 이용자만 걸러내면 되니까 크게 문제될 것이 없었다.

그런데 이 사이트를 이용하는 학교가 늘어나면서 이용자 역할을 조정해 주어야 할 대상이 늘어나게 되었다. 그래서 다시 플러그인을 찾아봤지만 찾을 수가 없어서 만들게 됐다.

역할 자동 전환 코드

급조한 티가 팍팍나는 조잡한 코드지만 이용하는데는 문제 없다.

<?php
$hdr = "wp"; // 일반적으로 wp_something 형식으로 되어 있는데, 아래막대 앞쪽의 wp만 입력하면 된다. 다르면 변경해주어야 한다.
$dbn = "wordpress"; // 일반적으로 wordpress로 되어 있지만 다르면 변경해주어야 한다.
$em = array("처리할 이메일 주소1","처리할 이메일 주소2"); // 처리할 이메일 목록을 따옴표에 담아 콤마로 구분해 입력하면 된다.
$link = mysqli_connect('localhost', 'ID', 'password'); // 데이터 베이스 접속 정보이다.
if (!$link) { die('연결에 실패했습니다: ' . mysqli_error());}
mysqli_select_db($link, $dbn); // 접속 정보로 자료집 선택하기

for($i = 0; $i < sizeof($em); $i++) {
$q = "SELECT * FROM ".$hdr."_users WHERE user_email LIKE '".$em[$i]."' ORDER BY ID ASC"; $qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
$uid = $r[0];
$q = "SELECT meta_value FROM ".$hdr."_usermeta WHERE user_id = ".$uid." AND meta_key = '".$hdr."_capabilities'";
$qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
if($r[0] == "a:1:{s:10:\"subscriber\";b:1;}") { // 역할이 ‘구독자’인지 확인해서 맞으면 실행
echo(date("Y-m-d H:i:s", time())."[ ".$em[$i]." ] 처리됨 "."\n");
$q = "UPDATE ".$hdr."_usermeta SET meta_value = 'a:1:{s:7:\"student\";b:1;}' WHERE ".$hdr."_usermeta.user_id = ".$uid." and ".$hdr."_usermeta.meta_key = '".$hdr."_capabilities';"; // 역할을 학생으로 변경
}
}
}
}

?>

오류나면 shortcode가 허용되었는지 확인하고 수정해주면 된다.

사이트에 가입하면 구독자 역할이 배정되도록 되어있기에, 이메일이 구독자로 등록되어 있다면 학생 역할로 변경하라는 것이다. 학생 역할은 이용자 역할 편집기로 추가해 준 역할이고, 기본 등록 역할이다.

자동 실행 설정

자동 실행은 crontab에 등록하면 되는데, 이메일 목록에 있는 학생이 가입하면 5분 이내에 처리될 수 있도록 5분 간격으로 처리되도록 해 놨다.

명령행에서 crontab -e 를 입력하여 편집기에 들어가서 다음의 내용을 추가해주면 된다.

*/5 * * * * /usr/bin/php /경로/파일명.php >> /var/log/파일명.log

분 단위 자리에 ‘ /5 ’를 붙여서 추가해주면 5분 단위로 처리되고, 기록파일에는 다음과 같이 남는다.

2020-03-17 08:15:01[ 이메일 주소1 ] 처리됨
2020-03-17 08:20:01[ 이메일 주소2 ] 처리됨
:

너무 짧다 싶으면 원하는 간격으로 조정하여 이용하면 된다. 다른 간격으로 변경하고 싶으면 크론탭 구루 사이트를 이용하여 값을 얻어 앞의 별표 부분에 넣어주면 된다.

Categories
나의/기술

포에디트(PoEdit)에서 삽입 모드가 무시 될 때

포에디트(PoEdit)에서 덮어쓰기 문제

워드프레스를 관리하다보니 포에디트로 번역에 참여할 때가 있는데, 한글 번역 부분을 입력하는데 삽입 모드가 켜 있든지 켜 있지 않든지 입력한 다음 한글 문자가 지워지는 문제가 발생한다. 나름 덮어쓰기 문제라고 명명하였다.

문제 보고(Reporting Bug)

한글과 관련된 문제인가 싶어서 개발자에게 보고했지만, 현상을 설명해도 한글을 알지도 못하고 입력할 수도 없다며 문제를 재현하기도 힘드니 조금 더 자세한 설명이 필요하다고 했다. 하지만 한글이 아닌 다른 문자에는 발생하지 않는 문제여서 설명을 해도 한글을 입력하지 않으면 재현할 수 없는 문제이고, 특정 입력기의 문제여서 입력기 설치와 이용에 대한 영문 페이지를 보내주었지만 같은 답변이 돌아왔다. 그래서 사실상 지원 받기를 포기하고 있었다.

개인적인 시도

그런데 – 언제나와 같이 – 다른 문제로 검색을 하다가 세 벌식 모아치기에 대한 글을 발견했다. 해당 글은 다양한 입력기로 모아치기를 설정하는 글이었는데, 한글 표현 방식(Hangul Representation)을 수정하는 화면을 보다가 저 부분을 수정하면 될까 싶었다.

설정을 변경하고 한글에 대해서는 덮어쓰기가 되지 않았지만, 스페이스바를 입력했을 때 덮어쓰기 모드가 켜 있는 것처럼 다음 글자가 지워졌다.

프로그램 호환성(App Compatibility)

한글 표현 방식(Hangul Representation) 설정 아래에 있는 프로그램 호환성(App Compatibility)을 발견하였다. 날개셋 9.82에 추가된 항목1인데, 이 항목을 선택하여 기본으로 설정되어 있는 Type A에서 Type B로 변경하고 적용하니 거짓말처럼 잘 되었다.

그런데 이렇게 적용하고 나니 덮어쓰기 모드가 설정되었을 때도 덮어쓰이지 않는 문제가 생겼다. 글자를 써 놓고 덮어쓰기 모드를 설정한 뒤에 스페이스바를 입력하면 덮어쓰이지만 다른 글자는 덮어쓰이지 않는다. 윈도우 입력기로는 이상 없이 작동한다. 프로그램 호환성 탭에 있는 다른 설정항목을 시도해 봤는데, 해결되지 않는다.

물론 기본적으로 삽입 모드(덮어쓰기 모드를 끈 상태)를 설정하고 쓰는 편이 훨씬 편하니 나에게는 문제가 되지 않는다.

어코던스 입력 문제 해결

이전에 어코던스(Accordance Bible Software)에서 날개셋으로 드보락(Dvorak) 자판 이용시 영문자 입력이 제대로 안 될때 에서 입력 문제를 다른 방식으로 해결했었다.

또 다른 문제

하지만 해당 방식으로 설정을 수정하여 어코던스에서는 문제가 발생하지 않는 대신, 다른 앱에서 이상 동작하여 원 설정대로 바꾸고 대신 윈도우 IME에 드보락 자판을 설정하여 사용하고 있었다.

문제 해결

최근 드보락보다 타이핑에 부담이 덜 간다는 글을 읽고 콜막(Colmak)으로 변경하여 쓰기 시작했는데, 윈도우 설정에서는 콜막이 지원되지 않아2 불편해하고 있었는데, 지금 이 글을 쓰면서 프로그램 호환성에서 Type B로 변경하고 사용하니 이상 없이 작동한다.

뿐만 아니라 이용자 노트를 입력하는 화면에서 무지막지한 딜레이가 생겼는데, 이 문제가 해결되었다. 물론 여전히 무시할 정도의 딜레이가 생기기는 하지만 이전에 비하면 비약적으로 개선되었다. 성경 본문에 기록하는 것을 포함한 모든 기록해야 할 부분에서 발생하던 딜레이가 무시할 정도의 수준까지 개선되었다.

입력기를 날개셋으로 설정해서 사용할 때 발생하던 불편함에 프로그램 호환성 항목 하나로 다 해결되어버렸다. 벌이가 좋다면야 시원하게 후원도 하고 싶지만, 그렇지 않기에 종교적인 방식으로라도 후원을 해야겠다.

  1. 2019년 10월 26일에 공개됨[]
  2. 지금 다시 확인해보니 역시 없다.[]
Categories
나의/기술

XE 플래너 호출 인자 오류

최근 XE를 사용할 일이 있어서 설정 중에 플래너 게시판 묘듈을 사용하다가 ics 출력 버튼에서 다음과 같은 오류를 만나게 되었다.

Fatal error: Uncaught ArgumentCountError: Too few arguments to function planner123_main::fn_xeTimetoUTC(), 0 passed in /var/www/html ‧‧‧‧‧‧

함수 호출할 때 인자가 비어있기에 생기는 오류인데, 함수에 보니까 비어있을 때 처리 구문이 있는데, 그 구문을 만나기도 전에 오류가 나버렸다.

그래서 함수 내에 있는 date('YmdHis')을 가져다가 오류난 함수 호출 부분에 인자로 넣어버렸다.

‧‧‧/modules/board/skins/xe_official_planner123/function/class.planner123_main.php on line 2113

함수가 2113번 줄에 선언되어 있지만, 인자가 없는 채로 호출된 곳은 2264번 줄이어서 거기 있는 인자에 date('YmdHis')를 추가해서 다음과 같이 수정해 주었다.

원래 코드:
$today_DT = planner123_main::fn_xeTimetoUTC();

수정된 코드:
$today_DT = planner123_main::fn_xeTimetoUTC(date('YmdHis'));

출력은 잘 되는데, 사실 출력할 필요는 없다는 게 함정.

Categories
나의/기술 성경보이기

BibleShow 5 (1) 설치와 실행

방송 설비가 잘 되어 있고 설비를 운용할 수 있는 인력까지 충분한 교회들이야 이미 좋은 프로그램을 사용하고 있으리라 생각된다. 다양한 기능을 포함하고 있는 프로그램들은 한 번에 적지 않은 비용을 내거나 월 구독료를 내는 방식으로 이용할 수 있게 되어 있다.

바이블쇼(BibleShow)는 성경 본문을 보여주는 것에 집중되어 있고, 그에 필요한 기능을 안정적으로 실행한다. 발견한 이후로 지금까지 사용하면서 크게 문제가 되었던 적이 없고, 다른 복잡한 기능이 필요없고 성경 본문만 훌륭하게 보여주면 좋겠다는 생각을 가진 사람이 있을 것으로 생각되어 소개하는 글을 쓰게 되었다.

BibleShow 는 Microsoft Windows 운영 체제를 실행하는 개인용 컴퓨터에 연결된 모든 비디오 디스플레이 장치(모니터, 프로젝터, TV 세트, HMD)에서 성경 구절을 보여주기 위한 소프트웨어 솔루션입니다. 이 응용 프로그램은 모든 사용자에게 무료로 공유되어야하며, 전 세계에 하나님의 말씀(성경)을 전파하려는 목적으로 개발되었습니다. 이 도구는 교회, 기독교 단체, 설교자, 성경 공부 모임 지도자 뿐만 아니라 성경 구절을 즐겨 읽을 수 있는 독자에게 주로 유익합니다. 사용자는 현대적이고 매력적인 디자인을 즉시 보게 됩니다.

바이블쇼 홈페이지발표 페이지에 있는 내용을 번역

개인적으로는 단일 실행파일로 되어 있는 홀리뷰어를 좋아했지만, 사용해보신 분들은 아시겠지만 오타가 적지 않다. 그럴 때마다 당황은 담당자 몫이었으니 다른 방법을 찾아볼 수 밖에 없었다. 이런 저런 프로그램 중에 그나마 완성도가 있었던 프로그램은 이지슬라이드가 있었지만, 개인적으로는 좀 불편한 부분이 있어서 검색하다가 발견하게 된 것이 바이블쇼이다.

내려받기

프로그램은 홈페이지의 다운로드 페이지에서 다운로드 받을 수 있다. 지금은 5.3이 최신 안정판이고 5.4판이 몇 가지 문제점을 수정하여 얼마 후에 나올 것이라고 한다.

홈페이지: https://www.bibleshow.net

바이블쇼는 루마니아
바이블쇼 홈페이지

개발자는 Miodrag Rechesan 인데, 루마니아인이어서 영어와 함께 루마니아어로 홈페이지가 서비스된다. 좌측 메뉴에서 Download 를 누르면 아래와 같은 화면이 나타나는데, 상단에는 프로그램을 받을 수 있는 링크가 있고, 그 아래에는 성경 역본을 내려받을 수 있게 되어 있다.

내려받기(Download) 페이지

내려받을 수 있는 파일이 3개가 있지만 크게 문제가 없다면 제일 위에 있는 파일을 받으면 된다.

설치하기

내려받은 파일 BibleShow5.exe

파일을 내려받은 위치로 이동하여 BibleShow5.exe1를 찾아 마우스 두 번 누르기를 하여 설치를 진행하면 된다.

설치자 첫 화면

설치파일이 정상적으로 실행된다면 위와 같은 화면을 만날 수 있는데, Next 를 누른다.

약관 화면

5.3판의 이용약관 / 소프트웨어 사용권 본문의 내용을 번역하면 다음과 같다.

이용 약관 / 소프트웨어 사용권 계약:
• 소프트웨어 제작자는 성경 구절을 제시 할 목적(주로 교회용)으로만 컴퓨터 또는 모바일 기기에서 BibleShow를 내려받아, 설치하고 사용할 수 있는 제한적, 비상업적, 비 독점적, 재 라이센스 불가능, 할당 불가능, 무료 라이센스를 사용자에게 부여한다.소프트웨어 저자는 성경 구절을 제시하기위한 목적으로, 다운로드, 설치 및 컴퓨터 또는 모바일 장치에서 BibleShow를 사용하는 제한, 비 상업적, 비 독점적, 비 – 비 할당, 무료 라이센스를 사용자에게 부여 ( 주로 교회 용).
• 사용자는 판매, 단기 임대, 장기 임대, 수출, 중개자 또는 공급자의 역할을 하거나 제 3 자에게 권한을 부여하지 아니한다.
• 사용자는 BibleShow 실행 파일과 성경 역본의 수정, 파생물 제작, 리버스 엔지니어링, 디 컴파일, 분해 또는 해킹을 수행, 유발, 허용 또는 승인하지아니한다.
• 소프트웨어 제작자는 소프트웨어와 성경 본문을 사용하여 발생하는 결과에 대해 책임을 지지 아니한다.
• 소프트웨어가 무료로 제공 되더라도 소프트웨어 개발에는 수년간의 집중적인 작업이 필요하며 때로는 적절한 리소스를 얻기 위해 고군분투하고 있습니다. 사용자가 이 프로젝트를 지원하는 데 부끄러운 느낌이 들지 않기를 바랍니다. 그리고 이 응용 프로그램이 필수적인 교회는 새로운 성경 역본의 개선과 추가에 대해 어떻게든 기여할 것을 권장합니다.
저작권 (c) 2002-2019 Miodrag Recheşan
www.BibleShow.net

바이블쇼 발표 페이지에서도 동일한 내용을 확인할 수 있다

I Agree 를 눌러 다음 화면으로 넘어가면 설치할 위치를 입력하라고 하는데, 특별한 이유가 없다면 변경하지 말고 Install 을 눌러 설치를 진행한다.

설치 위치

다음 화면에서는 설치하는 내용이 주르르르륵~ 올라가는데, 금새 끝나고 나면 아래와 같이 설치를 마치는 화면을 만날 수 있다.

설치 마침화면

여기까지 진행됐다면 이제 사용할 준비가 되었다. 여기에서 표시한 채로 Finish를 누르면 바로 실행된다. 바로 실행하고 싶지 않다면 상자를 눌러 표시를 해제한 후 Finish를 누르면 된다.

실행

이렇게 설치가 잘 되었으면 아래와 같이 앱이 검색이 된다.

윈도우 10에서 bibleshow 를 입력하면 위와 같이 설치된 앱이 나타난다.

설치자에서 따로 묻는 항목이 없었지만 바탕화면에는 바로가기가 보인다.

BibleShow5바로 가기

둘 중에 어느 편이라도 원하는 방식으로 실행하면 다음과 같은 화면을 만날 수 있다.

BibleShow 5.3 설치 직후 실행화면

설치하고 처음 실행하면 아래의 도움말 파일도 같이 열린다.

외국어 울렁증이 있으신 분들이 계실텐데, 다행스럽게도 사용화면을 한국어로 바꿀 수 있다. 다음 편에서 기본 사용 방법과 설정에 대하여 이어가고자 한다.

  1. 물론 판이 바뀌면 파일명이 바뀔 수 있으니 홈페이지 내려받기 페이지에 있는 파일명을 확인해 두어야 한다[]