/* Main entry point to the sample application */ int _tmain(int argc, _TCHAR* argv[]) { char *targetFile; char *tempBuffer; int tempBufferLength; char *sourceBuffer; char *buffer; char *delimiter; int delimiterLength; int x; FILE* TargetFile; int TargetFileLength; int SourceFileLength; struct parser_result *pr; HANDLE target,src; FILETIME targetFT,srcFT; DWORD ptid=0; _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); targetFile = (char*)malloc(2+strlen(argv[1])); strcpy(targetFile,argv[1]); targetFile[strlen(argv[1])] = '~'; targetFile[strlen(argv[1])+1] = 0; if(argc==2) { TargetFileLength = ILibReadFileFromDiskEx(&buffer,targetFile); if(TargetFileLength!=0) { ILibWriteStringToDiskEx(argv[1],buffer,TargetFileLength); free(buffer); ILibDeleteFileFromDisk(targetFile); } return; } target = CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); src = CreateFile(argv[2],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); GetFileTime(target,NULL,NULL,&targetFT); GetFileTime(src,NULL,NULL,&srcFT); CloseHandle(target); CloseHandle(src); if(srcFT.dwHighDateTime < targetFT.dwHighDateTime || (srcFT.dwHighDateTime == targetFT.dwHighDateTime && srcFT.dwLowDateTime < targetFT.dwLowDateTime)) { //return; } printf("SourceCodeInjector:\r\n"); printf(" TargetFile: %s\r\n",argv[1]); printf(" SourceFile: %s\r\n",argv[2]); printf(" VariableName: %s\r\n",argv[3]); if(argc==5) { printf(" Delimiter: %s\r\n",argv[4]); } // argv[1] = TargetFile // argv[2] = SourceFile // argv[3] = VariableName if(argc==5) { delimiter = (char*)malloc((int)strlen(argv[4])+1); delimiterLength=sprintf(delimiter,"%s",argv[4]); } else { delimiter = (char*)malloc((int)strlen(argv[3])+20); delimiterLength=sprintf(delimiter,"// -=S3P4R470R=- {%s}",argv[3]); } TargetFileLength = ILibReadFileFromDiskEx(&buffer,targetFile); SourceFileLength = ILibReadFileFromDiskEx(&sourceBuffer,argv[2]); if(TargetFileLength == 0) { TargetFileLength = ILibReadFileFromDiskEx(&buffer,argv[1]); } if(TargetFileLength == NULL || SourceFileLength == 0) { exit(0); } tempBufferLength = ILibBase64Encode(sourceBuffer,SourceFileLength,&tempBuffer); free(sourceBuffer); sourceBuffer = tempBuffer; SourceFileLength = tempBufferLength; pr = ILibParseString(buffer,0,TargetFileLength,delimiter,delimiterLength); TargetFile = fopen(targetFile,"wb"); fwrite(pr->FirstResult->data,sizeof(char),pr->FirstResult->datalength,TargetFile); fwrite(delimiter,sizeof(char),delimiterLength,TargetFile); fwrite("\n",sizeof(char),1,TargetFile); //fwrite("private static byte[] ",sizeof(char),22,TargetFile); //fwrite(argv[3],sizeof(char),strlen(argv[3]),TargetFile); //fwrite(" = {",sizeof(char),4,TargetFile); fwrite("private static string ",sizeof(char),22,TargetFile); fwrite(argv[3],sizeof(char),strlen(argv[3]),TargetFile); fwrite(" = \"",sizeof(char),4,TargetFile); for(x=0;x<SourceFileLength;++x) { if(argv[3] != '-') { if(sourceBuffer[x] == '"') { fwrite("\\\"",sizeof(char),2,TargetFile); } else if(sourceBuffer[x] == '\\') { fwrite("\\\\",sizeof(char),2,TargetFile); } else if(sourceBuffer[x] == '\r') { fwrite("\\r",sizeof(char),2,TargetFile); } else if(sourceBuffer[x] == '\n') { fwrite("\\n",sizeof(char),2,TargetFile); } else { fwrite(&sourceBuffer[x],sizeof(char),1,TargetFile); } if(x!=0 && x%100==0) { fwrite("\"\n",sizeof(char),2,TargetFile); //if(x!=SourceFileLength-1) //{ fwrite("+\"",sizeof(char),2,TargetFile); //} } } else { fwrite(&sourceBuffer[x],sizeof(char),1,TargetFile); } } if(argv[3]!='-') { fwrite("\";\n",sizeof(char),3,TargetFile); } fwrite(delimiter,sizeof(char),delimiterLength,TargetFile); fwrite(pr->LastResult->data,sizeof(char),pr->LastResult->datalength,TargetFile); fflush(TargetFile); fclose(TargetFile); ILibDestructParserResults(pr); free(sourceBuffer); free(buffer); free(delimiter); free(targetFile); return 0; }
int main(int argc, char **argv) #endif { /* This is to test TLS and TLS Detect struct util_cert selfcert; struct util_cert selftlscert; SSL_CTX* ctx; */ #if defined(WIN32) _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); SetConsoleCtrlHandler((PHANDLER_ROUTINE)CtrlHandler, TRUE); // Set SIGNAL on windows to listen for Ctrl-C #elif defined(_POSIX) signal(SIGPIPE, SIG_IGN); // Set a SIGNAL on Linux to listen for Ctrl-C // Shutdown on Ctrl + C signal(SIGINT, BreakSink); { struct sigaction act; act.sa_handler = SIG_IGN; sigemptyset(&act.sa_mask); act.sa_flags = 0; sigaction(SIGPIPE, &act, NULL); } #endif #if defined(WIN32) if (argc>1 && _tcscmp(argv[1], L"STUN")==0) #else if (argc>1 && strcmp(argv[1],"STUN")==0) #endif { useStun = 1; printf("USING STUN!\r\n"); } chain = ILibCreateChain(); // Create the MicrostackChain, to which we'll attach the WebRTC ConnectionFactory mConnectionFactory = ILibWrapper_WebRTC_ConnectionFactory_CreateConnectionFactory(chain, 0); // Create the connection factory, and bind to port "0", to use a random port mServer = SimpleRendezvousServer_Create(chain, 5350, &Rendezvous_OnGet, &Rendezvous_OnPost); // Create our simple Rendezvous/HTTP server we'll use to exchange SDP offers, and bind to port 5350 htmlBodyLength = ILibReadFileFromDiskEx(&htmlBody, "webrtcsample.html"); // This will be the HTML file served if you hit /ACTIVE passiveHtmlBodyLength = ILibReadFileFromDiskEx(&passiveHtmlBody, "webrtcpassivesample.html"); // This will be the HTML file served if you hit /PASSIVE wshtmlBodyLength = ILibReadFileFromDiskEx(&wshtmlbody, "websocketsample.html"); printf("Microstack WebRTC Sample Application started.\r\n\r\n"); // We're actually listening on all interfaces, not just 127.0.0.1 printf("Browser-initiated connection: http://127.0.0.1:5350/active\r\n"); // This will cause the browser to initiate a WebRTC Connection printf("Application-initiated connection: http://127.0.0.1:5350/passive\r\n"); // This will initiate a WebRTC Connection to the browser printf("Web-Socket initiated connection: http://127.0.0.1:5350/websocket\r\n"); // This will cause the browser to initiate a websocket connection to exchange WebRTC offers. printf("\r\n"); #if defined(_REMOTELOGGING) && defined(_REMOTELOGGINGSERVER) printf("Debug logging listening url: http://127.0.0.1:%u\r\n", ILibStartDefaultLogger(chain, 7775)); #endif printf("\r\n(Press Ctrl-C to exit)\r\n"); /* This is to test TLS and TLS Detect // Init Certs util_mkCert(NULL, &selfcert, 2048, 10000, "localhost", CERTIFICATE_ROOT, NULL); util_mkCert(&selfcert, &selftlscert, 2048, 10000, "10.0.0.240", CERTIFICATE_TLS_SERVER, NULL); // Init TLS ctx = SSL_CTX_new(TLSv1_method()); SSL_CTX_use_certificate(ctx, selftlscert.x509); SSL_CTX_use_PrivateKey(ctx, selftlscert.pkey); SimpleRendezvousServer_SetSSL(mServer, ctx); */ ; ILibSpawnNormalThread(&Run, NULL); // Spawn a thread to listen for user input ILibStartChain(chain); // This will start the Microstack Chain... It will block until ILibStopChain is called /* This is to test TLS and TLS Detect SSL_CTX_free(ctx); util_freecert(&selfcert); util_freecert(&selftlscert); */ // This won't execute until the Chain was stopped free(htmlBody); free(passiveHtmlBody); free(wshtmlbody); printf("Application exited gracefully.\r\n"); #if defined(WIN32) _CrtDumpMemoryLeaks(); #endif return(0); }