From ae7496a4cc49e522aa3c0c8b5714d5e85785613c Mon Sep 17 00:00:00 2001 From: siqi Date: Thu, 4 Jul 2013 15:44:12 +0200 Subject: [PATCH] IP validation Change-Id: I9852efb8acf590242da762de2f9fcde445ec9a66 --- .../UserInterfaceState.xcuserstate | Bin 55726 -> 56460 bytes .../iosremote/Communication/Server.h | 6 +++++ .../iosremote/Communication/Server.m | 23 ++++++++++++++++-- ios/iosremote/iosremote/newServer_vc.m | 18 ++++++++++---- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate index 711b0756486007d5665fcb3fc3ed5993aa3eadfe..37b6d9677f57b071052c52ad07cf2ef81b3f2cb0 100644 GIT binary patch literal 56460 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 SS+oA9j`sggM*Y9+nfrg$76>c= literal 55726 zcmdRX2VfM%_y5k$>|Wd3-3tT)QX&DQ1#*`TDx?C^0tvmGDF;N7Tuh;g>_`!@VnI|? zNJ3M@SdfCVB*g6#6SW>4uk-&a*#>aUp6(_eIsuehdqYR|%|;<=^paY4@-e`S<_R&Bh^ zB}sxsunO&j_CmDKSLi477X}FN!a!k=kRZ5);lc=Eq;QrnN*FDS5ylGRggjxqFhMv+ zm?xA8BxnmQ4H#Yx}dJ8JBmfU(P^kZ8iW#%8>ONlXeb(nMxc@CER=`Fqv>b{nu%ti zB2Y#TVx3qoZWC`8?-1`49}piD z9}@S7Pl<=b*Tr|m_r;IIPsPu~uf%V~AH`q9hB$k{?dXPBMlME(9$m!$^awZu{hLH@CNwP>b8BRu#v1B|cAd|^VQcUKN zGEz=z$$YYaEF%V?$Y!#IY$e;sc5(~3mFysokVnZLvX?wY9w+)LH5+ohJ2> z`bzzz1j#LVq+wEqlqqFN*;0;_D-D-MNfV@esX&@2O_HWbv!yxGT&Yw#N2-+0m8zr* zq~+2IX{EGEx=>mzT_mlME|ad7u94PB*Go6Zez{t%kr&E~ZuuVhe)$3U5&2R1ae1Hol>D^(y!?WE zP(CETD!(SbCBH4dC%-R$EPo<@A%7_!mA{dHkbjhak$;s>SOg2PNEVyLZc#0orJbd{ zCC1Xp($&(<(!&yGInC0?GQbjVaa%l=6icdQh~;$4FiVCd$C7I~%QDI`&XQ*-uuQZ} zwM?_jvUn}UmJ-WcOR1&YQemmGR9hBU7Fy1;EVWR}1(sEo3oRF0F0ou;S!=n*vd(h7 z{I$y{)HN`&$QC6Rd7)vNgpz*gC{I)H=+XZOyTcw4P-hYaM6Jw-#8ZSf^TN zT4z~{ti{$j*16U)Yq|AYYn64rb%Axcb%k}Mb(Qr(>uT#o)@!Wmtk+uWtqs=A)-Bep z)@|19)?2LiT6bITv)*rg!1|!|A?s7tr>)OepS3<`ea-s1^$qLC)=#XTTEDmcVExf1 z+OUn-B%5rr*sQkpwrE=iTSr@*t*5P*&29785^Y0m!)zJ0Ok0*M+m>U?wN0?)+X`$G zZH2ZXTd~b=tF)bKTWUMsw#;VOsO5jpUA&%jW z5ss0LvmBEglO0nWQyo6XY{wkOTt}(n9LGGz0>?tfBF9R{D#wM6)sCwj*ErTWu65Kq z8XTJ)cR22J+~v62vB$C3@tETU$BT~rjsuRj9q%~ab$sFY((#q!YsV4CQO7rqZym=S zClo}!Q29vtSouWxRQXK#LHSYn$%&oBDLG|ll(U_)y))W*s=XmD?XTGz*dA76AS>!Bs`kj@|bDdSr^PS6_hVv5V zrOwNo*E?@;Zg6gMZg<||yw|zgd7txs=M&B+o&Rwja=zqz+4-LHedhdYO8;dWE_{y-~eMy;Z4Kb=TswRBecM zx;9M9&~mg~?JRASHcrda3bcvZRBf6zOY>?zZMJrfR;4Y_mS~2yN?W5{p}1?XdQ-_L+7>`%e2=`&CD}q&sw{9<6uK zJL)ldC%wBKtDmZ$p=aosdagcPAEl4h^YrohM17JzO`ooN^|SR7-KUr8=jauBm0qnc z(a+PD>gVgr^b7UX`bGL0{Yw2R{c3%KexrVqezU$+-==TZZ_)46@6zwq@6jLDAJHGx z_vlaQPwUU<&+3Qtm-LtQxAk}QclE>ir}}65=lU1=cl!7G5BiV#FD~MeT(ZmJQe82w zPOi?bQ(RqKU0vN=eO!HA{apQB$*vSvs%x<8EY~R4XxA9mSn+^soGafo$u-$EWn#~Y z+Oo1kf=#ds4nYw#A!_p2{DJd)i>jx=-$p-jQqSVD!s_Ze!6~SQXy7_Q7hEt7qatH~ zSMQmYk>SqtWTeHrv(i%HlhV@?<1?~6Y4PdliD_xs83~D5i78&a{mAT`$^NQ&)s=&|8QzoD`i+QK2yg$dZg0`0MuSXNJ~PP*{}Zuc)c=mzDXdyy*$ap7gBb%=lDy zQf_>bJ3BEx4G50U$jnL1&PhwjN%kbqVvme8Yzs4ON(2#}Z=@>M|89^rJM&vqeEND`8T6d_ee6Vipj z!Vp6>G($IBMwHRcXm3Ot9kvT+fRKj@!-NbW6JBKtIYvhiawp@c@e@S_Mhrz>W4hs< z4s}9pqYI0CWnNu}clmSu3&s}CFP&3Ze4wC5fB(j9KY08&Dt0q%PlSQvv3$uhiw+IEoL}8LJS(qYB z6{ZQ(g&D$3qqA{}(Z%R$bThgevBs%J456CkH zWH{Tn)OgW&-}rzjuq)eFR6A#muPQ_c9fCqMl`0=dEh(%j0qHQt0uM00nYh_!oRMk# z57)%#aF9uSzR3G#NV(y@iqcw8>UK~(+c&$gwyegifXhC%@uNKUbaf3V?gU?Dm9H9J z6xP7>vwB*YDZ2vb0Rdsv3JZijn}qpBuT8>2qc>-AQbCZvku|>Z>Vu{cI!{F+jf4OI6;=pQb;1S0a-)yYw@z3otTOr;{fz-LvnLgV_8uMHGqo90IH#htrnba4 zHOO<^unS@Y_V1u@sc@Naxp2iaZrCcIn@`~{ebqC@=4Y2e_w!d2RxPT7QfsG-%^zn@ zr~|}YC9Df0=2~IBG0+&qjG<@rdecfpv#(u%;hcMA6kQT4)I!rj6>Myio!q}L0(L4of#27}6$Fn;@n zRR>yG=zCQ2aPNv z+sHG{HVTYFqsVa2V7)%Ou%@tJQKfG>r^%!ijAw=!FJX-nuG7#bxdno6n68dB2Zm08 zVJyOTrv$#sSqNQ(g=Lzwbb8>si4#VHHLt8KDl08+9Bjet#}~&}`)jL;gT3c%;R7LR zv+$1au5eg*Pk7(RF>;OJ#t38NX5mBOBNz`q5k57}GDgGrH`W+u449e)15d8MtOTSU zlUG$*4yqiev!JxxS6x$BUO96_X^AhRtZZa;buDY2o+lM-98$987FHEPLsd;Ete67> zOs|uQ`S?&`Cj+| zj8@Rnp5f*Y_XbR}uXn(OeG|X!11AN$p66IiUnm%UEO+|@s;kem>XPdq= zW*8F;uQA@3?$rlPDFziE2-Y^N?{T<+LGJ?SuPv^rt@4@H1X+Z=^~j2B$Zq5tlZ+|G zw1dbAbni#nw2*oVjET($ep6m33bpg=T2+VI3u{{`W7di~AkCO; zOq^Qkudecy`)hps-w=Y)m4I>{a4Qt5;G!gvKEZvZmT;B}}U6Go)3_>%)ryjSmYax*pwH{1-@ zp@9tUPnY-V3GwDo%dE%XVt;vgsp;RD(tTH$=O3>n5^V~KHIJ-PrbM=Ok_#`(rF)(U@aeE!qJeT(kHB(AGd z*&nw%J$WgN63bVe-FwQo(9z&hbQz2WSD>}VD&qn$-qcw6e>L7$v*y3XSl(!~(R#3x zD?;sLyJaW%zkq?fkr_ziLT(DD|JA0Dw-9TfK}{yytEc}t^ASJ0%3mIDmQBoSY~&D& za-(TIF61_18{>StaY?H-Vkf$t*@#^*Be={+tV4I8JB`bYD-8EcbEcK&uP$X1n;vJL zsL2kf)Nb?ud*(iv1gtfZ>(GPfA>&Hpdc!?6qYS*h3h?LyMfae6O#Akt$I#=(RmRoE zHTCETumS%u)`1OJ|4-O}=Y?gP&dCfDQ_MHf}WBTvji$0|c-iJ)~9~m2(jLxU%C^I^rq0iA5=u7k!`WhWE zZZvK(ZZKN}W>jcEgrWiHg2JjfzQ#ySBXXqTfvHPi zbPsqfKu9FQy}ZWE+S0O;d|yoscoB^wZop{>^khzWWBE{Gz`bn|q_LNYoy1dM92Pqp zyEchkjNASoRwBkitVBFj>|xw)+!O2(VlS}|geSz_;%UYm#+`LyU$LKYmvQ%>h?V5U z4Vz&`D}(?sZZYX3tQ5ey*BB5t?4tc^tHR=sV)+#{I^$m&Bpqu!7qv z4ihuPOfhR}wK;7BV`MyJJZL;%?Dgt@r-f!yn49h(vwsLMHe5Ul%$_(x9BDjkJW?l) z5=R@48hZ@)B;I(FI6D!!YcltycPHkH1zx>tm_DAYQuX3QaT4=g|F~FWS2;lQ6mcpy zb%76Nh%@;IAw#Zswphp}U}A~!wDE*FUwVo+$86RdbBre&2T<`G7(oB?M+2ysX%3(d zumQA*XRn@WvN|w~;r!alN`F-|e>tp7h|4TyngiSeoU%oXvc<*=kp{R>qb;5tHcY9myB18*NoR;@S0RuRm$Qx)srD=Q0*`CP2(Xk z9tdU8)TWSTFbo-x>t*5YamtY%US79Qnom%E0g_UL#)1o?2(T z8hpytSUH58U@T>I>tdji8^xPh@tce{Hi;XJH~*-gH?V%bS=?g0WxU(e&$o*^Lc@^a zPH~snGe&2$7;okT( z+z0o?{fy%jMN`zBqBAMVq%iviV-U*?Ac%*B2!d-<1B2nFfSqRns*{Q=DlhVvwG5G2 zSW`SV7nUC(gw#SUrs0B!bifD&>un5B>k&XGd ztjbA+We`KpsAd=eDHq^LpyqfYMfOd2GDQv;m4XqqK%wc_EA*+yGw@8*fg*(>r!kqm zg&*@Re4-fcyqQ@LyQ-}y4rP-RW+_EoF>%qzD$1J5kh`qEjg9vK3ziOQmr_Z?P|4FZ8CUtGT!z zW86hiH+TtTv1R74=Hx5q`DXtLHaJ@d9RbVgg|M)*2!b9=J(`z*aSzrQDj+gCuA&Tz zu@(PF#n>dp*I1@=NSSiBip(a=yVK+zzI5?G%HABg=x8x5xDba({~ zz&cjYS_K6T0oyXz;E_=SD+xulu)Y@%i7T|Y={LdZVd!T;2xk47KhN5vd3CIPtH)KE z>(1P+1k2?6SfiVJI2N$o24Ec{La^$Zyu#q)W0)b%uYo8rZ>r!IK|1q`*{+g6Pz5?l zDE!Dd6<}PlASTR*-UyF3Dg*?e&G56i1{VqutSAerDXgsal?<=)*H!`}%s>VK8U4)v zIfxGk4tx+Fg7s=Hbc*6B8rZlLhhH&9<(Y#!eht446Vc$J&&jf`$8X>_*`VHX5peln z!TO{&o@$DjZSOf`lJX9I7azj!!Ge0QWHm)@Ac-PRfT|CTQ8Ox-L(O(sWYz@Mp7F={ zGZ@VAC-_r}5-Ccm!=K|XC`zU%l^I=qY5Kj^x{MKCE?dEft7B$V>QF z{2PYVFnk=JAOb-^S$^qaAGFHs+_J(s)$pDzAIA;rZTcjFOVKGxqbPmG=-T4alEUFt zY~VAgBZNqejMWh$tbK`C1P8Gan|OfO!6QBZ90r0GAZBxgHp^dIQ3I8Y_EpTOnM=_S zj-(JL6gCwNVi$Ep71oBlKS->wn9-d8C1>#RQKTJP^bYJ*2s~I%+LLIe8_mB8fomKa zNJj#pjCvA7IuS7JLn#_YQAWMEirE^Nr!lhvhJWBMDn9HwRSSV_6qx zws0hP`tU6ayD)nV4GA3~J9Bu!T-aw(GOlWTt*_R{J94Z3S%AP^WDsnIBE89Jqz~y! z`jP%*0Es7{pxG3G3CyKvI7K5U8cESv6pf;2^mZYRxQT}(!rx?)0>9IkI|ToMTad?I zj;Ck>`UlsH-8oi)qo)a^W!JZDKnLS{i1qV5Eot`~r8okU#eA2`A^aMN} zZZX)bmp>YWV@2UJwo8qBP$yFZ9U8t1mJb@5rWGmf4JD>5g_UENlaL&eyOE-CTw6wv zk)VH#`&vN1>d6RlmbuUcZ+Q99f%5F(aZMu{nGpKLME)kwK2yjva7fHKGMP?c<%vgm z$t+=6J@JyWNg+j(D4I&qjNp`kl#n^0^8hlJlu`r^*c8)n0GmO>$|t(zdqO7%q=K9q z_IMQmt2K?H=`gW|hxw$HKY3|h*pmy%lCUSwBTFd)KWkQ?;^6)>{&?ju^Kq~4`>&T} z!+bPY&kgYwgB}|!6fRkk)VRRtPD)G}5Sx|?-YsvR6)?vXIvP^Yxge{_)k2?J$wg!h zxtLr+E+v&Xpd1G$m;7|eyJFs4&-EhQT$xtWp=Dfx&>#Pl-27_`rX-aN0;Us_R9ZSI1E^#_q#-(p=*Qw6+SHX%ZsC7ra{S6EQ-(8vMn+to8{IHj@J>N(Wq7Zi5?13$v^A~Qv-X0RV70#@K(@>PL-K<85g#&g;Krbu8l!5iDF zeE#!%^!t!}#OEGCUQU)qJ^7e?!rUen`Dn4!A4dPlXXFbe|IaC+o5+_GEe}_sZ@3a& z0HettDN%s3Hf{O|hArYpR?PMfG*6%g)Z%+`jQMy!kRJ(b3SU9dN{Uw1=d}Ge_r402qd0j${%dxtk=2Vy!ma6L2@+#4DRXo8w<#gAHt1fE_leDT%@8j%1S* zSQ3)#l7pg)DY~>ya!M*ims7MQOw>|4F6v9X`oh0l)V_*=WtD7C0o#ZhVh>C63QJ%k zWxzg$m=7t2lXIC@U;Gb}!)!$;LHrDfbcz%UD>PCUsjJjYf~e^g6hVmRN{X&(!0V;% zQk>M&)C%w*uBPbPFdH()$9jL$Mm*-la{B_K1{kaPrEmy?&BimE1Oqc&zQZqkgDA5t znOTJu^9$i8)28|T<++8$(3sP+U>f7A%46;hM5h`BkX_&p62f^11R2H@R)V|31~6Yq zfxmJz8wmmrfwX$^ed;6s5Fl>oQIiv4))G%jf_q@{fY^9H;oqd zHb`TnvC=pxkD^T!)lpPWQG+pUyl2|tk}2_-qvMOpr%oH6I3|8ha(rrW@w8F7lj1Xc z@r%pT0@9u=O$mzxO4FsYnVQUyW=gXpFGX7^+D6fKif&d&m9{$ z^dVg*}FLwV;5Y)gm zO8=3blAe~Hk)D;Flb)AekY1GbO9!Nb(jn<3>1F8^=~d}9>2>K1=}qY^>22v9>0Rlt z^q%y-^nvuD^pW(j^ojJT^qKUz^o8`L^p*6rbVNETeItD2P*J6#PQ@rHwx?nTD#lQ;GZni~u^Sa*sn~;xJ*n86ihZcqkBS4RIFO17 zRP<0WiHa#yOrzppDxOZoGpRU?ikVc*reZD?M^N!BDvqY&SSsdGaRLZwN ziZiGe=4q^ z;wmbxrs5hZUIMBh%d$nb$~M_9J7h(6%Brl%y6lppr^{!^XUaq6VRD9?DQC&qa*muU50^*CBjvN?QSxYcj67BzC+ErIeA#VHi0Q+x)+ITVkecr?Z1 zD4sy^B#Ng|Tu5;V#d9exqu5VzHH8HvST4d#DPBqOYKkwW_%e#Gq<9_0*HOHI;*AtH zP`rcU+bF(^;(IB6fa1p}eum=bDLz2)%M`yx@mmxhrV#AKUs8OO;_oQ_k>Z~z{*4lW z5=@CqiH#D4LX48Mr=%k#r%=+Jk{*=wqNFb+11K3pi6_ieldHII^e9YB7sfASTWaG= zN~_s2PI*z;BG?%ZM`4QRd1teeoL6eM2ZqeKbamrF2sTk`jEb`9TwsEj2V2o$ zk+U53^5-#!ZCpM$@BE{XQu*1VnhK;0bPud9nKvkZ5uEKS9~78$nsE^`z&|J#BFrUx zCU44xeL83a#9-OUg239tz`3E4qMVy2+9)YcQkth#Nv-18unpxe-#|7fYg~3|VVQpp zEO$1|*X4_OjZe3co5Tc9TC3b#!Lgt9>i%Z!{@D|n+4|w(Jzg&7@K~*!v3hOlHq692jfD<1s z!3Ivrp|*0Fl#Lg@1XK{78|PMG@H%>#%z7 z;`PFM<($8~UN((_J^)LEW#&XL%U4zwUi*E#_BY$uh=~bl?p7P|VUGQF8?loT(j$&c zVS~qG9Q)liVkai2x8BA6!?E9MD>mG`(5g(HY2%pdW3ziJ~-o^*EzPl-WqFRV{}&ascQ z5j!a{wRNpH!m+<;E4C-8^*;4I$Nui`u%IUmiDhhaZMX&fnb!`7jN8_iTJXQaTI4v# zhW#70fBD!Daun8E4I7Tx@!ar0Vi=zm%xU@At55yQX<-YBDM{h=S$TcGdiBYFd423e zc9=6`aq`-JZ)+G$&p)QbR zEU&&}TUkp@Xq~luj@_xP*bw+=Rcuo@_9e+1x0(+8LjR9NcbLi9BC_+!NyY;@j zgk!_KEpYANUwlVQxCq(KH`t$46|Ry7ufPA_;SWR%?1XjpmArPid**+6x% zL2cBUq(9@VU(T^%H_w`8TJwK5l5JR(sI9IVR9aD71{eFm(hY>L!{?ipt2u#*ZD#&Y zbjRyBc5)lBJxS@U&lzsw*r{#APE1K|HQ;Wk=h*3ghqa94p#IS)yN%N_H%`yP?8}|JzM=o5HxtJ2ZcaeP-!JDdz8~V%X8j#jJ$zKj;=!h{+V}F>bN&vg zhu5AT@F>IMBu{bzhW}MF=+JPNj| zn-GQdgg1Eg?}^WGxRQ}aeNzn$kf&s94sGl==?UeY+^#|E4h}> zIQGQ9zqdEWbi#T&+>QXd=Ecc>$FLUO+r!=kkJE&P<-X&zOl_-_J?_?BgJT?f`aia0 zQ~(DMtKp`^lh?E@zjI1v{u`05(5APFoDi>9fB4_&)BoqqF=PGgns>f;C(H&|Eu5#q ze{%2&HI!C`6Hxp&2MNL&(#7lawYA?QdRldRtsOY_oVH?zEj>jZ)2yd(>{72jubBe= zB>|Pz!VcD0PQko3a+l;uZq*yG_Tt#(fBTY5nEv(Swffu0QDRD3s|&2wK^*(sHex4v zB5wl>^~d&Tv!Wd@fsI- z^@_i!*8~qH4Qd`5hcn_l>qnT6ZXLmiSkgw3dXidS`LmAU*h~MFp*l>|6F4Qy{=x8G zm|>sH>!<(iX|%xF`=H>9FlTH~<1{dg_ZhtIw*R=X$Az^=C9nJ9Hu43VTUuQSu-0!^4=6>p&8h6d|R)|-Vm z>n1ARNa0F{F;u+yUlqt4wd0FdyG<5gzklk|X-hmF^V;=XX!iCBW)*aTJ)?HRO zeF3!BQL&zi4Gq>itaoy`Y^HECfWfw>U zwEuZ4T)y0b_8+po#O1S-!o`%Pe3;(!JZsf6J4`y$J&8e}H?4;w)A^qDeU5TF74Hb5 zEMK+i={r_(!oW-fVLr2d-6B0ltVcQ0T~xd~h~(}4c>Tui&E)oz^*07|%=)wS7wfN7 zyqAi*sdyh1?{BdFZavO{9-!ib|9ZoFHMF?%v6C6F*=#B>02yQ66AnYhm|VyfGu#;2 zVAE{65NC^`;=@#Ygthylh8vn?<*xjTIzGt->P~b+ZVz`t3ZzpBHnlCr)|E*lQdh8b zvvubZ*-OR8f})+JTRxwKn^D%=)*pbHtE6p!EuN$7qv8`ml;sKgtB<5}%2HE<$5d@e zHaLLWU`w{8*ivn2RQwMWpQ7T^RD7nvHrO@1+>2D)&-gfCHrDdtIZq!v&%^_t1@K@QC=_p! zZ8~eJNMn+1hHWMn@*yg|6cn}HJPz~<6<-Yktz7S2J?>DT zW4Z$!(^h4J1YixeYFmx1);6DtuT$|2D!xg@w;F5ulEp9*mwJQt=~(_c3qx%N~2N|0Le-Kp9x$gv8Kxud{7!QOMhDaB&s$MLwnCXTj$3 zp7F%`pOTt0d%F!Tmx*9K?zQa(!tSTy7gYR`5%v|g9vf?3e1jX&WDiqt*z_Dq*rT?6 zEfV&G?MY795h@;SBJ517rF4CB!k&lxdwn+BUVwg|3OyhC{kLYSvcFBoh6u)cxkWqZt_MYv1 z8yu7E zyJpwzE{X}o62&sbmIiw}dwU_y-hpB(#WrX*Z2wnH_KNvi_S}=)*mapkC#QnX92BoT z*4_(PiD+W&z3ry~D{!b*q1ee-QMonf{n74kehIM#o-mcO53(nGXIKfx0) zNA~OOaM^w2@!!7DzKH|%qqu()&>3{c_bPAoka5_)%?>FmBYWodUH02JQar^2n~*fo zdDnEV*Ph^jZok+5AOJP*91qza22njqaRS9|CMq~mZhFXha#ar#B{hjTT}fe6A^Q{d zXBb_PoG$yb_UAZVNfakH(ba3wC6_b=g&*i3hwQI0QAM)c_SfxiaG+F*;o3tkO z7$MHlnc|TYpT$Hos>kqraz`eamN7Lo1*{kBr4Jn!9HSh0fE&>{aEy0M0Ner!*Qnzu40o!D zyP|5yXQNjGZVD5d8&1Zu7>+xMy$PBg$213AvEJaA?wH}2>6k_FbP89S!}aHQR)gbg zMBrGOHybe> ziyg}VshP=h7!C^ZT~4u&;@M2Tb9lSm(b4H$IDJW48YIthGe;RZP-+^?HItgCyU1}F zU`8}oj>{ca0504HQcCeT3>UHrGJUw|cw(pJCZC>UW=i3A$f)C3?=WMCkwOiQn;Z~B zWNKedaYc~fS^96om3Gbg2X6OYsDQ7mmjra3N$Ql&2lf z09DUXyny0`j4HS)5+t@fec86-gc&n4bO7Uj`clyQbaygq8FzY+yn~KcTWpQj9ItZ< zmr#6OkiwN4#y+#o!F46X?ROk@d<002_Z;s#K5%?U@%a=lqu8LBHaI?Zd;(N{MlrO* zaz^Eff7R5_KJm)k-=4==a3>{!aWN;_iA`ep&T*_ovHa}#g^LBeqYFdCQh0^?-DYA@ zkRk(8#4wm*QLG&4B8t}pk!I;Pc5pp#vTiDx(w>nNNjH^fr2_}LgyKtsK;EH!f4Of3 zCn>}uQo1TVT4GL#Q+f(9KfEdz}0aP`nXb| z_yPD_iZ@YQ$8hU;AJ3S%{`%{tFG))GK%=BX-jS(G(wY0!q{qqv|1S<^{<1|+6)fi3nh0(;#8}dqf(89kWsPDk zIz@`HD_1Cd(FyOQIArla6OUKD5pfAiS+AIbMkN1Rxk-URLjiH$PVpT~GG5 zR321d+)y5&csIrOG1~6uDt2>fZq54~3F7e(fJh7t$1D4krK5{cmPr6)534WnvkyiIvkd5f|0 zn)15xhVmxGk5jyl;wLD6vO#%Uc?Z}zO!0pxeu}a4^uNlEw_E3d9hP&&PT^tLF!x3I zTsZ=~M4SmKN0o25+B{1!tV}dc;JiI=>$7c$+1MeAcgiv4cK~W`e~&9Cgg7UJ++Lvg zMJAB_TxE8R>-ugFkaHT#(4GJp+F_EK1l~)q%Q-DhxZ<`sqSNVA0a2&;AjO9m;!7Oy zj_CcD9htEtF`b2~+;EZwJiw%MH+$0r+QA7~9wPJW?BeXo`F(}rrd0xOzlpyV*EQOP zrp04tPiNnVFEW)1R30?1WW;%xhqBF~x?aXoJQv4pp?^FB% z#UC~}M>t0U>L`joqWEKm`pLhlre#<4ev-E1GKQ98gGn-&-=?);=R_wYSBN~AIHx;j z05h{F1}E=x#>^L{i2P-XSFf)#B@Uq|W|fk|^sB_l7K|d!wVdZT=K*9n#a~hUHG@22 zLe8>ZF@AZ*j3u!24hGJhPihi4woNKl?OX`B5xbOgk#jLuv2Q5;wy8_?e{0)) zmztD@tTQ{Qb5)B#7dlsSpzkUEp$Vw>x8IainLxm7z@$4bcS3T67C61exsC(=2uH#+M8DB{@QtamnWpkFBdH3+nFL%ZJl2Jw~+@z|ZWI@xB0 zX6C|qhZ8m`IANUno#Nw6@F%#sZ(MwJ(m|7+v?SJhl9NIwU_%ie2Xl;;CzuI5lW;G7CjX`Pc&!o73Z6P6j{ICa=y)x zERb+NSDiG=N8(zNj74j-2mkN;(Aj zo~1prrRX}YCQZge?WV>7P()8u?Wy(xDo>*%hLTQ<%FZU0{<3RcseZ*oN`*ZeFtuj8 zZGxR#jaNMY8ByWXL^TN@AzMWkO1d)0ZYHERs(BI*!p6DJZMvspC0N93>E24+Ld5YHRH zi0o9Vvs5o|Sx8B5N={>3_TgN1{~>R{oxvsm!G(nh)j4VzKt{BVYPnj$iR(v6NN~O1 z`PcY+aNwI8r<%1A}a?$o*Y-K{1iwe0qx`uO?oX*A* z)(=u(P8tB+sMfQq{&!1o3pd=6{BfPypl+rlm69{y{#bsMy}C^W_rG468qvM;EBO)Z2`ulnkK+qUK)x&+WkbliU0LV8+Hp0|7JW@pGQ*a^U#<0HwQCSjwnZ z?^EwrAE4w+N`_K0j8Xcq`Us;mgObdDoKhA807^>=9{Y9X*8xhOR9Pkz^*@wkZ&IJ8 zBsc83UX^D;A#j58FTcxmpn3bRnOY%0%mEcvTDGVM)kEq_>dWdY>Z_Ctr(^^rBPltH zl2Me5-lD#)zM;OUzNNmczC#J<*jP#mD49sfBuZv6sYc2bAIL-xSqsjAyr^t%x$lJs(ud5FU&W3ZBoCWWL#rDFZFB4{i_~P zk5ZCH$%J4kFZDb1$Iy&gSXGZ1-%&E&fSkU*VFLRXXw2W#6X8WQ#ERy#qN~l40%Yss zoHq%h@o7!gEFqWGYj$DpCe1;~jcSD$xLH%^R)FXavH0h8kUMd>#4;HeYR=6wBFijS|6>i z)=%rN!DZTKQ&L1p2_>^BnM=tzl$23Yu}vGO4bl=cx8~6jwInT>l1fSzP_l#)7)w`C zvWAk&DY+`FV{80wDgvk5Jb_zM;96z4e>*!VEytajn-!mvnwc4&l#`JgpO%xI8lRn( zkdc-EzDsU)O2|n|jbB7X;FQ|QK;ZPGW+tV?XQyPP#V2KCr^RPvWM;%?Cwe@&;Atdg zWo3l|Wt%(42^>8;3CNR~=t;={iqg}wJ@HAY=?U=}sh;HcjP&H3#N4!m^z5XhP#}Kc z6M=JPCjn*WB&4L~wA^^NCnq&NDIqZ@K0P%zB|gWKkmOF!%!L!)VL<$zCIV-}P6A>w$WBeni1(yq zC&ee_W+ug_Wo75Y!-fKwB&Fu2C1z%ZQp7K1B5)AwB%lP3hsh!pM4Sw)rQ{^WXC$V& z21(5!ty-&rT*0zC>+^*d+d2IebxS+l;Q^Ax_F4-O0&Y8gsmF$^%ZHKl?SPSV@*}DKI zw`+GcadHU`~^K-KdoxvZ(`PoQc&r0UPLFPp0Vijpe=oE>HG-%zqP68seHSOC79k}JdDL%@I2 zjyHjypycXCa9sp&9UA$XNZ>PddjQ-|$+{N6byau4sH$s>o%NJlSEonm?I?j+#SKh+ zECnkhR46U>1v(<+5et5n0V$>-8B=jhZ550p=_T`PO3bp2$@B&n7nh_J!s(Ktq}gzD zwb;>Zee0<0ic;B{vyv zmU@(>4d$7hnFN4leF!D@Py+J`(DA*LJV7CY zA$gt>(8-r6d5w~{C^;N9+Uvvk*t+R|;A#dvhtpF3?`B79${wMg#R=N{F9|2~Xr4Zf z)3WuSymTP+oTy&F3E2L>kxEaW%E`I)pS?CopT(=)`43%Br5E%1Zu>i$y`{@G!}M-0 zC*Y31qYt$4N;1MP-$6@59ABMZ>PYVXZ;#6cPb~*uv~YZx&+zmbeF02j^;#Xgt9vQg zU8gV97g2H_CHETxCN5x^2q(?;mCl)46F2OFJ?5-7ZrJkM%@={e!_b#A49YMbG%;4_ zD=8%YB@YKM;)Y$avGL&x`HR5A7weauM8M_x6_h+m$sRV54%WHiZ1efRW7p{G*<X!`7I8 z1Ji!}R(%(Hcn5nJ{3m$$HXR1EXDNBE>EU3_tHK|?SHGVigKkkFkdjnh!sr1Nnz2d8ze>pVMDFspkDU45+VA^6DSS`4#Dh6L?o8~O^boFxersP{nAYk@AgwTiS9ALuW*k+!lYk(^u5{TR7 zaV1jnBZV};eM(QbA+{RY zX-ZFj5sR2sPwiRAd~5i)pl6N0GD<+JHtw`oHNEpGU3&KF4||Cx_N=HaD?4PfI~1on zC2%ZbQqSTt$nQ2|Y<@;fO;u@8ZH=!QbWbtx)co4wVxOhfRb7MGJn-eUAuL+$DZ0F4nAi|;-S{rxn+fO zs^LBJ&f|vl=8|(cb;Dv)?=((j1w1o_zw|K- zR##o0egMm_aXvI4-ac?p0#rYlO*4QglZ^bz!eU=$f}mr=4sf2t0DX0ye(*jy1qx=D z7BjtvE>f4wK1_rAKchl~Qo>Hcmz!_&2RQdfi1`@1-OXw`b z3GsqQNELE~QNjdax=!{!p;lNXtP(C0t`jy0HwhbsdSSD$RoE`vF5D;V6`m3f z2(Q7ZF8`!jw(?tT7xb{b?9!i z8$HAYEF%6_7~1%^@ed@>Bs8G!LtL2<;D;`IhU-jMlxvtP!|b@fP)JQpV3G>S1%Kb- z%5r79a$LFaJDU=)M<=KxP)TGj2rQL*^&WrR^9tZXzg7!DkO2yv_Qy!9P=3v#veru$ zl(MNHl#Cl@<(waMaq|Q~qB1w9I zzoc+cY++4o;^4%@*t{|N=iC}j6_(usnN44WJf;rFlez_RnLY+tP2s%mFf$qGBuI~K zW)$6T=JB+eX*~zC6x$G*3D+9e9M{~5`880fsW_d49zuU1Sr{w~wU4pq+t0Sog=1Qa z?aS=czTCdrzQ%s3{c<>)^Su2H`xo}F>__0R$#?c2>_6Fmw*Tr-94Z{NXz%FYh;ejw zba8ZZ#5xKcm5!?&w>#d2y}4bLG$luwqD)g}D6^Eal_I4?nXSxK&Vk*L%M_|CS5_() z!p6f(l*^U1%2mqE%ALv{<){-oJ+Pstz*+8G<}{p_I_sPb&MnSu&Rd*2oV%R2JMVPf z?Y!6dtn+#2i_QbiL(Z3-uR33MzUh41`L6Rl=MSo?o~jN~2dfj*QgxYHr|wiAfVHXWd3^Z{G>P`^~aR)5t5P1J~H(;S);78JTdEPb$+rH$4mLx8hftJ0QetF=qD z%eA%II&Hmny|zKyrR|1D(u>+F+B@1O+V48iU3z=HgWgF$MenNT=o9pb`ec2YK0}|S z7weV!0)3IbL|>|}&{yfJ^)>n>`hEI-{ZsuL{d@gK{g_LFL92r+#?{%?#nsIf>+0ch zyAoZ=u2fgLYY6m}p{@+qSl2XHt?MG!X4m7c7hPYtjz!@pDasOMi*iIcqhg{uM|Fwn z78M)SBdTZAz^IW?lcUa$+7fkJ)csKpwja@ceEZ_|=d`bGe_s2g?bo!wy8ZU{54C@` z{X6Y{Y5!aM? z1dW1rfyP05K>I)kKnFpGKu195K(|1j+-JLcxdZN*?pxgn?i_cXJKtUCE_QEs?{M#S z?{)8UH@chMt?q;FJKS%1O!o-(DECl!{N{1P-$=9M62uLeC=463&@gBmv=CYat%24- z8=y_l7N`u`3+;!RpjPN0bO-cz=wawt=mqE{=vC--=uPMw=x69R=nvQ=m=kOPY$JFSJ*PSBY1Zm()w) zwa@EMuajP_hWm__X?Pe0V+rAF)rnPq)tzp9enw`nvg| zd^h?w`?mUWeA|45z7k)lZ=bKtcf@y>?{43Hz6X4d`(E3hfbzVAcd=f1Ce-}=7y z{m1tsVhUm*VhLh7!WrR)a7XwdPzW?42oZ`{jaY+7LZl)x5Lt+9L@A;iQHj`!s72Hx z_y{FJgU};-5Pb+E!hsk;j3Ra+4kOMZE+MWWZXj+W?jar`o*@1~d`5ghd_{am{Pc73 zo9Z{+&)F}+Z<8O-&*=B3-)p~5exLomAf1p?kkgQhk$y-N5{(Q(h9bj}QOFo%9C8gZ z37Lw_KyE=+BkPb2$R=b9l7J*3DM%WUiDV*MTV^|mwMvReSG#E2x2s4V=k2!$(9W#MBfjNb_jJblj zj(LE2h zD)|TC974d$5tO$eQWjKtAB(~4xbu6BYbxF z+;Hb`*KklcIGi7@4DSl>4et*(hYy9@!$-r%!gq&X5C0P376Fg&iSUa+MTAC#MTAFW zMHEMrM^r{^ji`@kjA)4injBacKL zi=2o&6?r!DeB`UBNl{)=(NU>U8BtkLIZ=60`BC^NMwB>89i@xvjxt0UqbyM)QM;mc zN9~LHE$UFzk*G6KH?WhiF4$OXGIj&D0$YjQg58R3!cwseEDOuU^07j!7^}wiV~4T( zu=}wGum`cHu$Qsdus5-Hu=lagv9GXivG1`Tv7e)tM0-c4MOQ>OMdPDM(bQ;0bZc~X zv?Y3H^r7gZ(Z{1tM4yg67kx4MUi8E0C(+NMUq-)){yX|Z^pBX?G3c0-n8p}Uj3TBl z#uj6bam0+q?2kDTb1Y^e=2Xm?nCmf*V&2949rHfspP28lvt#eX-j970`!x1>?5o(f zvF~F)#{L`oHTDN?GHxnv25vTP9&RCS32r&g8Rv%cz(H_uoDa?qhr*$8LAX#{I4%ko zgNwth!6o5RaT&NQTn;V|SAZ+RmEy{AmAI|ATHH2V6Aq6f;ixzUj)mjm_&5=+9oLCd z;M6!Bt{Z2-8F3ceAZ`d}$Bp8~aC>n3aR+gSaev_c#GS;Q!JWrl!d=DPz}?2(!#%`3 z!9Byh#J$1&jr#}p8TTLVd)%bBDRI-|X2s2oTM)N6Zdu&3xR-Hn;{J~NC+>6He{tV| zNx&3fIxq{E3oHN@1IvJwfGgk*cmgoM8$bZ7fB+y62mw|Dkw7$n`^DrEffOJeSPNtW z>w$b=BTxdA0Tn%cAGF7N<&4EzPW0A2&{fDgbY;0y2#_!;jM zKP`S{{G9mt@r&Y@#;=HXi3i1l<00|>@#y%#_>g!;yg0r+z9U{9e=Gi3{EPTk@o(1* zt{GpmXU)Dfza>mdSe&plVR?dc0wIBuz)RpKh!QR(+)sFz@HpYG#0`lRiCYr4Ce|j7 zB_2uqBk_3RiKInI?n&SzND@3rpEQuPJ!vS(p7c3+YV!2tnaOjKw+8bTC9F$Y zm$EK>oobzNoq3&g-S&0w*Zs_%oINFbdUkqtLH5S%;_OY?JF@p=@5?@r{dv=cxZs*RhJp=#a_jA z#gt-NF{7AOe6sjj@r~kJ#dk}*N&-uQOF~P+OGZn6FF9OtwB&fHZ)r$rSZR1^RH?Sq zQaVt&y>xh!%O>wlzMK3up*D4H>e*!2)W6AGwxGn`gp>nk&ry)OH& z>|5E7^2y~%<+kyM-Kx4%b$@Hx*8Hu7TZ^`qZauv9?AG&JFK)e34XQ>| zBdbx>=xS0mubN*itd>-Nt(jRfyJl|9f|~U;FeV*{h1wSnEh zYdG6*tKm+=y@rR4h{n*y)r}F2*hWj^&c?CE-HrR2oSGIiEoxfQw7jXUNzv5ZWN0!r zS(*l$Mw`Z(_B8ElI?!~m=|=OU=K0Mb&C$(i&H2q`%@xhRoapBIW@0m?ncmE7W;Jt~ zCC%z)Q}b}Mqj_iZc=O)oBhAN}Cz?+-pJ_hV{Gw%1i$_aBOJ+-c%jTBG7D@}frL~3A z($><^B5zT(Xj*hFT`jv??zX(bFU5oKUid(KBp!>8!N=j_@#*-r_-uSGegnP$UxjbP zQ}JB946n!c;QR0>&e-I`S zoCtFW%LovH9|1)`6M_h#gcw2`VGSXXkW5G=oASxHutwPZcn zM7ELllm8(9Nj^zFLq1QwLB37CM}9zlM1De9HpG6+@Rc|+@aj3Jfys&yrKL}`9S$Z`IkDGI-9zL3a0u}kyL*w zh8j%8Qe&wAbqzIVGz4uG&7X#$1=B)lv9x4b zHm!(OO>3qRXk;3V#-s^oVw#lJNt4r*GzaY(?FoGzeL3BOj-&_E!{`xoEIpQeF8u-h zG5sn1IsGMLI%5?hf>Fk(VYD#l3=u=YP&0IlZiay|$QWYS86%8cjB&>Aj0wgC#$Co= zj2Dd8jCYI=jBkvezg+*RzfAa9%*9MsCX9(@hBG6XSY`|p$4p_SGuJZLF>`)#rV?fq z6VGHYTbXPom)XYbV9J>)riQ6!b~7zZJ97{781pRi0`oHS8uKRe5%VeYIrAm+HS;a= zS0Y^Nf>xJSw^sL7a4V!0*6QDiX$@`-Z4GaYYK?A9Y)x)`-};p`leL)T!SZ4Gu}~~D zD~J`viebgE;#rBTWY#)XA!{?MkwszAS*tUp;N zS!Y=1SvOd>S@&2ESdUmwSZ`SWvZt}Fo9F z4eSE;Ms_iK3%i^61>yPIuc53+~YcJ?THKl>p2F#9O`82eB5dG-zV zQ}$c-d-g~6zwED^shk;{*_^qY`J9CuXAXqp&k5s1aIlyG8MUSE{Yq;P2gs8H*!n3W!wsG6}OSw z!X8&ZR2)uySWzbAa{ss=Z@;;z2d#)z2|-9{b-xqHl=NP+sw8_ZSHNpZ6R&Z zZMe4hw#2rSw(Pd`ZTW45ZAEP*ZIrhDHb>j_wg+u5+CK9q@u%>o^Jnqr@|W>f@?H5L zz6alvkKhOKWBJMaRDL=?lb^*e;1}^r`DOeH{uX`%pT_6&mHZxlAK%2c^0)JM^2hmm z`TO|?`G@!?_!s%N_|N!%^Z((0=Ksh4E|@NuC73IiFIXs8EN~UT1ZY9HAW9G;h!d<4 zWC*eZIfC_qd_kdLv!G5u5O4$%fmF~bPzY3lUO~UWEU*d&1v>=01iuMR3N8t*2(Afk z3T_LY2%ZUE3SJA|3Em673TFwI3!y@!&|ioV1`ET4u|hzYAWRab2-AeQ!V+Pv5HBPN zsX~U3B@_wUg`GmVP$kp|cM5L`pNSTVoJCO4Dp9y7PP9gpBuW)!i1I`Qq9Rd=Xp^X1 zR4XEgI3kItLnIfeL|Re5$SfKVZ5IuRY@*$wL!vXHtD+mC+oF4-hoYCFH=@5qA4DHT zpT(2Jv&AdKU@=teCH55~#lhk*afCQZ93#ewQ^f1VW#VmOl9(cK#m~eq#2>`pB(o%oCCel$C9V>8iMIqH zStaq8pe2ElNJ+dTOR`Z?EGd$!^JB$$rT} z$sx%J$!WP1J z+imT8+K;rKYro!ptNm{KgZ9VmuiM|Xe`x>M{<-~&)JeKf3X*zBeWggLzZ4^lkYc5= z(m3fFX`*zkG+$aK-6kbTsZxfNCFM%nrJYiRR3+6&byA~rNV->gM0!j*Aw4BME4?PY zDZL}TCw(Y=EPXBgB>mYjw_{ny$`02K_YThvM8~R*fDTMYa7SoIRtKr0t;622r{j-~ zvmLiO9(VlJ@uK5($GeU%9p5^Bc24e`+Bv<`voo$G+{I(K%Cckb;x z(0QzLqVrVena*>a7dmftKI(ke`K9w~=l9N^vdOa9vU#$FvchB8Z;qs&v5D$A9X$|_~GvQ~*#GL&MaQmIku zl|9Nn<#y$;(xDtx?oy5`e^*W@uPE;-A1EIy|5CnCeo%f=eo=l^epmif%~UN`d8m9; z2o+L=QU$11t0Gm=s#q1ETBFKP<*7Kb*ux>Dqc*7f)n>I-?NIMjkE{2n_p5(XA6K7O z-%vkQzg53ie^mdg{;HX(nW34jnX6f#S)_5%_-H~jahg<3h9*msqsh~hYRWa0nkr4T zrdEU3Ff?L~Qlru6H9eX>&34VO#-SP2jA?dj4rxwkE^6*+o@ric-e~^T{G<7b<@JN7;S_WtButH+5~N;cAYj?o2Sj!7HT(Z>$DUtN86?qY9-nZtybHm z?bY^ajaswTrro1Grah~@puMcUroE|sqR>u=9YVKC z7ouCOi_~FtF*=+sMVF)7q^s7|=^Av+I)aX=W9xW2zD}qU>y)})-H>ifw@0^McTjg& zcT#socV2fqYu@eTROJ{+|B7t|?t}yPUhgUC=JCF5j+zE=*T& zS6Ekg*QPE(m#J&GYrN}d*YU0sU8lRwbzSJX+jYO|Vb_!HxbDpEjol^PW!)9sRoyk+ z_1)BNMmMXQ+s*G5b+>nSbRX(|+2hg^+q11l+cVa4q~}=ApFJmg&h(t?x!!Z9=YG$l zo+mx;dp`Gk>G|3_sn@A@TJMbBg}tC&NH46{tJkl0Rc}BqrZ=KDy|fXBEZN06%oZhxxVXwINMehg0B*QerOv4<*LcNqtUzQ~PH0 zMfN52rSzrsW%hCVWPOT0RiC!+Y~QWEJAL>19`>*3hxL2)`}F(um-N^6*Y`K{H}?8W?`;5npr;OK(_l;jnlT6Mge^aC>+JrO3n-WdQrgf%V(*{$4X`89Z)MCP$NG7UD zU=o|OrY=*jso!KaSxrYxr%mTf7fqK<&rPpPZ%l7Z?@b@gPUfZN6=oMR)a++QnbGEO zbD}xJoNF#KSD35JHRgJAgPClmnVDvmS#8#tyUg8YgV|_ym`BZH<|F1~<_YsD^I7wG z^9}QD^F8we^C$Bc^H=jX^G}PDWr1apWvRu}0<(Bq5SCRIe@lub+p^x0Zz;4iSeh+( z3&BFR&@4iW*dn!bS$Zw~7PDo*vfZ-NGH%&x*>5>-xn#LwxoWv#xovrFd1d)x`DXcP zb+S&g&af`DF0n4RuC%VQ23RrHKx>F~wRMd($(m~|uohWMtrgZPYmK$e%ChRLSFN|L z&#kYlZ>{gGAFZDUrVT6@a2p672pfnPzz)O?00RjF$pdKvnFH$vatAgHG!C>35C2TyE|-JZTZ zb9>hIob5-ppWA+6`=#wycdXq}w4-FlrX8DiOzgO_{#Yl>2Ps?9lj2XBiaEt5**2n3`dqD$FbhA(NW>3cTgRz z4vwSEA$CX|GKa#Ua~K^%jxom`$3Dja#|g)I$0f&A#|_7Q$0Ns6$1}%^5zt83$l8(o zk+PABk*blJk@}H_5&8&sgg+u0X&+IJXh!rSJtKyZ6C}cX>%4quN z+R?nxg3+SU($TWfn$h}E(kO3KGTJdJA61QZj~Ygeqn6Qu(UH+Tqld>l$6#aVG3;3E z7%-MFmOPd=mN~X@tYoZgtYWNctY)l!tYJ(wwtwu&_=543m&o|3AkM{2x91 B$y5LU diff --git a/ios/iosremote/iosremote/Communication/Server.h b/ios/iosremote/iosremote/Communication/Server.h index 0fb6c9df0c74..0e499bd96102 100644 --- a/ios/iosremote/iosremote/Communication/Server.h +++ b/ios/iosremote/iosremote/Communication/Server.h @@ -21,3 +21,9 @@ typedef enum protocol {NETWORK} Protocol_t; ofName:(NSString*) name; @end + +@interface NSString (IPValidation) + +- (BOOL)isValidIPAddress; + +@end \ No newline at end of file diff --git a/ios/iosremote/iosremote/Communication/Server.m b/ios/iosremote/iosremote/Communication/Server.m index 71547c77108e..2e2c0a403b8b 100644 --- a/ios/iosremote/iosremote/Communication/Server.m +++ b/ios/iosremote/iosremote/Communication/Server.m @@ -7,13 +7,12 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. #import "Server.h" +#import @interface Server() @end - - @implementation Server @@ -54,3 +53,23 @@ } @end + + +@implementation NSString (IPValidation) + +- (BOOL)isValidIPAddress +{ + const char *utf8 = [self UTF8String]; + int success; + + struct in_addr dst; + success = inet_pton(AF_INET, utf8, &dst); + if (success != 1) { + struct in6_addr dst6; + success = inet_pton(AF_INET6, utf8, &dst6); + } + + return success; +} + +@end diff --git a/ios/iosremote/iosremote/newServer_vc.m b/ios/iosremote/iosremote/newServer_vc.m index 22ed5a26317d..9681638ebc22 100644 --- a/ios/iosremote/iosremote/newServer_vc.m +++ b/ios/iosremote/iosremote/newServer_vc.m @@ -22,12 +22,20 @@ - (IBAction)save:(id)sender { NSString *serverName = [self.nameCell.textField text]; NSString *serverAddr = [self.addrCell.textField text]; - if (!serverName) { - serverName = @"Computer"; + if ([serverAddr isValidIPAddress]) { + if (!serverName) + serverName = @"Computer"; + NSLog(@"New server name:%@ ip:%@", serverName, serverAddr); + [self.comManager addServersWithName:serverName AtAddress:serverAddr]; + [self.navigationController popViewControllerAnimated:YES]; + } else { + UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Invalid IP Address" + message:@"A valid IP address should be like this: \"192.168.1.1\"" + delegate:nil + cancelButtonTitle:@"OK" + otherButtonTitles:nil]; + [message show]; } - NSLog(@"New server name:%@ ip:%@", serverName, serverAddr); - [self.comManager addServersWithName:serverName AtAddress:serverAddr]; - [self.navigationController popViewControllerAnimated:YES]; } - (BOOL)isModal