куча херни
This commit is contained in:
@@ -132,6 +132,38 @@ void AOnejsky4UGameModeBase::GetExcelData(FString Command)
|
||||
book->release();*/
|
||||
}
|
||||
|
||||
void AOnejsky4UGameModeBase::createProc(FString FullPathOfProgramToRun, TArray<FString> CommandlineArgs, bool Detach, bool Hidden, int32 Priority, FString OptionalWorkingDirectory)
|
||||
{ //Please note ProcessId should really be uint32 but that is not supported by BP yet
|
||||
|
||||
FString Args = "";
|
||||
if (CommandlineArgs.Num() > 1)
|
||||
{
|
||||
Args = CommandlineArgs[0];
|
||||
for (int32 v = 1; v < CommandlineArgs.Num(); v++)
|
||||
{
|
||||
Args += " " + CommandlineArgs[v];
|
||||
}
|
||||
}
|
||||
else if (CommandlineArgs.Num() > 0)
|
||||
{
|
||||
Args = CommandlineArgs[0];
|
||||
}
|
||||
UE_LOG(LogTemp, Warning, TEXT("%s"), *Args)
|
||||
|
||||
//uint32 NeedBPUINT32 = 0;
|
||||
FPlatformProcess::CreateProc(
|
||||
*FullPathOfProgramToRun,
|
||||
*Args,
|
||||
Detach,//* @param bLaunchDetached if true, the new process will have its own window
|
||||
false,//* @param bLaunchHidded if true, the new process will be minimized in the task bar
|
||||
Hidden,//* @param bLaunchReallyHidden if true, the new process will not have a window or be in the task bar
|
||||
0,
|
||||
Priority,
|
||||
(OptionalWorkingDirectory != "") ? *OptionalWorkingDirectory : nullptr,//const TCHAR* OptionalWorkingDirectory,
|
||||
nullptr
|
||||
);
|
||||
}
|
||||
|
||||
bool AOnejsky4UGameModeBase::logFileExists(FString FileName)
|
||||
{
|
||||
//FString FilePath = FPlatformProcess::UserDir() + FileName;;
|
||||
@@ -144,3 +176,4 @@ FString AOnejsky4UGameModeBase::readFile(FString FileName) {
|
||||
FFileHelper::LoadFileToString(str,*FileName);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,10 @@ class ONEJSKY4U_API AOnejsky4UGameModeBase : public AGameModeBase
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "System")
|
||||
static void GetExcelData(FString Command);
|
||||
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "System")
|
||||
static void createProc(FString FullPathOfProgramToRun, TArray<FString> CommandlineArgs, bool Detach, bool Hidden, int32 Priority, FString OptionalWorkingDirectory);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "File")
|
||||
static bool logFileExists(FString FileName);
|
||||
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "mailer.h"
|
||||
/*
|
||||
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <windows.h>
|
||||
#include <winsock2.h>
|
||||
|
||||
#pragma comment(lib, "ws2_32.lib")
|
||||
using namespace std;
|
||||
// Insist on at least Winsock v1.1
|
||||
const VERSION_MAJOR = 1;
|
||||
const VERSION_MINOR = 1;
|
||||
|
||||
#define CRLF "\r\n" // carriage-return/line feed pair
|
||||
|
||||
void ShowUsage()
|
||||
{
|
||||
//cout << "Usage: SENDMAIL mailserv to_addr from_addr messagefile" << endl
|
||||
// << "Example: SENDMAIL smtp.myisp.com rcvr@elsewhere.com my_id@mydomain.com message.txt" << endl;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Basic error checking for send() and recv() functions
|
||||
void Check(int iStatus, char *szFunction)
|
||||
{
|
||||
if ((iStatus != SOCKET_ERROR) && (iStatus))
|
||||
return;
|
||||
|
||||
//cerr << "Error during call to " << szFunction << ": " << iStatus << " - " << GetLastError() << endl;
|
||||
UE_LOG(LogTemp, Error, TEXT("Error during call to %s %d %s"), *FString(szFunction),iStatus, GetLastError());
|
||||
return;
|
||||
}
|
||||
|
||||
mailer::mailer(int argc, char argv[]) {
|
||||
sendMail(argc, argv);
|
||||
}
|
||||
|
||||
int mailer::sendMail(int argc, char argv[])
|
||||
{
|
||||
int iProtocolPort = 0;
|
||||
char szSmtpServerName[64] = "";
|
||||
char szToAddr[64] = "";
|
||||
char szFromAddr[64] = "";
|
||||
char szBuffer[4096] = "";
|
||||
char szLine[255] = "";
|
||||
char szMsgLine[255] = "";
|
||||
SOCKET hServer;
|
||||
WSADATA WSData;
|
||||
LPHOSTENT lpHostEntry;
|
||||
LPSERVENT lpServEntry;
|
||||
SOCKADDR_IN SockAddr;
|
||||
|
||||
// Check for four command-line args
|
||||
if (argc != 5)
|
||||
ShowUsage();
|
||||
|
||||
// Load command-line args
|
||||
lstrcpy(szSmtpServerName, argv[1]);
|
||||
lstrcpy(szToAddr, argv[2]);
|
||||
lstrcpy(szFromAddr, argv[3]);
|
||||
|
||||
// Create input stream for reading email message file
|
||||
ifstream MsgFile(argv[4]);
|
||||
|
||||
// Attempt to intialize WinSock (1.1 or later)
|
||||
if (WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData))
|
||||
{
|
||||
//cout << "Cannot find Winsock v" << VERSION_MAJOR << "." << VERSION_MINOR << " or later!" << endl;
|
||||
UE_LOG(LogTemp, Error, TEXT("Cannot find Winsock"));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Lookup email server's IP address.
|
||||
lpHostEntry = gethostbyname(szSmtpServerName);
|
||||
if (!lpHostEntry)
|
||||
{
|
||||
//cout << "Cannot find SMTP mail server " << szSmtpServerName << endl;
|
||||
UE_LOG(LogTemp, Error, TEXT("Cannot find SMTP mail server %s"),FString(szSmtpServerName));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create a TCP/IP socket, no specific protocol
|
||||
hServer = socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (hServer == INVALID_SOCKET)
|
||||
{
|
||||
//cout << "Cannot open mail server socket" << endl;
|
||||
UE_LOG(LogTemp, Error, TEXT("Cannot open mail server socket"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Get the mail service port
|
||||
lpServEntry = getservbyname("mail", 0);
|
||||
|
||||
// Use the SMTP default port if no other port is specified
|
||||
if (!lpServEntry)
|
||||
iProtocolPort = htons(IPPORT_SMTP);
|
||||
else
|
||||
iProtocolPort = lpServEntry->s_port;
|
||||
|
||||
// Setup a Socket Address structure
|
||||
SockAddr.sin_family = AF_INET;
|
||||
SockAddr.sin_port = iProtocolPort;
|
||||
SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
|
||||
|
||||
// Connect the Socket
|
||||
if (connect(hServer, (PSOCKADDR)&SockAddr, sizeof(SockAddr)))
|
||||
{
|
||||
//cout << "Error connecting to Server socket" << endl;
|
||||
UE_LOG(LogTemp, Error, TEXT("Error connecting to Server socket"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Receive initial response from SMTP server
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");
|
||||
|
||||
// Send HELO server.com
|
||||
sprintf(szMsgLine, "HELO %s%s", szSmtpServerName, CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() HELO");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() HELO");
|
||||
|
||||
// Send MAIL FROM: <sender@mydomain.com>
|
||||
sprintf(szMsgLine, "MAIL FROM:<%s>%s", szFromAddr, CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() MAIL FROM");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() MAIL FROM");
|
||||
|
||||
// Send RCPT TO: <receiver@domain.com>
|
||||
sprintf(szMsgLine, "RCPT TO:<%s>%s", szToAddr, CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() RCPT TO");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() RCPT TO");
|
||||
|
||||
// Send DATA
|
||||
sprintf(szMsgLine, "DATA%s", CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() DATA");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() DATA");
|
||||
|
||||
// Send all lines of message body (using supplied text file)
|
||||
MsgFile.getline(szLine, sizeof(szLine)); // Get first line
|
||||
|
||||
do // for each line of message text...
|
||||
{
|
||||
sprintf(szMsgLine, "%s%s", szLine, CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() message-line");
|
||||
MsgFile.getline(szLine, sizeof(szLine)); // get next line.
|
||||
} while (MsgFile.good());
|
||||
|
||||
// Send blank line and a period
|
||||
sprintf(szMsgLine, "%s.%s", CRLF, CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() end-message");
|
||||
|
||||
// Send QUIT
|
||||
sprintf(szMsgLine, "QUIT%s", CRLF);
|
||||
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() QUIT");
|
||||
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() QUIT");
|
||||
|
||||
// Report message has been sent
|
||||
//cout << "Sent " << argv[4] << " as email message to " << szToAddr << endl;
|
||||
UE_LOG(LogTemp, Warning, TEXT("Sent %s as email message to %s"), *FString(argv[4]), *FString(szToAddr));
|
||||
// Close server socket and prepare to exit.
|
||||
closesocket(hServer);
|
||||
WSACleanup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
mailer::mailer(int argc, char argv[]) {
|
||||
|
||||
}
|
||||
|
||||
mailer::~mailer()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class ONEJSKY4U_API mailer
|
||||
{
|
||||
public:
|
||||
mailer(int argc, char argv[]);
|
||||
~mailer();
|
||||
protected:
|
||||
//int sendMail(int argc, char argv[]);
|
||||
};
|
||||
Reference in New Issue
Block a user