From b47c7dc9b8e9a4f8569b4af3a4f3ad8273c7d716 Mon Sep 17 00:00:00 2001 From: iherman- <200969603+iherman-p@users.noreply.github.com> Date: Wed, 6 May 2026 18:07:17 +0200 Subject: [PATCH] Made a basic arg parser and shell implementation of the Server class --- Makefile | 10 ++------- Server/Server.cpp | 38 +++++++++++++++++++++++++++++++++ Server/Server.hpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++ ircserv | Bin 0 -> 23376 bytes main.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 Server/Server.cpp create mode 100644 Server/Server.hpp create mode 100755 ircserv create mode 100644 main.cpp diff --git a/Makefile b/Makefile index 63c26cd..f683f14 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,8 @@ NAME = ircserv -SRC = main.cpp Server/Server.cpp Client/Client.cpp \ - Channel/Channel.cpp \ - commands/pass.cpp commands/nick.cpp commands/user.cpp \ - commands/join.cpp commands/privmsg.cpp \ - commands/part.cpp +SRC = main.cpp Server/Server.cpp -HEADERS = Client/Client.hpp \ - Server/Server.hpp \ - Channel/Channel.hpp +HEADERS = Server/Server.hpp OBJ = $(SRC:.cpp=.o) diff --git a/Server/Server.cpp b/Server/Server.cpp new file mode 100644 index 0000000..153fea7 --- /dev/null +++ b/Server/Server.cpp @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Server.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: iherman- +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +// C++ lib functions +#include + +# include +# include + +class Server +{ + private: + + public: + Server(); + Server(int port, const std::string& password); + ~Server(); + + Server &operator=(const Server& other); +}; + +#endif // SERVER_HPP \ No newline at end of file diff --git a/ircserv b/ircserv new file mode 100755 index 0000000000000000000000000000000000000000..063bd456bb452a4e7d4a941be27ae5efd24d321f GIT binary patch literal 23376 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 port)) + throw std::runtime_error("Invalid port"); + + if (input.peek() != EOF) + throw std::runtime_error("Malformed port"); + + return port; +} + +int main(int argc, char *argv[]) +{ + if (argc != 3) + { + std::cerr << "Usage: ./ircserv " << std::endl; + return 1; + } + + try + { + int port = get_port(argv[1]); + Server server(port, argv[2]); + } + catch (std::exception& e) + { + std::cerr << e.what() << std::endl; + return 1; + } + + // run server +} \ No newline at end of file -- 2.49.1