From a9cd5e1802bc1d9a99d39eee7f3bf2e6686ab1ba Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Sat, 6 Jan 2018 19:29:07 +0100 Subject: [PATCH] STOR command preliminary implementation ok --- build/Debug/GNU-Linux/ftpCommandElaborate.o | Bin 36056 -> 36400 bytes build/Debug/GNU-Linux/ftpServer.o | Bin 58640 -> 59360 bytes dist/Debug/GNU-Linux/uftp | Bin 102184 -> 102264 bytes ftpCommandElaborate.c | 8 +++-- ftpServer.c | 33 +++++++++++--------- nbproject/private/private.xml | 6 +++- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/build/Debug/GNU-Linux/ftpCommandElaborate.o b/build/Debug/GNU-Linux/ftpCommandElaborate.o index c703aa28a8facb28dbfe1bd8e1bda649c53731e5..b07e031d2924f207224009a909e71da2343005da 100644 GIT binary patch delta 4274 zcmZ`+eQZ-z6uxthBl6Vg z*azsEg9H#G8ls4iY!qc0WB5Y}K|z*)ED?|yBNB~KOhk#Ix$mA!4>f(s-ro70uirWM z-t%6Ewu!zSqW5O;YiEDK=``1--mM~=E7Sj^+A5M_~YYxuU{id7ADPqely&W|i9YznumtqQk>3tJzno87Rg zZejTGy8Bk&+q!y}7)IP>?Y}o^wrg$xnjXI)R+q9EM%wmi=qMH-s-ZmX&qS$5Y`%w0wyc^{_ zlm}4G7mG)$cn49QB({xE@?k9t?uW^NEWriL33v*)nB%f5n9#tu!=|FsjzIFuko-3g z4S20@xH5M{cU#)(4AECGDTRsZ=Hb~q1X$mqFi7?nE=quf-*2>Obgq34j& z;Wlpr<1ZkeSVE9#fL`l&CuK_`I%Vz9ezjp>`YOaAsRD8ai%EC z5M`MU#bS5mrN)NlMtEAOI$M=v(>lb=F(VxTXKcZ|pPlJ8${72MGnURcD@liW_k7Jy zfj2ZcC(GUf?CL7F2yIm3gT_!HKM&hNlf{#{a3nNa)Ocg*i(XC%oJi9g1!HUkW9%;V zz!*D=xMGpc82kHQedWU7Bhu<}Yb&LlM6|yX+)wZV6@oF_{$_%&B)CdwvUCyrR)W8- z@pL;7RUCo963H*Ad-W$7@nnjR33?Q9Q)(-gdWzVq_{M%1qDy3UWu}g1ygIeWs=>Qd zW^YQOeN}1sE*M@a`62uHr2TwJJzM$X;|ysPv=!UBo!Ha19)ve*CI3O)r~gfCD4$U> zo@)xp)kN?B{Ig6#>ax`Ai-;Nq?;(TBz?VtOb$vV*&EY4wD&N#|E5YgZsY2Xj*^gNk z5_?)_y~eGp4yVzfDT%|21gE=VYZCk|g5O38=qGqFONm!D2#dnf8j~IG2R(CMg43SQ zv0tM4?9zVdH!{0go)ahea$-;Wu}b5Xz4<8Lmxx0VsRIx<4L8gBS`zy`1TP_Rju1SP z_TxurUM{UmM6F(}W*?;CG*vTBZBv8KMcmLDk9FTo@G@e*oW!Ba+M@CQ&$4cau8{l< z@J1y6+`gZL@CwP#z@muc7i{en^&FNH^imos*+|8Uc;fIbBluK8ab7~4GK^CL&2`dR zO1$U+Y9Tls8tnHE z7^3x(SK0T)Fjyyf6NKv}-=gk;w~3c}0h;-~7je}?THVJgLiJZkv_B?9Gb?hD*waIC z1p@Wba@$`@@uRd3E6PS(aiH`4c7oH6%_2D6Y7ZpAS8H6q59l7>LLBHU_yK;am;6t4 z52vV4I-Co1TNEV0BLtsLHXjh27WqE(KPs~aP-_<341t5T_DkYRIeZVpk4ozT(bCCv zB_XDn`f!`YB@-&}b8N=`_#>_!HanRjDaGIrx;B)~ReX+*IPt!z=4+@@Ht3Hn3 zdS)b7-^zQ|E#>FI_3S$?^L1ST(e)CJKiee6On@2dXY*6gwf+@Rk{-*kO0Tm@)Iu@F zcH&PhMOpow!ng9l1l)u@mw=zgsc1W63>D`|JenRQ5WGgOeFm#aRQO`wb!4gE*l>A6 z>F9y`wVx*orgfI`6VTjQ&QCypXSr(#yYmP9)mbKv`Jt#QD27(Tny#RjJQenJ1zj_y zY40geIX?qZyYs}{4k+ply4Ij#7@qDf6Hj%(zV4v7w;V2Z2VHxrwNsw$w4f(X9IJ-F v{45B~cf!V=JaN1l_VolsZwFlL35qETplD-I?5=?|8-uP29LRk-V`u7r=Z01J delta 4023 zcmZ`+eN2^A7(eG+q%L6Nf^xik-jAll{JQrl2<26T6wn&i>B>|B5fq#)Vo7Vr>&36Q zfN^`&sdJ>wr7K6!b?FxKt5(j{l+6z;OYje^)tb827R%Aj`<^2Y@4WBEd(ZQGKF{wt z=e&pB!))*%>&j*acK7AnPK2%TsZfwK4bH|}VZW_D@>WuC+w&jaE;qg+%tw z`ECLma)D=A3cVI-ESP4o7ACX$Wadj=9XUDw`Gm-o(i)oBDhMfjE^!wtniy-@YKast z{WB&>M+qU{QbLjlB|#f3D!)P9U=PenU8gT|@}#?s%rNS9!Meaq>Vt4#7Q2uM7Xyn~ zw<8j_d{4anR-#c`3?W1e{~I-)A{buFOHbRLuDy=%>B#H%D0m7qRB&3Pzn_Jp72Ix5 zHX<`Z$OJ;jOJYC>al=3b*JenqsA>j^-)Zvtz;Gh_ko`<#e=Capa1{Fo2A-oQo`eD= z34stD#|fNJ^(HSZilS{mIHsvR3VujL^YkOFs7JNrK@@yccu^+=D!G<7d92P^$agiu zXCwR^!o_w~xo%5bwWm_H=N__8LiPzMdS19+X`@~kuH>`?Y*n1DfM6xp`VFnl9?mkG zk5%hM(fkru*~LN@&*CWdD-kY8QnP3@a7|AvDp!j4kb_vV3h$D*O57|HA42wc+FzRN zk4gLfarS&H!BwP~4zE;k4X=y8kQOid#|RgvzA86k${2rwVui0lINsEo5iVDOrf+x9 zKbuB_FdxSxuK4&t&aVgAV?NFx98X{X;keOvQkNJrPzhA0??-X?2jO$kj8mYmn%n2d z15g|rxZOoCT+OvLNQ>FpD{)oBFLIIx5uS%~^`JPod*`CyHw+w3SKI7=ARD~5ZE$ow zw>$N3H+fQtI^JG@f%Tlug@*N@N7WL52 z^o-|3M*9_$WrF-*-_*5_P<+h11)Q~s=6go}VVG4vda{Fwg#dOStKpof0q*gUR zozW|h7hd{xCVO>8H%7775RMPq0|su~4R8lWObHrfZ(|@>$L&eZ@h4o1)TTmVJufYg zTCrXhBBoa&yb$5hT>>0#ux2zh;u@FIkNV~Vy+;ldPb-SRod5gHUjx@(oafxLu z71Re+EyvlqG>FsouvO`BNLx(ZFsyyZg0{#z+j5_=2jzwIi2R2~R3-l0aA7yMs|)jx zN$Z1$ySev*+*uCcApOL!TlTxyjJqNQAEeNULvk+q0}Y{Mc)M*%-1!v-aDFm;)RxN} zZt)KQ47Fvep(B)Sb+`?qvk(a7v0tY`DCB3`>fv(8&lcoCT)Uqw&xf*hKYOqPLhXKQ zYrf$y2m|eT%&`;VI{fSnKa_R&Szif+I{fTwg(P82JDI diff --git a/build/Debug/GNU-Linux/ftpServer.o b/build/Debug/GNU-Linux/ftpServer.o index a41a1f9aafe3da23ba9ace1be7f4f8eb26720a4f..96cdac4672e14273f9f6b9c6ab938e142acfeed4 100644 GIT binary patch literal 59360 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 literal 58640 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 diff --git a/dist/Debug/GNU-Linux/uftp b/dist/Debug/GNU-Linux/uftp index 8abb718f224acf23e44c5fa28b4d503f1f95559c..ba112689d3a90f80c50de23d4cf049f7f223407b 100755 GIT binary patch delta 30200 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 delta 30060 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 SEcAr0Bi%@pXXrYT_clients[socketId].pasvData.theFileNameToStor[data->clients[socketId].pasvData.theFileNameToStorIndex++] = data->clients[socketId].theCommandReceived[i]; } } + + printf("data->clients[%d].pasvData.theFileNameToStor = %s", socketId, data->clients[socketId].pasvData.theFileNameToStor); memset(data->clients[socketId].pasvData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].pasvData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].pasvData.commandReceived = 1; - return 1; + pthread_mutex_unlock(&data->clients[socketId].pasvData.conditionMutex); - pthread_cond_signal(&data->clients[socketId].pasvData.conditionVariable); + pthread_cond_signal(&data->clients[socketId].pasvData.conditionVariable); + + return 1; } int parseCommandCwd(clientDataType *theClientData) diff --git a/ftpServer.c b/ftpServer.c index 0973ba8..7b74345 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -125,25 +125,33 @@ void *pasvThreadHandler(void * socketId) if (ftpData.clients[theSocketId].pasvData.commandReceived == 1 && ((strncmp(ftpData.clients[theSocketId].pasvData.theCommandReceived, "STOR", strlen("STOR")) == 0) || (strncmp(ftpData.clients[theSocketId].pasvData.theCommandReceived, "stor", strlen("stor")) == 0)) && - ftpData.clients[theSocketId].pasvData.theFileNameToStorIndex > 0) + ftpData.clients[theSocketId].pasvData.theFileNameToStorIndex > 0) { + FILE *theStorFile; char theResponse[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - char theAbsoluteFileNamePath[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; memset(theAbsoluteFileNamePath, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - - //strcpy(theAbsoluteFileNamePath, ftpData.clients[theSocketId].login.absolutePath); - if (theAbsoluteFileNamePath[strlen(theAbsoluteFileNamePath)-1] != '/') - strcat(theAbsoluteFileNamePath, "/"); + char *theFullFileName; + theFullFileName = (char *) malloc(ftpData.clients[theSocketId].login.absolutePath.textLen+1); + strcpy(theFullFileName, ftpData.clients[theSocketId].login.absolutePath.text); + if (theFullFileName[strlen(theAbsoluteFileNamePath)-1] != '/') + FILE_AppendToString(&theFullFileName, "/"); + + FILE_AppendToString(&theFullFileName, ftpData.clients[theSocketId].pasvData.theFileNameToStor); + + + theStorFile = fopen(theFullFileName, "wb"); + + printf("\nSaving new file to the server: %s", theFullFileName); + - strcat(theAbsoluteFileNamePath, ftpData.clients[theSocketId].pasvData.theFileNameToStor); strcpy(theResponse, "150 Accepted data connection\r\n"); write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); - + while(1) { if ((ftpData.clients[theSocketId].pasvData.bufferIndex = read(ftpData.clients[theSocketId].pasvData.passiveSocketConnection, ftpData.clients[theSocketId].pasvData.buffer, CLIENT_BUFFER_STRING_SIZE)) == 0) @@ -154,15 +162,12 @@ void *pasvThreadHandler(void * socketId) if (ftpData.clients[theSocketId].pasvData.bufferIndex > 0) { - int i = 0; - for (i = 0; i < ftpData.clients[theSocketId].pasvData.bufferIndex; i++) - { - ; - } + fwrite(ftpData.clients[theSocketId].pasvData.buffer, ftpData.clients[theSocketId].pasvData.bufferIndex, 1, theStorFile); usleep(100); } } - + close(theStorFile); + free(theFullFileName); memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); sprintf(theResponse, "226 file stor ok\r\n"); write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 029e357..d3f4e55 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -7,7 +7,11 @@ - file:/home/ugo/NetBeansProjects/uFTP/ftpCommandsElaborate.h + file:/home/ugo/NetBeansProjects/uFTP/library/fileManagement.c + file:/home/ugo/NetBeansProjects/uFTP/ftpCommandElaborate.c + file:/home/ugo/NetBeansProjects/uFTP/library/logFunctions.c + file:/home/ugo/NetBeansProjects/uFTP/ftpServer.c + file:/home/ugo/NetBeansProjects/uFTP/uFTP.c