2013-07-25 2 views
2

Coldfusion을 사용하여 CSV를 해독하려고합니다. CSV는 gpg4win을 사용하여 암호화되었습니다. 나는 CF Admin에서 암호화 된 파일을 찾기 위해 예약 된 작업을 만들었습니다. 발견 된 파일은 암호 해독하고 다른 폴더에 CSV 파일로 저장합니다 (DB로 가져 오기). ColdFusion 10에서 gpg4Win으로 암호화 된 CSV 암호 해독

코드의 발췌 한 것입니다 '.이 예약 된 작업이 성공적으로 완료되었습니다'나는 수동으로 스케줄러를 실행하면

<cfparam name="Variables.InputFolderName" default="inputfolder" /> 
<cfparam name="Variables.OutputFolderName" default="outputfolder" /> 
<cfparam name="gKeyPassphrase" default="sampletestkey" /> 
<cfparam name="gEncryptionKeyID" default="sampletestid" /> 
<cfset inputFilePath = ExpandPath("/resources/uploads/csv/#Variables.InputFolderName#") /> 
<cfset outputpath = ExpandPath("/resources/uploads/#Variables.OutputFolderName#") /> 
<cftry> 
    <cfdirectory directory="#inputFilePath#" name="Variables.EncryptedCSVFiles" filter="*.gpg" action="list" > 
    <cffile action="read" file="#inputFilePath#\#name#" variable="Variables.EncryptedCSVData" /> 
    <cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2" arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID# ouputfile=#outputpath#/test.csv" timeout="300"></cfexecute> 
<cfcatch type="any"> 
    <!--- I tried emailing a cfdump of the error to myself but it didn't work ---> 
</cfcatch> 
</cftry> 

, (가) CF Admin에 표시되지만 암호가 해독 된 파일은 생성되지 않으며 이메일을보고하는 데 오류가 발생하지 않습니다.

누구든지 나를 도와 줄 수 있다면 정말 감사 할 것입니다.

감사합니다.

답변

1

(참고 :. 그렇지 않을 경우, 다시 돌아가서 첫 번째 할 내가 먼저 위의 파일 설정은 명령 줄에서 성공적으로 작동 확인 가정입니다) 즉, 실제 CF 코드 인 경우

를, 그것은 몇 가지 포함 구문 오류. arguments 속성 뒤에 닫는 따옴표가없고 outputfile 속성 뒤에 따옴표가 없습니다 (철자가 잘못 입력되었습니다). 따라서 CF 코드는 컴파일해야하지만 출력 파일이 생성되지 않을 수 있습니다. 경우에도 그 단지 오류, 따옴표를 고정 시도하고 당신이 어떤 결과를 얻어야한다 : 나는 gpg2에 익숙하지 오전 동안,

<cfexecute name="C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" 
     arguments="--passphrase=#gKeyPassphrase# --batch -o #inputFilePath# -d -r #gEncryptionKeyID#" 
     outputfile="#outputpath#/test.csv" 
     timeout="300"> 
</cfexecute> 

또한, 빠른 검색은 -o 매개 변수는 출력 파일에 사용되는 제안 . 그러나 CF 코드에서 경로는 #inputFilePath#이라는 변수에서 비롯된 것으로 약간 이상하게 보입니다. 불행한 이름 지정 선택이 아니라고 가정 할 때 파일 경로를 확인하는 것이 좋습니다.

+0

내 코드를 수정 해 주셔서 감사합니다. 나는 너의 제안을 시도했다. 커맨드 라인에서 작동하지만 CF가 멈추고 브라우저가 페이지를로드하려고 계속합니다. [AxCrypt] (http://www.axantum.com/AxCrypt/Downloads.html)를 대신 사용하고 있습니다. 그것은 AES를 사용하고 CF로 해독하는 데 문제가 없습니다. AxCrypt 사용 : '<항목 cfdirectory 디렉토리 = "#의 inputFilePath 번호"이름 = "Variables.EncryptedCSVFiles"필터 = ". * axx"행동 = "목록">

+0

* RE :하지만 CF가 멈춘 것 같습니다. * 입력을 기다리고있을 수 있습니다. 어떤 프로그램에서는 exe를 인수로 설정하고'/ c' 플래그를 사용하는 것이 더 좋습니다. [example here] (http://stackoverflow.com/a/1002585/104223)를 참조하십시오. 어쨌든, 당신이 대안을 찾았 기 때문에 기쁩니다. (편집 : 최종 코드를 "답변"으로 게시하여보다 쉽게 ​​볼 수 있습니다). – Leigh