mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Fix bug 61452
passwords
This commit is contained in:
@ -35,16 +35,26 @@ You need to create an xml configuration file. It must contain:
|
||||
|
||||
# params in any order, in any place, delimiter is unicode code in hex
|
||||
# encoding is case sensitive
|
||||
# input file with csv:
|
||||
# usage csv:
|
||||
filename[cp(codepage)][del%(unicode code)]
|
||||
# example:
|
||||
some_csv_file[cpUTF-8][del%3b].csv
|
||||
|
||||
# same with txt file, but only encoding:
|
||||
# usage txt:
|
||||
filename[cp(codepage)]
|
||||
# example
|
||||
some_txt_file[cpUTF-8].txt
|
||||
|
||||
# (non-required) is take password from filename (default - 1).
|
||||
<filenamePassword> </filenamePassword>
|
||||
|
||||
# in any order, in any place
|
||||
# usage:
|
||||
filename[pass(password)]
|
||||
|
||||
# example:
|
||||
some_file[pass123].txt
|
||||
|
||||
# (non-required) default encoding for csv/txt files, if filenameCsvTxtParams is 0, or no param in filename (default - UTF-8)
|
||||
<defaultCsvTxtEncoding> </defaultCsvTxtEncoding>
|
||||
|
||||
|
||||
@ -204,7 +204,8 @@ Cx2tTester::Cx2tTester(const std::wstring& configPath)
|
||||
m_bIsErrorsOnly = false;
|
||||
m_bIsTimestamp = true;
|
||||
m_bIsDeleteOk = false;
|
||||
m_bIsfilenameCsvTxtParams = true;
|
||||
m_bIsFilenameCsvTxtParams = true;
|
||||
m_bIsFilenamePassword = true;
|
||||
m_defaultCsvDelimiter = L";";
|
||||
m_defaultCsvTxtEndcoding = L"UTF-8";
|
||||
m_inputFormatsList.SetDefault();
|
||||
@ -296,7 +297,8 @@ void Cx2tTester::SetConfig(const std::wstring& configPath)
|
||||
else if(name == L"timestamp" && !node.GetText().empty()) m_bIsTimestamp = std::stoi(node.GetText());
|
||||
else if(name == L"deleteOk" && !node.GetText().empty()) m_bIsDeleteOk = std::stoi(node.GetText());
|
||||
else if(name == L"timeout" && !node.GetText().empty()) m_timeout = std::stoi(node.GetText());
|
||||
else if(name == L"filenameCsvTxtParams" && !node.GetText().empty()) m_bIsfilenameCsvTxtParams = std::stoi(node.GetText());
|
||||
else if(name == L"filenameCsvTxtParams" && !node.GetText().empty()) m_bIsFilenameCsvTxtParams = std::stoi(node.GetText());
|
||||
else if(name == L"filenamePassword" && !node.GetText().empty()) m_bIsFilenamePassword = std::stoi(node.GetText());
|
||||
else if(name == L"defaultCsvTxtEncoding" && !node.GetText().empty()) m_defaultCsvTxtEndcoding = node.GetText();
|
||||
else if(name == L"defaultCsvDelimiter" && !node.GetText().empty()) m_defaultCsvDelimiter = (wchar_t)std::stoi(node.GetText(), nullptr, 16);
|
||||
else if(name == L"inputFilesList" && !node.GetText().empty())
|
||||
@ -477,7 +479,7 @@ void Cx2tTester::Start()
|
||||
std::wstring csvDelimiter = m_defaultCsvDelimiter;
|
||||
|
||||
// setup csv & txt additional params
|
||||
if(m_bIsfilenameCsvTxtParams
|
||||
if(m_bIsFilenameCsvTxtParams
|
||||
|| input_format == AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT
|
||||
|| input_format == AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV)
|
||||
{
|
||||
@ -496,7 +498,7 @@ void Cx2tTester::Start()
|
||||
break;
|
||||
}
|
||||
|
||||
if(m_bIsfilenameCsvTxtParams || input_format == AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV)
|
||||
if(m_bIsFilenameCsvTxtParams || input_format == AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV)
|
||||
{
|
||||
std::wstring find_str = L"[del%";
|
||||
size_t pos1 = input_filename.find(find_str);
|
||||
@ -505,11 +507,21 @@ void Cx2tTester::Start()
|
||||
csvDelimiter = (wchar_t)std::stoi(input_filename.substr(pos1 + find_str.size(), pos2 - pos1 - find_str.size()), nullptr, 16);
|
||||
}
|
||||
|
||||
std::wstring password;
|
||||
if(m_bIsFilenamePassword)
|
||||
{
|
||||
std::wstring find_str = L"[pass";
|
||||
size_t pos1 = input_filename.find(find_str);
|
||||
size_t pos2 = input_filename.find(L"]", pos1 + 1);
|
||||
if(pos1 != std::wstring::npos && pos2 != std::wstring::npos)
|
||||
password = input_filename.substr(pos1 + find_str.size(), pos2 - pos1 - find_str.size());
|
||||
}
|
||||
|
||||
// waiting...
|
||||
do
|
||||
{
|
||||
NSThreads::Sleep(50);
|
||||
}while(IsAllBusy());
|
||||
} while(IsAllBusy());
|
||||
|
||||
m_coresCS.Enter();
|
||||
|
||||
@ -526,6 +538,7 @@ void Cx2tTester::Start()
|
||||
converter->SetXmlErrorsDirectory(m_errorsXmlDirectory);
|
||||
converter->SetCsvTxtEncoding(csvTxtEncoding);
|
||||
converter->SetCsvDelimiter(csvDelimiter);
|
||||
converter->SetPassword(password);
|
||||
converter->SetTimeout(m_timeout);
|
||||
converter->SetFilesCount(files.size(), i + 1);
|
||||
converter->DestroyOnFinish();
|
||||
@ -679,6 +692,10 @@ void CConverter::SetCsvDelimiter(const std::wstring& csvDelimiter)
|
||||
{
|
||||
m_csvDelimiter = csvDelimiter;
|
||||
}
|
||||
void CConverter::SetPassword(const std::wstring& password)
|
||||
{
|
||||
m_password = password;
|
||||
}
|
||||
void CConverter::SetTimeout(unsigned long timeout)
|
||||
{
|
||||
m_timeout = timeout;
|
||||
@ -785,6 +802,14 @@ DWORD CConverter::ThreadProc()
|
||||
builder.WriteString(L"</m_nCsvDelimiterChar>");
|
||||
}
|
||||
|
||||
// password
|
||||
if(!m_password.empty())
|
||||
{
|
||||
builder.WriteString(L"<m_sPassword>");
|
||||
builder.WriteEncodeXmlString(m_password);
|
||||
builder.WriteString(L"</m_sPassword>");
|
||||
}
|
||||
|
||||
builder.WriteString(L"<m_sJsonParams>{"spreadsheetLayout":{"gridLines":true,"headings":true,"fitToHeight":1,"fitToWidth":1,"orientation":"landscape"}}</m_sJsonParams>");
|
||||
builder.WriteString(L"</Root>");
|
||||
|
||||
|
||||
@ -126,7 +126,8 @@ private:
|
||||
bool m_bIsErrorsOnly;
|
||||
bool m_bIsTimestamp;
|
||||
bool m_bIsDeleteOk;
|
||||
bool m_bIsfilenameCsvTxtParams;
|
||||
bool m_bIsFilenameCsvTxtParams;
|
||||
bool m_bIsFilenamePassword;
|
||||
|
||||
std::wstring m_defaultCsvTxtEndcoding;
|
||||
std::wstring m_defaultCsvDelimiter;
|
||||
@ -154,6 +155,7 @@ public:
|
||||
void SetXmlErrorsDirectory(const std::wstring& errorsXmlDirectory);
|
||||
void SetCsvTxtEncoding(int csvTxtEncoding);
|
||||
void SetCsvDelimiter(const std::wstring& csvDelimiter);
|
||||
void SetPassword(const std::wstring& password);
|
||||
void SetTimeout(unsigned long timeout);
|
||||
void SetFilesCount(int totalFiles, int currFile);
|
||||
|
||||
@ -176,6 +178,7 @@ private:
|
||||
|
||||
int m_csvTxtEncoding;
|
||||
std::wstring m_csvDelimiter;
|
||||
std::wstring m_password;
|
||||
|
||||
bool m_bIsErrorsOnly;
|
||||
bool m_bIsDeleteOk;
|
||||
|
||||
Reference in New Issue
Block a user