Skip to content
This repository has been archived by the owner on Dec 6, 2023. It is now read-only.

Commit

Permalink
Merge
Browse files Browse the repository at this point in the history
  • Loading branch information
thisistorsten committed May 19, 2023
1 parent 4d5feab commit 40b3457
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 12 deletions.
5 changes: 5 additions & 0 deletions src/libfintx.FinTS/Data/ConnectionDetails.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ public class ConnectionDetails
/// </summary>
public string UserId { get; set; }

/// <summary>
/// UserId with HBCI special characters escaped.
/// </summary>
public string UserIdEscaped => Helper.EscapeHbciString(UserId);

/// <summary>
/// Logon-Pin for the bank account
/// </summary>
Expand Down
15 changes: 14 additions & 1 deletion src/libfintx.FinTS/Helper/Helper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ public static partial class Helper
/// </summary>
private const string PatternResultMessage = @"(\d{4}):.*?:(.+)";

/// <summary>
/// Escapes all special Characters (':', '+', ''') with a question mark '?'.
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string EscapeHbciString(string str)
{
return str?.Replace(":", "?:").Replace("'", "?'").Replace("+", "?+");
}

/// <summary>
/// Combine byte arrays
/// </summary>
Expand Down Expand Up @@ -696,14 +706,16 @@ private static string GetUPDDir()

private static string GetUPDFile(string dir, int BLZ, string UserID)
{
return Path.Combine(dir, "280_" + BLZ + "_" + UserID + ".upd");
//return Path.Combine(dir, "280_" + BLZ + "_" + UserID + ".upd");
return Path.Combine(dir, "280_" + BLZ + "_" + MakeFilenameValid(UserID) + ".upd");
}

public static void SaveUPD(int BLZ, string UserID, string upd)
{
string dir = GetUPDDir();
Directory.CreateDirectory(dir);
var file = GetUPDFile(dir, BLZ, UserID);
Log.Write($"Saving UPD to '{file}' ...");
if (!File.Exists(file))
{
using (File.Create(file)) { };
Expand All @@ -725,6 +737,7 @@ public static void SaveBPD(int BLZ, string upd)
string dir = GetBPDDir();
Directory.CreateDirectory(dir);
var file = GetBPDFile(dir, BLZ);
Log.Write($"Saving BPD to '{file}' ...");
if (!File.Exists(file))
{
using (File.Create(file)) { };
Expand Down
14 changes: 9 additions & 5 deletions src/libfintx.FinTS/Message/FinTsMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ public static string Create(FinTsClient client, int MsgNum, string DialogID, str

int Version = client.ConnectionDetails.HbciVersion;
int BLZ = client.ConnectionDetails.BlzPrimary;
string UserID = client.ConnectionDetails.UserId;
//string UserID = client.ConnectionDetails.UserId;
// Änderung aufgrund https://github.com/abid76/libfintx/commit/95e8e4768d94a42f91a7aa4c905b88bae0439827
string UserID = client.ConnectionDetails.UserIdEscaped;
string PIN = client.ConnectionDetails.Pin;
int SegmentNum = client.SEGNUM;

Expand Down Expand Up @@ -768,8 +770,8 @@ public static string Create(FinTsClient client, int MsgNum, string DialogID, str

Log.Write(msgEnd);

UserID = string.Empty;
PIN = null;
//UserID = string.Empty;
//PIN = null;

return msgHead + encHead + payload + msgEnd;
}
Expand All @@ -790,7 +792,8 @@ public static async Task<string> Send(FinTsClient client, string Message)
if (Trace.Enabled)
{
if (Trace.MaskCredentials)
Trace.Write(Message, client.ConnectionDetails.UserId, client.ConnectionDetails.Pin);
//Trace.Write(Message, client.ConnectionDetails.UserId, client.ConnectionDetails.Pin);
Trace.Write(Message, client.ConnectionDetails.UserIdEscaped, client.ConnectionDetails.Pin);
else
Trace.Write(Message);
}
Expand Down Expand Up @@ -842,7 +845,8 @@ private static async Task<string> SendAsync(FinTsClient client, string Message)
if (Trace.Enabled)
{
if (Trace.MaskCredentials)
Trace.Write(FinTSMessage, client.ConnectionDetails.UserId, client.ConnectionDetails.Pin);
//Trace.Write(FinTSMessage, client.ConnectionDetails.UserId, client.ConnectionDetails.Pin);
Trace.Write(Message, client.ConnectionDetails.UserIdEscaped, client.ConnectionDetails.Pin);
else
Trace.Write(FinTSMessage);
}
Expand Down
4 changes: 2 additions & 2 deletions src/libfintx.FinTS/Segments/HKSYN.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static async Task<String> Init_HKSYN(FinTsClient client)
sb.Append(DEG.Separator);
sb.Append(connectionDetails.BlzPrimary);
sb.Append(sEG.Delimiter);
sb.Append(connectionDetails.UserId);
sb.Append(connectionDetails.UserIdEscaped);
sb.Append(sEG.Delimiter);
sb.Append("0");
sb.Append(sEG.Delimiter);
Expand Down Expand Up @@ -109,7 +109,7 @@ public static async Task<String> Init_HKSYN(FinTsClient client)
sb.Append(DEG.Separator);
sb.Append(connectionDetails.BlzPrimary);
sb.Append(sEG.Delimiter);
sb.Append(connectionDetails.UserId);
sb.Append(connectionDetails.UserIdEscaped);
sb.Append(sEG.Delimiter);
sb.Append("0");
sb.Append(sEG.Delimiter);
Expand Down
8 changes: 4 additions & 4 deletions src/libfintx.FinTS/Transactions/INI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static async Task<String> Init_INI(FinTsClient client, string hkTanSegmen
sb.Append(DEG.Separator);
sb.Append(connectionDetails.BlzPrimary);
sb.Append(sEG.Delimiter);
sb.Append(connectionDetails.UserId);
sb.Append(connectionDetails.UserIdEscaped);
sb.Append(sEG.Delimiter);
sb.Append(client.SystemId);
sb.Append(sEG.Delimiter);
Expand Down Expand Up @@ -114,7 +114,7 @@ public static async Task<String> Init_INI(FinTsClient client, string hkTanSegmen
sb.Append(DEG.Separator);
sb.Append(connectionDetails.BlzPrimary);
sb.Append(sEG.Delimiter);
sb.Append(connectionDetails.UserId);
sb.Append(connectionDetails.UserIdEscaped);
sb.Append(sEG.Delimiter);
sb.Append(client.SystemId);
sb.Append(sEG.Delimiter);
Expand Down Expand Up @@ -254,7 +254,7 @@ public static async Task<String> Init_INI(FinTsClient client, string hkTanSegmen

client.SEGNUM = Convert.ToInt16(SEG_NUM.Seg4);

string message = FinTsMessageAnonymous.Create(connectionDetails.HbciVersion, "1", "0", connectionDetails.Blz, connectionDetails.UserId, connectionDetails.Pin, "0", segments, null, client.SEGNUM);
string message = FinTsMessageAnonymous.Create(connectionDetails.HbciVersion, "1", "0", connectionDetails.Blz, connectionDetails.UserIdEscaped, connectionDetails.Pin, "0", segments, null, client.SEGNUM);
string response = await FinTSMessage.Send(client, message);

var messages = Helper.Parse_Segments(client, response);
Expand Down Expand Up @@ -284,7 +284,7 @@ public static async Task<String> Init_INI(FinTsClient client, string hkTanSegmen
sb.Append(DEG.Separator);
sb.Append(connectionDetails.BlzPrimary);
sb.Append(sEG.Delimiter);
sb.Append(connectionDetails.UserId);
sb.Append(connectionDetails.UserIdEscaped);
sb.Append(sEG.Delimiter);
sb.Append(client.SystemId);
sb.Append(sEG.Delimiter);
Expand Down

0 comments on commit 40b3457

Please sign in to comment.