ULogEngine.pas ( File view )

  • By sathex 2016-03-20
  • View(s):0
  • Download(s):0
  • Point(s): 1
			unit ULogEngine;

interface

uses Windows,SysUtils,Classes,USECA_EMM;

type eLogFilterMode=(eLogFilterMode_Tables,eLogFilterMode_Stream,eLogFilterMode_Text,eLogFilterMode_TextSECA,eLogFilterMode_TextSECA_WithID);

type TSECALogEntry=record
    ID: string;
    AgainstSerial: Boolean;
    Filter: String;
    TargetFile: string;
    Part: integer;
end;

type TSECAIDIndex=Record
    ID: WORD;
    Index: BYTE;
end;

type TSECALogEngine=Class(TObject)
  Protected
    SECA: TSECA_EMM;
    Function GetIndexForID(ID: WORD): BYTE;
    procedure AppendBinaryFile(var F: Integer; FileName: string;var Part: integer);
  Private
    FileShared: Integer;
    FileSerial: Integer;
    mvarRunning: Boolean;
    mvarFilterAllShared: Boolean;
    mvarFilterAllSharedMode: eLOGFilterMode;
    mvarFilterAllSharedFile: string;
    mvarFilterAllSharedFilePart: integer;
    mvarFilterAllSharedAppendFile: Boolean;
    mvarFilterAllSerial: Boolean;
    mvarFilterAllSerialMode: eLOGFilterMode;
    mvarFilterAllSerialFile: string;
    mvarFilterAllSerialFilePart: integer;
    mvarFilterAllSerialAppendFile: Boolean;
    mvarFilterForAllCards: Boolean;
    mvarFilterForAllCardsFile: String;
    mvarFilterForAllCardsPart: integer;
    mvarActiveFilters: integer;
    mvarFilters: Array [0..999] of TSECALogEntry;
    mvarActiveIDIndex: integer;
    mvarIDIndex: array [0..255] of TSECAIDIndex;
    mvarSplitEvery: integer;
    procedure SetRunning(const Value: Boolean);
    Function CheckForSplit(F: integer): Boolean;
    Function GetSplitName(FileName: String; Part: integer): string;
    Function OpenSplitFile(FileName: string;var Part: integer): integer;
  Public
    property FilterAllShared: Boolean read mvarFilterAllShared write mvarFilterAllShared;
    property FilterAllSharedMode: eLogFilterMode read mvarFilterAllSharedMode write mvarFilterAllSharedMode;
    property FilterAllSharedFile: String read mvarFilterAllSharedFile write mvarFilterAllSharedFile;
    property FilterAllSharedAppendFile: Boolean read mvarFilterAllSharedAppendFile write mvarFilterAllSharedAppendFile;
    property FilterAllSerial: Boolean read mvarFilterAllSerial write mvarFilterAllSerial;
    property FilterAllSerialMode: eLogFilterMode read mvarFilterAllSerialMode write mvarFilterAllSerialMode;
    property FilterAllSerialFile: String read mvarFilterAllSerialFile write mvarFilterAllSerialFile;
    property FilterAllSerialAppendFile: Boolean read mvarFilterAllSerialAppendFile write mvarFilterAllSerialAppendFile;
    property FilterForAllCards: Boolean read mvarFilterForAllCards write mvarFilterForAllCards;
    property FilterForAllCardsFile: string read mvarFilterForAllCardsFile write mvarFilterForAllCardsFile;
    Property Running: Boolean read mvarRunning write SetRunning;
    property SplitEvery: integer read mvarSplitEvery write mvarSplitEvery;
    Constructor Create;
    Destructor Destroy; override;
    Procedure AddFilter(ID: string;AgainstSerial: Boolean;Filter: String;TargetFile: string);
    Procedure AddIDIndex(ID: WORD;Index: BYTE);
    procedure AddStreamData(P: PBYTEARRAY;Len: integer; SerialPID: Boolean);
    procedure AddTableData(P: PBYTEARRAY;Len: integer; SerialPID: Boolean);
end;

implementation

{
 TSECALogEngine 
}

procedure TSECALogEngine.AddFilter(ID: string; AgainstSerial: Boolean;
  Filter, TargetFile: string);
begin
    if mvarActiveFilters>=999 Then exit;
    inc(mvarActiveFilters);
    mvarFilters[mvarActiveFilters].ID:=ID;
    mvarFilters[mvarActiveFilters].AgainstSerial:=AgainstSerial;
    mvarFilters[mvarActiveFilters].Filter:=Filter;
    mvarFilters[mvarActiveFilters].TargetFile:=TargetFile;
end;

procedure TSECALogEngine.AddIDIndex(ID: WORD; Index: BYTE);
begin
    inc(mvarActiveIDIndex);
    mvarIDIndex[mvarActiveIDIndex].ID:=ID;
    mvarIDIndex[mvarActiveIDIndex].Index:=Index;
end;

procedure TSECALogEngine.AddStreamData(P: PBYTEARRAY; Len: integer;
  SerialPID: Boolean);
begin
    if not mvarRunning Then Exit;
    if SerialPID Then begin
        if mvarFilterAllSerial Then begin
            if mvarFilterAllSerialMode=eLogFilterMode_Stream Then begin
                FileWrite(FileSerial,Pchar(@P[0])^,Len);
                if CheckForSplit(FileSerial) Then begin
                    FileClose(FileSerial);
                    inc(mvarFilterAllSerialFilePart);
                    FileSerial:=OpenSplitFile(mvarFilterAllSerialFile,mvarFilterAllSerialFilePart);
                end;
            end;
        end;
    end else begin
        if mvarFilterAllShared Then begin
            if mvarFilterAllSharedMode=eLogFilterMode_Stream Then begin
                FileWrite(FileShared,pchar(@P[0])^,Len);
                if CheckForSplit(FileShared) Then begin
                    FileClose(FileShared);
                    inc(mvarFilterAllSharedFilePart);
                    FileShared:=OpenSplitFile(mvarFilterAllSharedFile,mvarFilterAllSharedFilePart);
                end;
            end;
        end;
    end;
end;

procedure TSECALogEngine.AddTableData(P: PBYTEARRAY; Len: integer;
  SerialPID: Boolean);
var
    Buf: Array [0..512] of char;
    ID: WORD;
    Index: BYTE;
    j: integer;
    INS: String;
    AlreadySet: Boolean;
    F: Integer;
begin
    if not mvarRunning Then Exit;
    AlreadySet:=false;
    if SerialPID Then begin
        if mvarFilterAllSerial Then begin
            Case mvarFilterAllSerialMode of
                eLogFilterMode_Tables:
                    begin
                        FileWrite(FileSerial,pchar(@P[0])^,Len);
                    end;
                eLogFilterMode_Text:
                    begin
                        if Len<255 Then begin
                            BinToHex(@P[0],@Buf[0],Len);
                            FileWrite(FileSerial,Buf,Len*2);
                            FileWrite(FileSerial,pchar(Chr(13)+chr(10))^,2);
                        end;
                    end;
                eLogFilterMode_TextSECA,eLogFilterMode_TextSECA_WithID:
                    begin
                        if Len<255 Then begin
                            SECA.SetTSData(P,Len);
                            ID:=SECA.GetProviderID;
                            AlreadySet:=true;
                            Index:=GetIndexForID(ID);
                            INS:=SECA.GetStringINS(Index);
                            if mvarFilterAllSerialMode=eLogFilterMode_TextSECA_WithID Then begin
                                INS:=SECA.GetStringSerialRaw+','+INS;
                            end;
                            INS:=INS+chr(13)+chr(10);
                            FileWrite(FileSerial,pchar(INS)^,Length(INS));
                        end;
                    end;
            end;
            if CheckForSplit(FileSerial) Then begin
                FileClose(FileSerial);
                inc(mvarFilterAllSerialFilePart);
                FileSerial:=OpenSplitFile(mvarFilterAllSerialFile,mvarFilterAllSerialFilePart);
            end;
        end;
        //Now test serial filters...
        for j := 0 to mvarActiveFilters do begin
            if mvarFilters[j].AgainstSerial Then begin
                if not AlreadySet Then begin
                    SECA.SetTSData(P,Len);
                    AlreadySet:=True;
                end;
                if SECA.GetStringProviderIDRaw=mvarFilters[j].ID Then begin
                    if (SECA.GetStringSerialRaw=mvarFilters[j].Filter) Then begin;
                        Index:=GetIndexForID(SECA.GetProviderID);
                        INS:=SECA.GetStringINS(Index);
                        INS:=INS+chr(13)+chr(10);
                        AppendBinaryFile(F,mvarFilters[j].TargetFile,mvarFilters[j].Part);
                        FileWrite(F,pchar(INS)^,Length(INS));
                        FileClose(F);
                    end;
                end;
            end;
        end;
        if P[0]=$83 Then begin //Global INS
            if not AlreadySet Then begin
                SECA.SetTSData(P,Len);
//                AlreadySet:=True; avoid HINT message
            end;
            Index:=GetIndexForID(SECA.GetProviderID);
            if Index<>$0F Then begin
                //The provider is in the virtual card...
                INS:=SECA.GetStringINS(Index);
                INS:=INS+chr(13)+chr(10);
                AppendBinaryFile(F,mvarFilterForAllCardsFile,mvarFilterForAllCardsPart);
                FileWrite(F,pchar(INS)^,Length(INS));
                FileClose(F);
            end;
        end;
    end else begin
        if mvarFilterAllShared Then begin
            Case mvarFilterAllSharedMode of
                eLogFilterMode_Tables:
                    begin
                        FileWrite(FileShared,pchar(@P[0])^,Len);
                    end;
                eLogFilterMode_Text:
                    begin
                        if Len<255 Then begin
                            BinToHex(@P[0],@Buf[0],Len);
                            FileWrite(FileShared,Buf,Len*2);
                            FileWrite(FileShared,pchar(Chr(13)+chr(10))^,2);
                        end;
                    end;
                eLogFilterMode_TextSECA,eLogFilterMode_TextSECA_WithID:
                    begin
                        if Len<255 Then begin
                            SECA.SetTSData(P,Len);
                            ID:=SECA.GetProviderID;
                            Index:=GetIndexForID(ID);
                            INS:=SECA.GetStringINS(Index);
                            if mvarFilterAllSerialMode=eLogFilterMode_TextSECA_WithID Then begin
                                INS:=SECA.GetStringPPUARaw+','+INS;
                            end;
                            INS:=INS+chr(13)+chr(10);
                            FileWrite(FileShared,pchar(INS)^,Length(INS));
                        end;
                    end;
            end;
            if CheckForSplit(FileShared) Then begin
                FileClose(FileShared);
                inc(mvarFilterAllSharedFilePart)
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
About.rtf20.49 kB2005-03-15|17:16
changelog.txt4.26 kB2005-03-15|17:16
clean.bat92.00 B2005-01-05|02:35
DVBCore.pas31.98 kB2004-12-17|23:45
frmPPVInfo.dfm15.69 kB2004-12-19|19:54
frmPPVInfo.pas6.17 kB2005-03-03|01:02
01.96 kB
About.bmp3.05 kB2004-12-17|23:52
About.ico2.40 kB2004-12-17|23:52
Add.bmp1.30 kB2004-12-17|23:52
bluenote.ico7.23 kB2004-12-17|23:52
bug.jpg6.04 kB2005-01-05|02:35
CAM.ico2.40 kB2004-12-17|23:52
Close.bmp3.05 kB2004-12-17|23:52
EPG.bmp1.05 kB2005-01-05|21:10
EPG.ico1.37 kB2004-12-17|23:52
EPGOFF.bmp1.62 kB2004-12-17|23:52
EPGON.bmp1.62 kB2004-12-17|23:52
EPG_Gliph.bmp3.43 kB2004-12-17|23:52
Event.ico1.37 kB2004-12-17|23:52
jetons.ico1.37 kB2004-12-17|23:52
leftLogo.bmp9.96 kB2004-12-17|23:52
logger.ico1.68 kB2004-12-17|23:52
MagicWand.bmp1.30 kB2004-12-17|23:52
MagicWand.ico1.37 kB2004-12-17|23:52
MAS.ico1.37 kB2004-12-17|23:52
MENOS.ico1.37 kB2004-12-17|23:52
nemesis.ico4.19 kB2004-12-17|23:52
Phoenix.ico1.72 kB2004-12-17|23:52
Provider.ico1.37 kB2004-12-17|23:52
Remove.bmp1.30 kB2004-12-17|23:52
Reset.bmp3.05 kB2004-12-17|23:52
Restart.bmp1.30 kB2004-12-17|23:52
Save.bmp2.05 kB2004-12-17|23:52
scriptengine.ico7.23 kB2004-12-17|23:52
ScriptsEngine.bmp6.80 kB2004-12-17|23:52
Tools.bmp246.00 B2004-12-17|23:52
tuxprogramming.jpg4.15 kB2005-01-13|19:01
V9Card.jpg11.00 kB2005-03-03|01:02
IFSI_IniFiles.pas10.45 kB2004-12-19|19:54
MpgLib.DLL141.50 kB2004-12-24|17:03
PMCAM0.00 B2005-03-15|17:18
PMCAM4.67 kB2005-01-05|17:24
PMCAM4.69 kB2005-01-05|17:24
PMCAM4.52 kB2005-01-05|17:24
PMCAM.rc3.60 kB2004-12-17|23:47
PMCAM2.dpr6.30 kB2005-03-11|20:15
PMCAM2.res1.70 kB2005-03-15|17:16
PMCAM2StandAlone.dpr1.19 kB2005-03-03|01:02
PMCAM2StandAlone.res4.95 kB2005-03-11|20:15
PMCAMMenu.rc259.00 B2004-12-26|20:10
PMCAMMenu.RES162.25 kB2005-03-15|17:16
rUPClickSplitter.res740.00 B2004-12-19|19:54
santa_rock.jpg5.65 kB2004-12-24|17:59
UBitManager.pas4.18 kB2004-12-17|23:45
uDecode123.pas4.01 kB2004-12-29|01:33
UDVBConditionalAccessSystemNames.pas1.49 kB2004-12-17|23:45
UDVBCoreToMD.pas4.59 kB2004-12-17|23:45
UDVBPIDNames.pas1.23 kB2004-12-17|23:45
UDVBTablesHolder.pas2.68 kB2004-12-28|02:17
UEPGEntry.pas3.29 kB2004-12-17|23:45
UEPGMHW.dfm7.72 kB2005-01-11|02:38
UEPGMHW.pas40.85 kB2005-01-11|02:38
UfrmAddFilter.dfm6.86 kB2004-12-17|23:46
UfrmAddFilter.pas3.68 kB2004-12-17|23:45
UfrmCAM.dfm217.00 kB2005-03-15|03:22
UfrmCAM.pas159.37 kB2005-03-15|17:16
ufrmDLLForm.dfm420.00 B2004-12-19|19:54
ufrmDLLForm.pas1.87 kB2004-12-26|20:10
UfrmEMM.dfm1.28 kB2004-12-17|23:46
UfrmEMM.pas1.47 kB2004-12-17|23:45
UfrmEPGAdvanced.dfm7.01 kB2005-01-05|21:10
UfrmEPGAdvanced.pas2.56 kB2005-01-05|21:10
UfrmMHWEPGEntries.dfm3.81 kB2004-12-17|23:46
UfrmMHWEPGEntries.pas4.33 kB2004-12-17|23:45
ufrmMHWRadio.dfm35.85 kB2005-01-21|18:53
ufrmMHWRadio.pas37.84 kB2005-01-21|18:53
UfrmPMTDetails.dfm2.31 kB2005-01-21|18:53
UfrmPMTDetails.pas2.74 kB2005-01-21|18:53
UfrmWarningOnExit.dfm15.64 kB2005-01-05|21:10
UfrmWarningOnExit.pas1.44 kB2005-01-05|21:10
ULogEngine.pas15.89 kB2005-03-12|17:11
UMDDefs.pas4.07 kB2005-03-03|01:02
UMD_Impl.pas11.26 kB2005-03-03|01:02
United32.pas14.20 kB2004-12-17|23:45
UnitISO639_3.pas10.04 kB2005-03-03|01:02
UnitMDInterface.pas28.92 kB2005-03-15|03:22
UnitTimer.pas1.39 kB2004-12-17|23:45
Unit_CRC32.pas3.62 kB2004-12-17|23:45
uPESToTS.pas6.11 kB2005-03-03|01:02
UScriptFunctions.pas2.97 kB2005-01-03|16:45
UScriptsEditor.dfm58.10 kB2005-01-21|18:53
UScriptsEditor.pas22.02 kB2005-03-03|01:02
USECAManager.pas18.26 kB2005-03-03|01:02
USECATableStore.pas12.92 kB2004-12-17|23:45
USECA_EMM.pas7.74 kB2005-03-12|03:36
USmartCardISO.pas14.45 kB2004-12-17|23:45
UTfrmMultiDec.dfm407.00 B2005-01-21|18:53
UTfrmMultiDec.pas4.38 kB2005-01-21|18:53
UTranslate.pas6.49 kB2004-12-24|17:03
UTS184ToBitFilter.pas36.28 kB2005-03-11|20:15
uUPClickSplitter.dcr488.00 B2004-12-19|19:54
uUPClickSplitter.dcu18.09 kB2005-03-03|01:02
uUPClickSplitter.pas20.43 kB2004-12-26|20:10
PMCAM2_2.50.zip870.87 kB2016-03-19|22:08
...
Sponsored links

ULogEngine.pas (1.30 MB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D