/* * Copyright 2011-2022 Cuberite Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // ProtoProxy.cpp // Implements the main app entrypoint #include "Globals.h" #include "Server.h" #include "../../src/Logger.h" #include "../../src/LoggerListeners.h" int main(int argc, char ** argv) { // Initialize logging subsystem: auto consoleLogListener = MakeConsoleListener(false); auto consoleAttachment = cLogger::GetInstance().AttachListener(std::move(consoleLogListener)); auto fileLogListenerRet = MakeFileListener(); if (!fileLogListenerRet.first) { LOGERROR("Failed to open log file, aborting"); return EXIT_FAILURE; } auto fileAttachment = cLogger::GetInstance().AttachListener(std::move(fileLogListenerRet.second)); cLogger::InitiateMultithreading(); UInt16 ListenPort = 25564; UInt16 ConnectPort = 25565; if (argc > 1) { if (!StringToInteger(argv[1], ListenPort)) { LOGERROR("Invalid argument 1, expected port number, got \"%s\". Aborting.", argv[1]); return 1; } if (argc > 2) { if (!StringToInteger(argv[2], ConnectPort)) { LOGERROR("Invalid argument 2, expected port number, got \"%s\". Aborting.", argv[2]); return 2; } } } cServer Server; int res = Server.Init(ListenPort, ConnectPort); if (res != 0) { LOGERROR("Server initialization failed: %d", res); return res; } Server.Run(); return 0; }