From 66075b05a02cb67ea58695e792c192ca2d9e50ff Mon Sep 17 00:00:00 2001 From: Namonay Date: Wed, 29 Nov 2023 16:44:03 +0100 Subject: [PATCH] initial commit --- Makefile | 55 +++++++++++++++++++++++++++++++++++++++++++ includes/irc.hpp | 6 ++++- ircserv | Bin 0 -> 17208 bytes objs/srcs/main.o | Bin 0 -> 6056 bytes srcs/main.cpp | 59 +++++++++++++++++++++++++++++++++++++++++------ 5 files changed, 112 insertions(+), 8 deletions(-) create mode 100644 Makefile create mode 100755 ircserv create mode 100644 objs/srcs/main.o diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2ee54cf --- /dev/null +++ b/Makefile @@ -0,0 +1,55 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: vvaas +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/08/09 15:08:49 by vvaas #+# #+# # +# Updated: 2023/11/29 16:17:31 by vvaas ### ########.fr # +# # +# **************************************************************************** # + +NAME = ircserv + +SRCS = srcs/main.cpp \ + +OBJ_DIR = objs +OBJS = $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o)) + +CC = c++ +CFLAGS = -std=c++98 -Wall -Wextra -Werror + +DEBUG ?= false +MODE = "release" + +ifeq ($(DEBUG), true) + CFLAGS += -g -D DEBUG + MODE = "debug" +endif + +RM = rm -rf + +$(OBJ_DIR)/%.o: %.cpp + @echo "\e[1;32m[compiling "$(MODE)" {"$(CC)"}...]\e[1;00m "$< + @$(CC) $(CFLAGS) $(COPTS) -c $< -o $@ + +all: $(NAME) + +$(NAME): $(OBJ_DIR) $(OBJS) + @echo "\e[1;32m[linking "$(MODE)" {"$(CC)"}...]\e[1;00m "$@ + @$(CC) -o $(NAME) $(OBJS) + @echo "\e[1;32m[build finished]\e[1;00m" + +$(OBJ_DIR): + @mkdir -p $(sort $(addprefix $(OBJ_DIR)/, $(dir $(SRCS)))) + +clean: + @$(RM) $(OBJ_DIR) + +fclean: clean + @$(RM) $(NAME) + +re: fclean all + +.PHONY: all clean fclean re diff --git a/includes/irc.hpp b/includes/irc.hpp index 8b04bc6..6f26063 100644 --- a/includes/irc.hpp +++ b/includes/irc.hpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/29 13:24:01 by vvaas #+# #+# */ -/* Updated: 2023/11/29 13:45:51 by vvaas ### ########.fr */ +/* Updated: 2023/11/29 16:32:34 by vvaas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,4 +17,8 @@ # include # include # include +# include +# include +# include + #endif diff --git a/ircserv b/ircserv new file mode 100755 index 0000000000000000000000000000000000000000..cb9af2eacc703a3eff4e1187b4488abd33606086 GIT binary patch literal 17208 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 VRZ^VGEN;K&My0XZW8h)MKLL+K(}4g0 literal 0 HcmV?d00001 diff --git a/objs/srcs/main.o b/objs/srcs/main.o new file mode 100644 index 0000000000000000000000000000000000000000..1ddf1b6739bfee172608c57018f9efe8b5ce97b6 GIT binary patch literal 6056 zcmcgwU2Ggz6~4Pp^V23-H~mYRs2-3IDl{8!n}XX$VMADFOx@J-#9=e_} zGqa8ZtXko;Vzn}uABiCG0KBvXA@Wd^DoAOO14am;DiR_>Ncg2{f}&yyh<%6%=eu+7 z`efLRDv)}lnYs5n-}%nDckaFG@w27j!E7cYv}MFWvEI|D5HH=a-Y&{!QS=gX%xt`A zE?n(38}&7Fp}r<^&u=5Qxl(F@b!8tq&HCD9^cGr~+~O_Nki9mXJKK^#?(FMkqtr5+ zbS+%y9beA%X?=tATV|uSW;VtygD|-wvLsw;trRyvn#3+kk;%p{q`zTiU(1r?JVsNv zD1Fkk*4RvhwS@tZTkJ>VYjl%lp4Y9UzQ#%lN#J+SN1o<@*{rqB^^&v@#Q789`L^CUDaBRv8y+k;L>XDZ2g^NTATIN#;>|e{7ocQnzgIlqGU;v z`CQ*A`C@Z@MZKOzR!Y}^sa3U5Z}sF(nFQP{Q))Gs|Fu3|#ag4KJ2JkES8p~)Hk*s} zOXi|3v01uAEBx2wT&3q5O`4o$ow~I*sKk{RdaFd6$xX>{7*~u%8##K zzfOY8z1@P8RjvTx$1{n0>(zjn#HqYMAVF8mW+_%8SzUe{C?{+=%SVHf;o zU3C801z#f^@Ar(VN$vr{u65zR+y%d%a2QtTF1oJKkqY}LKr-Ms12kTwHZ09I6IkNA zsjc~o498y4IO>5xr;jd;UjRr((pGQ)dr69McW@#13GunrFB*n4nF&nQCv|t z_*?1H{I?m-$NLY3LkDX~+rL#q*Ml*`HUS_@*VC(TJa|337@ya(m*MwPjIQ$l)8X?o z$Z*Wh!*s!(WIB9)o@RVrkIneJo=JxD`KdA;K0k8|M?FVnH9|bgba*{qWqe-GHyEGS z^8<$Cw?fa)8K%SM=N!XPPo(NuW;(o{-!eY0=l6`y>-i(Y`TVRh9X>yQVL0mfnyTmT zOo!KVjq!Osx2XM}Ue6y;IKp_|eGEt5pQyY8Oo!(!G5kK_>Ukbv_;!YWn(6a8Cm5g4 z+ce|zIzxt|PW&FgzQlBRoi8vPAAY*duQMH9&uPZz^;~3pzJC71aMW`V#gM(pba*{) zGd|DzFUIG2MNguK_XT}@?rc$b`aHRx;kOcBk9UaSTNr+v;X4@~C>(kDcuz7M_3TvZ z?<-7)kGIMAe7xUgd_LaqGMw)h{TCF{@xN+v)Q4dn(AMKc4KVQe-v#(hfu(iy?;Y@a zBqO;!sM^rKn=Y-dV5x)JiV85)6R%U(45)}38F2iELECZF(75hDm%{bm7~fCf`gi^U z!+AX$?!Il;ox5-CyKCzm_wL!U{l0BGvpx6RzC+|gw`%7---|6f4DFM``b;@~BzD6Y z&$nZDj`~N-@qiaZ)`T6o`-h16i9)F(ei(Qn7`yYal-lnEwOH8nSv4Dryc5je3q@F# zGjCg@Kkp^9;Q`C?0+b%~a=bw`Dt%tq zao|z6(0?NIVwcL83Lcy7)DTzbdi=!c@R2n7hA$l{O zV+B!6-?1}8&M~W0e%Km$+z~V%VQf#(^W+Skc)9yss$ zCcr;R7xsAC=5bh(Eh%A~F(?IR9}H(E>^F3E%D<-aJ}z17w{-qrlB-kx&5F3BLXjW5 zbpA66OAS*zrbN^8mF_=Ag94_{J8DYP@gGhF=&pWZdhmOn&OfaVJ6&(0x?aETL#NaD zPpk3kdB*smrS&xK69$cby131%{2$~XwRPS4nWctqbLw~aVa*(A?q`$u+0-%>r&ata zi$zn{ui;Noe5diBQR81yM2sK5mpWdL-=z4S;p+jpo};U6MYVtQZyMrZ>H6OyAYD6n Q^Lj(67mGM-iFE$|00(de{r~^~ literal 0 HcmV?d00001 diff --git a/srcs/main.cpp b/srcs/main.cpp index 639780a..6e890bb 100644 --- a/srcs/main.cpp +++ b/srcs/main.cpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/24 10:40:01 by maldavid #+# #+# */ -/* Updated: 2023/11/29 14:03:14 by vvaas ### ########.fr */ +/* Updated: 2023/11/29 16:43:45 by vvaas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,19 +16,64 @@ unsigned long get_port(char *port) { if (!port) return (0); - return (std::atoi(port)); + if (std::atoi(port) < 1) + std::terminate(); + return (htons(std::atoi(port))); +} + +void init_socket(sockaddr_in &s_data, int &s_socket, char *port) +{ + s_data.sin_family = AF_INET; + s_data.sin_addr.s_addr = INADDR_ANY; + s_data.sin_port = get_port(port); + s_socket = socket(PF_INET, SOCK_STREAM, 0); + if (s_socket < 0) + { + std::cerr << "Fatal Error : socket error" << std::endl; + std::terminate(); + } + std::cout << "Socket creating succesful" << std::endl; + if (bind(s_socket, (struct sockaddr *)&s_data, sizeof(sockaddr)) != 0) + { + std::cerr << "Fatal Error : bind error" << std::endl; + std::terminate(); + } + std::cout << "bind succesful, starting listen loop" << std::endl; + if (listen(s_socket, 20) != 0) + { + std::cerr << "Fatal Error : listen error" << std::endl; + std::terminate(); + } + std::cout << "listen queue created succesful" << std::endl; +} + +void write_info(sockaddr_in s_data, int s_socket) +{ + std::cout << "My port is : " << ntohl(s_data.sin_port) << std::endl; + std::cout << "I created a socket, n`" << s_socket << std::endl; } int main(int argc, char** argv) { int s_socket; struct sockaddr_in s_data; - s_data.sin_family = AF_INET; - s_data.sin_addr.s_addr = INADDR_ANY; - s_data.sin_port = get_port(argv[1]); if (argc != 3) + { + std::cerr << "Fatal Error : invalid arguments :" << std::endl << "USAGE : ./ircserv "; return (1); - (void)argv; - + } + init_socket(s_data, s_socket, argv[1]); + write_info(s_data, s_socket); + while (1) + { + struct sockaddr_in c_addr; + socklen_t length = sizeof(c_addr); + if (accept(s_socket, (sockaddr *)&c_addr, &length) < 0) + { + std::cerr << "Connection error ?" << std::endl; + std::terminate(); + } + } + close(s_socket); return 0; }