From d0593cbdbb5d94497e5afb5086ae94959918192e Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Sun, 19 Nov 2017 16:35:33 +0100 Subject: [PATCH] Implementation of commands MKD and RMD --- build/Debug/GNU-Linux/ftpCommandElaborate.o | Bin 32480 -> 36056 bytes build/Debug/GNU-Linux/ftpData.o | Bin 20368 -> 20368 bytes build/Debug/GNU-Linux/ftpServer.o | Bin 53176 -> 58640 bytes dist/Debug/GNU-Linux/uftp | Bin 97088 -> 102184 bytes ftpCommandElaborate.c | 94 ++++++++++++++++++++ ftpCommandsElaborate.h | 4 + ftpData.c | 1 - ftpServer.c | 81 ++++++++++++++++- nbproject/private/private.xml | 4 +- 9 files changed, 180 insertions(+), 4 deletions(-) diff --git a/build/Debug/GNU-Linux/ftpCommandElaborate.o b/build/Debug/GNU-Linux/ftpCommandElaborate.o index d20347e93f8c6e4ceb24ebe52a5bab7798bbcab5..c703aa28a8facb28dbfe1bd8e1bda649c53731e5 100644 GIT binary patch delta 10261 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 IO|)ZF0EKo!5dZ)H diff --git a/build/Debug/GNU-Linux/ftpServer.o b/build/Debug/GNU-Linux/ftpServer.o index 4de529e423be61f87bbaee6d06f97ea665ab720d..a41a1f9aafe3da23ba9ace1be7f4f8eb26720a4f 100644 GIT binary patch delta 4105 zcmb`KYfKbZ6vxlrU0x$7E)+^*RzfO*4Fp6MUks%{mB;c}w$y^9-Lh*%Tox8Y(`r{t zsz#$lZkno%eK({wwy|SUV;W-mFm-us#TXk?#V?xb2h(V@rmdklJ9n4E;Cz!0Gk4DU z|9|J6Gmk8%KQ;~oj00J0VDjXW&n-+&SAv!kM)uwU<(-U+ajeqJ7v==mj`?^polFGa z7nYXt;L<(p#=KA}O+DG>^18eL>rdbdbN2Ah@|Ux-@uB7R!o{Y^o;9(=^L7lzpGsMKpcnw)G#>uM!>!3^y-b;IW++O}GeY+QBUM6VJ%M^q%$&V@e0q@Vv<~s{sGtB4L3#@$qA~Vk^u<)G)(fou} z;cElQ%IihJD8H?`96TK^kZjfE>1|$*$Jyyh_qp5L?R{<+l)g}B2j?4JA4s^IEhw+3 zsQ{OIvl}E_&KB4ls2x;!A^QY-Mgpth#b0iBzBdO^aaR^fvBI=ch9yuMzLa5-Dh z@KU7%y0^6Vf`rT20=umod>$7_cAKV2KXz%aebElS&J8}0aQPU2t)mWnoxNTZIO=8# z8Y`PCpr`#UH%PdgEhw$8uK;IPmm4HpMg-ZBQPho{wZ~?uxdt6FQUwppd8QwjVnqOtb z@d7Xahys8SJOF@Q#7zK@4FLa5seiAc%XvWK3JTZzI<8MN`inw;oaoa?m6KQ{?J~)} zOtLpI>rW|CcN*ULEy1*ixOV5+M31?6JOIEeB#wwXg5%WTY*yp`Na1_J&_@iknO&p+ zE&LscBSMN+H*|(@=;(hTdK37kJGf602%0BAk90t>%hf{R$t4TDS;TRZv;hmzM;h=0 zKrKmN;pYUXiGXMaPNI*10N@abBPUOAj_7c{SPr53kq!!l;TvM09h@NrXyMx=j)iLk z=Pu#U1|Ci8{WCy0D`t+gL4XQH9E(!W^BR4V&{q*XZJ>$h)dq0>0I-`Rumg_(9V8%H z_z2O{Nt`EfVf)3{ozs9gt7;X{+?cgra)4~}mXHM>*;4Bew?c@qY+>cK$1-UgK zEVb#n@D1s9w;xi}V zpPEY67`_(<3o+0R77;xyTut=r$al6`N52o_`22-GAY-ENAOX>ikLiHMNE|0OAvl+G zIM<2ZkA};_aGMxt#}9~scAU9-=BV!oPOga09QD-H3ZfSr_5Eun3Ea><0qWKPZP(}@ z3jJ=Prwt4eJ#FB})#CjR--3BDYDWPAqPO6Z4k#-0KgRT}OctC35!X)Q>98K_W5;R2 zkU}&jee!j4--9YAVBow z7Wm;GlEA_Z0>otXR%l0;AmZ9d6q7h|ngpjphf^Plub;kWEyB=D4739$DL^`a0iF0c zS=l#aNo7GSDxVmY*+?rlkIB-%t*UW*3~wH@ zvR|+A!7-U_-M}ZtWOk~Do5yALdr#=c{>JevTn>)Q?D|zcF)qhtZBfnZcv`SX+POo$ UiZb!$pjG7gEk*u84tc{tzi_x--#@8g{5jIi`n zn07!*X2JQw3Y%uWYJDw0do{n^@L3OAdbG*+FnGKjy#HZeIof15Zuv})T1q8MXR%(M zQpY}tyAE1{ZcKU9v6LqafihKm?rnkVIu+guG{K6nCl3C=ZpaZ0&il_o7u~VYc^r2i z#(483YR9pF9c?Z<-nUnwtJ#Y2W)c4~&Qm8>%TVgDfko!wj&nvx0=^8@yOMB*5CVyd zjf4u&fdOh|ZaMB1;4+eaWGCe}@SW@K5!_*iR= zFF*!|2YUNrvHojUItO~My8W`xj~mfy{$uQpz$eEIUTVU`8#6s!x?xn}xn-*vCL|7D z-dB`r=365*TI8J_gb+NS9K_0OZAEZI>ju5(%SsT|-V)C`phw2JEUW0*wyl=oW>$iu zC(x-dc=igT3WL$}IHxd}31LxT(3VDLj=@R@qd8{!9nz9##l3sia=BtzAdU{IB=*S>m$P&`;H4r9j+B>^*29gowqoY Gt@{TIhT_%$ diff --git a/dist/Debug/GNU-Linux/uftp b/dist/Debug/GNU-Linux/uftp index 7ea5827970c41e08f24c1c595ba0c7f4af192ecb..8abb718f224acf23e44c5fa28b4d503f1f95559c 100755 GIT binary patch literal 102184 zcmeFadw5jU)jz&wl1U~*hD1e;h&m!DC_(^1K)`SrJt&t5L}?WvBoh(|NlYdNEJ!c} zb36_PODwinZR@LeX-lgjrCb71hI*;dqNa*9-e-iisihh*b$_4F+WVZG2^o_3zR&af zKjG+_{xqv*#QyGzL;p=2{M&KxFUFClHIDp` z$Dtn?hksQZ`p@I=zcvoOE)Kpd4*&W%`0a7zM0@GVk5|RPUmgd4Bo6v7~c*FiKew(9WjhjIA- zJP!ZMKeJV?;ic0bql>}AlC3K*be-z%m#)59S?9 z6{UI00zoP$D6Xt1q>5m9UfD{5_4A9$sW4btQb84EiDfgqJHNB$*65R$dbt;mxc3M+&8rB$$CMbXlVK=8KZWyl0o3s_>R2n1n? z(y|~ew|M8}1_|1NZ9!3Sprn*4D~bbwGAe+DpdGIMN#TO$5Cnb=R$H(}K{{ScQHGy0f7AZ*IYlX$i6tfw<0=?Vq;v&W z_D6aG4Zy%(p4N>&{ii*6LX^oD_@3iup^E7jQm8m9%g=#)#;#<|c z)!iiLcP8G1n_rW7bKYwHT5R}1CX$FEHauds`D?Y|H4{lhZ8rS%HhkTyvfN}fuQ7l1 zHoQ4M!f&$;uT03lM{Rg>?uXx28{R$-+-Ae0Z1cCnhBs}5U!x6gO@)c*kPYuKnGjKv z4d2IxZ?@r6ZTJ=&-fP20Z1}!5e5(zgX2ZAH@a9~We}C$*Gv;dM&uzoo=N0KT{23-O z5oOr$n5&vUpACPei6o*SHvCyOe5MV5whcedhR?9!vuyZtYx7db1Pm=Pl(1t(XhA*?>FRgxcUudJRv*GRIr+ORyA{+f?8-B12 z|ELXru?@e~hQGvy-)6%PvEg^v@I!6*MjQT88~%_Df0+&6WWx`$;hSyv;Wm7W4L`z$ zkJ#{;HhilMKhlP8v*AbC@TB4o+WKf4-fhEQVZ*1}@MCQF3>$u|4eztzue9NZ*zn_Q z_)HsqybV9jhM!==XW8&q+3=bTKhcKIw&5q)@C$7C$u|6A8~$n=zR-p@*DmoZv*D-M z=vUbAQ*HQa8-AJ%UuVOcYkv6E+wguH{bn2f8XNvm8y;&j=5MPFKf^>~9nprr&W7J% z!_Tzg8*O;ZP0imS8-BKlMEtkm=h*OC%`vxTxN3jrBdxYE=oC#_%>nm|B*r*j@R1mt z_=1npF32J=7;qtSMq7jsV(^LWJ}Si0U$lwgF94%!j5ad-Ibd{&(QOQW2pC;q^ihW2 z0gNT$Xg$Mk07jP>t!DToz-S)PGKTj9Mi&@e%!%qQ5R~OA> z_~(Gp#YKG#{}?d3wrD!T4**7&7A1!71&ppN+WIZ@y&EvPuxJazcLGM&6>Va;95A}9 zXd}b70Y+C9-Nx_|!04i)k23sy!04Ky^$gDij4ml!&G2=A(G^9@7@i6kT~Kr}!xI3b z>xpJFJPI(noM;xqmjXst6U}6JAYgPcQ6Izo0i$b)rZapxV00-_V%P&1T}ia{KhWO^ z7+pxTh2ay=`=}6IN3@CIF94&cLT9v$;r)OygpV#} zcqd?l&}g=mzo6a>Z6p6SLx25NP5)4<`M5QE{>+eTr$MBJywmtHN!&{$&RqYTkB+BZ zFdZqAo_x+nIaA}V&kT4+)c z2t#9*Fq@&@YWgSIzHbvWy;a*6xmt4^)L#EKn4uZ23l+muFpS5qdeYG6d_&PNW2Qw_oX^uP4uR%`^_nmJ!$J6h@ZT!F<2Fku`f7r?QRGo5{TAh8Z1~S+o3lA zsTm;_rvXB0d2gg`-*g(}(Kgp@azV8k7Sy2`wMYOxOcLwi z$iKc8Leuw~vScM{Mu-{df6~K|08$l8qZ%xwJe8I_$iD;K?ok&Ds2P=Q`P%3!*r7pJ zl#n#^ogGT@0@=A`c6(CRcAVVLz~U%3mok9L8v30ojxRv z)35fi(^1_t*MfASofxTTp)r5IN4Br??F8d&1g|QB|6E|>pn(8R*Fs~qD}p1EK-Qgb zO&DM~DgUOzWV=D6~4KqQx(2yz3IxA|1E?Ta!o`fw`#3fSxS%? zHwd*HSN`c7Tdw{0cXy2OZ#d?d>QJmoR?k&P1IWOxFI<_`FaNH8Q=9o{@S4Xsv>vk^3-=-P+92{)qc$8Mk_vTQjOxa3c>#Zu-I&K6+NRnLE@V>*ibV zMk&|bNh8*omHFE*gxH&Y2~p%Yl6oniez3PWLOY~N|I|XRk%Ler_w&do;`*m4$TF6( zi;>gMdv64zx;UNap?#lcIGWP7Hx6x@qVMaa$dW~<9>cZT#x!mJzBcz1y-{&7b_~Ms zPuk7c=Cc8H18hKj1^}tmlpCgGPtm`gqPJ?HF@Lz*)-Kag)oTu<+uG)N|3uyGt)0=- z%r^XmY;gIlabnNQt+r;IuIa1W^vdJhd{s^JA3sGE*IZkNum;>7dy#EZ2GLHeyjvsV z{jI2h2pzJ9pSs*o9gjqrejB&OQ_;6-T%e}^3C-Zp-+NI~xO$UMZpG@kaF$Vq!+ky0 z$OV&$s^^8Hddb3*p5BuAB#`y@w-#rsM)X!n~+hb>> zo4HpW-4G|FIrMvR zW8}2U$@SUhUb6=S*X6{r(j?bXU7n$5jiiW$d2gt)35}DWj$WM-^?|$ zfeT`6Y=cv4JY6NLHJ+}LCVGOmtlbTL%{3m}^BNCsG$X{h8X!g2YdlE78V}Q{H6Gy7 z?wf-(o)LFgLmN3Ez3@(Rc=<>~h`qeplk+(y{%rNM4KF1UrETXS-oz1U>oBxZ>@}mF zO==d#*50huL>wAMa5Qm5@IsSRPXE>9{p%_@3hCEjeof7ROkV7ac)aWj0l!qd4#9gJ z)1(JJ6N0C9u!9ydeJ^K92eBgcqu30&oif;GWHLiRI#Kj5WVc4`OEzn;Sk?e(S>Fyj zvGP{R4M^#bH1cVzq$d~L*1^iC&$8E2xi}#!g|>E|xy+!y7C8`GNKL0gR8z2-qb{vO zUPCQdgd=~*RZ}9Y_nzdO#`Dn%&yHZ!TYHG>r@ZVLH73(H=lbD3ZSSHksdWg#4_dG zRb~}F@`(^~RaP@NRCH;ZtzN8A@=QxD-dYx9<4bqn?X@)447J7+j!gIjqyEO}Q2hMQ zPF8%(m`vZa+>%SQy+L1IVQ$INfTg%kX|5D6U+D`%@lxNxtn*K){CbpQG)QwaY2kf% zGN6;s<2x@zC%Y#KFOMSV@ zCk5fG^q}ux*6H@=3kSKX$9=xg7(W@KHEcJI_YlF8w(f2RQOARXwEO3tf;=;AUBW4n zN2aa&SoVWmJ_;F?w(bw7NFJTG?(tJ3Uy-)%o>L@`2^Pmwa%}L1cu7|V$Hq$<7d$s! z()h~%)5k3rek(-eu@YN9fH-z>h1n+hePDLQFMWu*Z#Gcd>d+<2IX7cMV;(4%4fHgL zm2o{BdFBJvK;>GNUjHcOtR0VGid)PEtfC=%(QLqfeV<#AEHoSuf3+4RVw=y{7OVNx z9Lv`9)jK*hoUs1@w^75tLv!)4nf1N4oG9W*hUET3TFBpI4dR9a8S=MSi1UCj{D*i{ zQF#$=5rCd~U-q4|kiA8X)Bc!DbaWvKGY5eF9oFd2qWXm@!W@$XN~Hy>@yJZEpVbxn zMT#J8I|gziH3KZ+zE!uI?#p4r`CIk~G#zsxH|?)N=>7vxbSI{CT4>BtL`OXwIZLUB z`(}{s*Q8EON~h1Iv`stl=w1trxk_bxBbmtXH)95C%xYqtP4D^sikjnZvcltET*|0s zygcM0IXc%mIW+Ls@8-}q%7`MFD5kSR7n)_8L-(0Lob1qd-?J%iI<(Ez6NkQ`iZC6z z2~9x{M}D2u;m}oGvEQHwq(d+1aOl&erbE}ghn4_=!jU21q1>pv@rkNCb6jz~@xYNz z-ngFE82v4lHzp*;@y6RnY~J9d`%cYkFZQcM>fvwQ->Mn@*6%t1^GD=Z6?)DtV!K7; zxE7d+CdM3mg(H_8k^b^WbT!$+%+eYyrP`9^^vWMGs(A>D8q3pOe!eEN$>9O7`t5&5 zh}y>BWk@jxz06vY&x*tjci&7Qc!gorphD~x8Ix!kN3CCF=67|G+U?_jqC612Q#TL}g4V&4SjT(>hL)#hdvhiBY1yK$j4PnZK% z7EH4QyG54I?DTMCH?o>T+l7&QZS(;1=`NSQ_5d7y^Fp~%!F;NwSGI7i(!-Hgxa|EL zdK^vIsB+Y$)%e@6)YOK)&=*9tZ98e@xn}ioM`Z>tW`|)})c3Y<7Vn)uiax8&$a2>< zV!(qneBRoVX5Q=J$Qf^Q)i$%#pHu+ThO&Kz|2U>gZ%2NBISH7BvNJ6tcHRJK67ge#DB{ZW$=u+GfqM&+IMr z*CK0Vor!2hIxjzKj;4b$DjPZNdNyZcSr8_tS>g|QtFxoALSGQ}pQt+{?FH9m8+=sL zm|UQ{F5KXwv=?0cH~6SvQud2?q!ff*eKz>Wp(cH4ZwsM^BP-q#BJyH0`X$5vv15PQ z3$D*X$k`Z5b?*G7@ou4h=&R57o#?9{+Shi$(EWN-QDfE?qM`frLj|t%OA2)ViLk#N zjVA2{{|T1%sY27(cfKh^^ifWmbwWBtJAtI-D z2yFPv)Fb-lYop~Z&7dptr`OG~ zlGRsY^kr^fF|vFpc0m){zD+Z-h5*(&;BkP*SujgEw8`!jPS^UZxq)UjsMIV!p4s~F+*)#w^I zq+gh4hV&<1v(w1EQJ4yl?r)EXTQH@QS^8R8g0G=Vl-T|j_SV;6Any}~4_V@O2ZxO6 zb?HQV@S2Doj)ecj*~)s5t=g8YUS=ELgKQ{G4@ZVe`I38(0|n{fNV_cK&3n7kNONKH zlvO8w)oz&-)0%PTptUZ8NWQxhnBMRIg3{h=UFz_1X*xm3<_H zRmQd^A@tf~$jyJX&DftlP%|2s+K?>tw?&f{;+&}3*Q1_vfUms5rvJC@BSV%Iw+}xQ z=KW!^hw#4GlN?4pI#J1(>zp^&taGDZ<$_oBh)o^XXvUb?-BX7KBwKpquXLfep1#9dFMv#sqpm-fHf1;pLKPFR?*} z^&sORgZD_)Hm0qcA<%d%vCp!^-Xz(*x4tK0Tl=T}{&Ebvf81)i%P-k&=m|S19dE?vcy_2g5tQC)u@7UA>G?o*t05%Kn*07;?3!A6&rFzEsl#Y4tDk`uh;i zs__>sO>P$P-q(}dR;~@_2|Qao@}c?qk$HDCxrXl@(7)#_$8)AtFYe99dhxbD3K9MN zw-{%4RXaa8Xmj|eQDgZ*vbM)p5iBkDl`c~b$HPnb_H?s~!?$N4D_d*J-94~Y7rxE^ zgAn!6JUrtyyf^iT2?sR}8xDT7;Pv$+TWr`Uic#yf3_ncOrVTdd7ga=-7h%#_yR?`PT=ehmUrS zKc99a{O{U2wx;RfND}yQeYmf>2i8>efitW9(DPrEqW+_^s8=1phL0g~c!*>zH0JmM zp2oK7)g3K@&hnpQ5-!Ig@?{qKIZ&NnuGh%EL&8wj4s2Xc!*1n-SPQT6lSpF zjRug%u4EW1-0@RqhO)Ecry6CM@e^kn+K^MFX8Gc$8d`e%M9s(^rxe8t^EXYId!rT_ zQ-71q+~2^}H3xhqnI4X~_nRi)a92;f-=)dt?c?_sKNMIffV;=D{nPHN!H_OgdvYbd zaKF7~pfZKVwBvb&`8YP)R?GEpBzK=F=4Y#WBBtz+?3MJ_jTrtwIK8$N-VWEgKa!!l zW;YOY*O|(=SjaN6vNWA3G@~|~Yp`tPA@4a{+y2Cp7c*;`W=LW^9I4zJGtioNquHd7 zG$L+Z#t$^T7xYMvj=0$><7Q-457dv1c(3KKT_fJTR^0q~@40MHT*7-~++6I!vfOd2 z_iIykk!7d~$y%q`@n~U&z_jo!^at$9%`wJN`Q{Sl1W~uH6lVMKaNv8#Ke) zdS|z)IQAKAB;JpT%tiwYqBf#JGk)0^#;akK9cy=k0A-|Ycva56>UvPlA%i!Q%EuFW zIP%1y+^n^pl=2XrlyUta+I9f0!G$w1FthPsHAb>YOY%OFbe-R0W!h|DF zPLPASmz*)^PsbDKTu)JP{?)mQ+PqsvD7@G9zZyC7i*ez|4(PyL*yNSnd(7-jIkW1& zl6E0Pq29}8VKm^LXRagWnvG-QE^`agwR_m=O)Gj(nr2jEixG?WNKY~tb(r`oBkNzt z+3eq1ARyYiW_TC$gpC&Fa`8J!r>YxFop%4;)Tsha>G15JotBScyYP2^ZzX6L1z&zm zQ8AB#EA#RK6&2RBr=YU9c%?5`uI3u2Ub(HVv?Ar)hxlT|(3!O{_oasK;Tu z6q&M19+H6dIviMIf4&nL*%-<0N3<6QwM33%ZP4|*JA4%R;99htNsFukZr&+`;c6)N zp$dd12OX<4Bb|yd!{oT&Xb9u!+|Aw?Q@;!aPCbE-43SP)tL?tvSR3PAc|gl zpdA+aL8XsE*;lJ~6qEFWTHZm;*!2e}Z@3m#`tTlPe@9bI%hf}hct?}IPy6$Sc)pkt z*7Oq~*EcEh;c=M3LWV27r_3bz2f;X!F|!wgJ(Y~fHwE$V)}gze4*Ez7*W!#A98RQ# zYn$7xy(;W+qanhMua$miDCFLv7N^c=MnjuS!x=!D-mpTZ;e;B^XmGQGYjIwXrZ?2d zG@NFGrC^zcvxPLhVY5ub$v2wOFhr)|93o9`*ecU-N{(hUjFV|Nvq;k$cE~iGsG}JT znoPs_Mw;GmNT%WR9nEN1Ak%OblBPE_%QUX3Mnj=Yll7+|BGYiHk7hKikZCw$Nz)tJ zWLmXMtCMLsk4e)T-26DL7N-SiM#E;AhO?VAy&*%U;bbArXxJ*#aL$vaHw=+!IE6?v z8g|Guem18!@MB%07AF>ApSeuqT^YK3hHKQ~bR%qzm1+DSPj8S9A8WaV84VGcChL6z zp2uoNEly2>|703J7u6f&gU?!=umu0H(*9~q&#A+*y~JinY`v!EY{sZrVuwiVqne(x z70(tWcAUg+)AXDjno*0BpWr8nZPfIfLl|O9>;j2x()65W z>)qula(#Zi88hpiM=SdLb{uOHLIu`BvTcW+M^&AnAJVX8NIuJXdOO-Ujxstr({P1M zZo4dQ6PVkUo^e}fajV%4o>Y077Mk?v^+b_3o)secRJ#yi*PPqsk%rN!a=qk|+o97W z6cPVv25+EAtGzpc$Z-9wET+w4OUQG7fO3ZGjj~fT_zPP#ENKi|46ksEd9n

x0vS#I@!W+0P~J2knH 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 bJ0^2-1AfK9{M)LepLI&c+!06+c%}afnaL5? delta 36416 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 E3xsg5*#H0l diff --git a/ftpCommandElaborate.c b/ftpCommandElaborate.c index b0ea5f6..0ac986a 100644 --- a/ftpCommandElaborate.c +++ b/ftpCommandElaborate.c @@ -425,6 +425,87 @@ int parseCommandRest(clientDataType *theClientData) return 1; } +int parseCommandMkd(clientDataType *theClientData) +{ + int returnStatus = 0; + char *theDirectoryFilename; + dynamicStringDataType theResponse; + dynamicStringDataType mkdFileName; + + theDirectoryFilename = getFtpCommandArg("MKD", theClientData->theCommandReceived); + + + cleanDynamicStringDataType(&theResponse, 1); + cleanDynamicStringDataType(&mkdFileName, 1); + + if (theDirectoryFilename[0] == '/') + { + setDynamicStringDataType(&mkdFileName, theDirectoryFilename, strlen(theDirectoryFilename)); + } + else + { + setDynamicStringDataType(&mkdFileName, theClientData->login.absolutePath.text, theClientData->login.absolutePath.textLen); + appendToDynamicStringDataType(&mkdFileName, "/", 1); + appendToDynamicStringDataType(&mkdFileName, theDirectoryFilename, strlen(theDirectoryFilename)); + } + + if (strlen(theDirectoryFilename) > 0) + { + printf("\nThe directory to make is: %s", mkdFileName.text); + returnStatus = mkdir(mkdFileName.text, S_IRWXU | S_IRWXG | S_IRWXO); + } + + setDynamicStringDataType(&theResponse, "257 \"", strlen("257 \"")); + appendToDynamicStringDataType(&theResponse, theDirectoryFilename, strlen(theDirectoryFilename)); + appendToDynamicStringDataType(&theResponse, "\" : The directory was successfully created\r\n", strlen("\" : The directory was successfully created\r\n")); + + write(theClientData->socketDescriptor, theResponse.text, theResponse.textLen); + + cleanDynamicStringDataType(&theResponse, 0); + cleanDynamicStringDataType(&mkdFileName, 0); + + return 1; +} + + +int parseCommandRmd(clientDataType *theClientData) +{ + int returnStatus = 0; + char *theDirectoryFilename; + dynamicStringDataType theResponse; + dynamicStringDataType mkdFileName; + + theDirectoryFilename = getFtpCommandArg("RMD", theClientData->theCommandReceived); + + cleanDynamicStringDataType(&theResponse, 1); + cleanDynamicStringDataType(&mkdFileName, 1); + + if (theDirectoryFilename[0] == '/') + { + setDynamicStringDataType(&mkdFileName, theDirectoryFilename, strlen(theDirectoryFilename)); + } + else + { + setDynamicStringDataType(&mkdFileName, theClientData->login.absolutePath.text, theClientData->login.absolutePath.textLen); + appendToDynamicStringDataType(&mkdFileName, "/", 1); + appendToDynamicStringDataType(&mkdFileName, theDirectoryFilename, strlen(theDirectoryFilename)); + } + + if (strlen(theDirectoryFilename) > 0) + { + printf("\nThe directory to make is: %s", mkdFileName.text); + returnStatus = rmdir(mkdFileName.text); + } + + setDynamicStringDataType(&theResponse, "250 The directory was successfully removed\r\n", strlen("250 The directory was successfully removed\r\n")); + write(theClientData->socketDescriptor, theResponse.text, theResponse.textLen); + + cleanDynamicStringDataType(&theResponse, 0); + cleanDynamicStringDataType(&mkdFileName, 0); + + return 1; +} + int parseCommandCdup(clientDataType *theClientData) { int i; @@ -500,5 +581,18 @@ int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom printf("\n Bytes written: %d", toReturn); fclose(retrFP); + return toReturn; +} + + +char *getFtpCommandArg(char * theCommand, char *theCommandString) +{ + char *toReturn = theCommandString + strlen(theCommand); + + while (toReturn[0] == ' ') + { + toReturn += 1; + } + return toReturn; } \ No newline at end of file diff --git a/ftpCommandsElaborate.h b/ftpCommandsElaborate.h index 2eb4578..451c95d 100644 --- a/ftpCommandsElaborate.h +++ b/ftpCommandsElaborate.h @@ -33,10 +33,14 @@ int parseCommandTypeI(clientDataType *theClientData); int parseCommandPasv(ftpDataType * data, int socketId); int parseCommandList(ftpDataType * data, int socketId); int parseCommandRetr(ftpDataType * data, int socketId); +int parseCommandMkd(clientDataType *theClientData); +int parseCommandRmd(clientDataType *theClientData); int parseCommandStor(ftpDataType * data, int socketId); int parseCommandCwd(clientDataType *theClientData); int parseCommandCdup(clientDataType *theClientData); + int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom); +char *getFtpCommandArg(char * theCommand, char *theCommandString); #ifdef __cplusplus } diff --git a/ftpData.c b/ftpData.c index d5625ee..ad75218 100644 --- a/ftpData.c +++ b/ftpData.c @@ -65,7 +65,6 @@ void setDynamicStringDataType(dynamicStringDataType *dynamicString, char *theStr } } - void appendToDynamicStringDataType(dynamicStringDataType *dynamicString, char *theString, int stringLen) { printf("\n Appending in %s --> %s", dynamicString->text, theString); diff --git a/ftpServer.c b/ftpServer.c index baf639f..0973ba8 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -329,7 +329,7 @@ void runFtpServer(void) FD_ZERO(&rset); FD_ZERO(&wset); FD_ZERO(&eset); - + FD_ZERO(&rsetTemp); FD_ZERO(&wsetTemp); FD_ZERO(&esetTemp); @@ -668,7 +668,84 @@ static int processCommand(int processingElement) printf("\nSTOR COMMAND RECEIVED"); toReturn = parseCommandStor(&ftpData, processingElement); } - + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "MKD", strlen("MKD")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "mkd", strlen("mkd")) == 0) + { + printf("\nMKD command received"); + toReturn = parseCommandMkd(&ftpData.clients[processingElement]); + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "ABOR", strlen("ABOR")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "abor", strlen("abor")) == 0) + { + printf("\nABOR command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "DELE", strlen("DELE")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "dele", strlen("dele")) == 0) + { + printf("\nDELE command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "MTDM", strlen("MTDM")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "mtdm", strlen("mtdm")) == 0) + { + printf("\nMTDM command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "NLST", strlen("NLST")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "nlst", strlen("nlst")) == 0) + { + printf("\nNLST command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "PORT", strlen("PORT")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "port", strlen("port")) == 0) + { + printf("\nPORT command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "QUIT", strlen("QUIT")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "quit", strlen("quit")) == 0) + { + printf("\nQUIT command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "RMD", strlen("RMD")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "rmd", strlen("rmd")) == 0) + { + printf("\nRMD command received"); + toReturn = parseCommandRmd(&ftpData.clients[processingElement]); + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "RNFR", strlen("RNFR")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "rnfr", strlen("rnfr")) == 0) + { + printf("\nRNFR command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "RNTO", strlen("RNTO")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "rnto", strlen("rnto")) == 0) + { + printf("\nRNTO command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "SIZE", strlen("SIZE")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "size", strlen("size")) == 0) + { + printf("\nSIZE command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "APPE", strlen("APPE")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "appe", strlen("appe")) == 0) + { + printf("\nAPPE command received"); + //To implement + } + else if(strncmp(ftpData.clients[processingElement].theCommandReceived, "NOOP", strlen("NOOP")) == 0 || + strncmp(ftpData.clients[processingElement].theCommandReceived, "noop", strlen("noop")) == 0) + { + printf("\nNOOP command received"); + //To implement + } //REST COMMAND //REST 0 //350 Restarting at 0 diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index aef7ea3..029e357 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -6,6 +6,8 @@ - + + file:/home/ugo/NetBeansProjects/uFTP/ftpCommandsElaborate.h +