¾Æ. º¸¾È ó¸®

¿©±â±îÁö ÀÛ¾÷ÇÑ ÈÄ FTP ±â´ÉÀ» Å×½ºÆ®Çغ¸¸é ¾ÆÁÖ Àß µ¿ÀÛÇÑ´Ù. ³×Æ®¿öÅ©»óÀÇ ÆÄÀÏÀ» Àß Àоî¿À°í ÆíÁý °á°úµµ Àß ÀúÀåµÇ¸ç ¼Óµµ°¡ Á» ´À¸± »Ó ·ÎÄà ÆÄÀÏÀ» ÆíÁýÇÏ´Â °Í°ú Å« Â÷À̾øÀÌ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ±â´ÉÀûÀ¸·Î´Â Å« ¹®Á¦°¡ ¾øÁö¸¸ ¾ÆÁÖ ½É°¢ÇÑ ¹®Á¦°¡ ÀÖ´Ù. ÀÚ½ÅÀÌ ¾Ë°í ÀÖ´Â FTP ¼­¹ö¿¡ Á¢¼ÓÇؼ­ ÆÄÀÏ Çϳª¸¦ Àо ÈÄ MRU¸¦ ¿­¾îº¸ÀÚ. MRU´Â ÃÖ±Ù ¿¬ ÆÄÀÏÀÇ ¸ñ·ÏÀ» À¯ÁöÇϸç FTP °æ·Î¿¡´Â ÆÄÀÏÀ» ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´Â ¸ðµç Á¤º¸°¡ °í½º¶õÈ÷ µé¾îÀÖ´Ù.

±×·¡¼­ ¿ä·¸°Ô º¸ÀδÙ. Á¢¼ÓÁ¤º¸°¡ ÈÍÈ÷ ´Ù µå·¯³ª ÀÖ´Â °ÍÀÌ´Ù. ¶ÇÇÑ ´ç±ÙÀº ÆíÁýÁßÀÎ ÆÄÀÏÀÇ °æ·Î¸¦ ŸÀÌƲ¹Ù¿¡ º¸¿©Áִµ¥, FTP ÆÄÀÏÀÇ °æ·Î¿¡ Á¢¼ÓÁ¤º¸°¡ Ç¥½ÃµÇ±â ¶§¹®¿¡ ´©±¸¿¡°Ô³ª Á¢¼ÓÁ¤º¸°¡ °ø°³µÇ´Â ¼ÀÀÌ´Ù. ¸¸¾à »ç¹«½Ç¿¡¼­ FTP ¼­¹ö¿¡ Á¢¼ÓÇÏ¿© ¾ÆÁÖ Áß¿äÇÑ ÆÄÀÏÀ» ÆíÁýÇÏ°í ÀÖ´Ù°í Çغ¸ÀÚ. »ç¹«½Ç¿¡ º¸Çè ¾ÆÁܸ¶³ª ±¸µÎ ¹ÌÈ­¿øÀÌ µ¹¾Æ´Ù´Ï´Ù°¡ ¿ì¿¬È÷ ³» ¸ð´ÏÅ͸¦ ¾î±ú ³Ñ¾î·Î »ì¦ º¸°í´Â ¡®À½À½. ±×·¸´Ü ¸»ÀÌÁö?¡¯ÇÏ°í µ¹¾Æ°£ ÈÄ FTP ¼­¹ö¸¦ ÇØÅ·ÇÑ´Ù¸é Å«ÀÏÀÌ ¾Æ´Ò ¼ö ¾ø´Ù.

FTP´Â ID¿Í ºñ¹Ð¹øÈ£¸¸ ¾Ë°í ÀÖÀ¸¸é ¿ÏÀüÈ÷ Àڱ⠰ÍÀÌ µÇ¸ç ¹«½¼ ÁþÀ» ÇϵçÁö ¸»¸± ¼ö°¡ ¾ø´Ù. ±×·¸´Ù°í ¸ð´ÏÅ͸¦ °¡¸®°í ÀÛ¾÷À» ÇÒ ¼öµµ ¾øÁö ¾ÊÀº°¡? ±¸µÎ ¹ÌÈ­¿øº¸´Ù ´õ °æ°èÇØ¾ß ÇÒ ´ë»óÀº ¹Ù·Î ³»ºÎ µ¿·áÀε¥ ŸÀÌƲ¹Ù³ª MRU°¡ ¹®Á¦°¡ ¾Æ´Ï¶ó ·¹Áö½ºÆ®¸®¸¦ µÚÁö¸é ±â¾ïµÇ¾î ÀÖ´Â ¸ðµç Á¢¼ÓÁ¤º¸¸¦ Àϸñ ¿ä¿¬ÇÏ°Ô º¼ ¼ö ÀÖÀ¸´Ï ÀÌ ¾ó¸¶³ª ¹«¼­¿î ÀÏÀΰ¡? ÀÌ·± »óȲÀ̸é Àá½Ã ÀÚ¸®¸¦ ºñ¿ì°í °í¹Î ÇؼÒÇÏ·¯ °¡±âµµ Èûµé °ÍÀÌ´Ù.

º¸¾È ±â´ÉÀº ¸ðµç ÇÁ·Î±×·¥¿¡ ÀÖ¾î ¾ÆÁÖ Áß¿äÇÑ ¹®Á¦ÀÌ´Ù. ´ç±ÙÀÌ ÀÌ ¹®Á¦¸¦ Á¦´ë·Î ÇØ°áÇÏÁö ¸øÇϸé ÅؽºÆ® ÆíÁý±â·Î¼­ÀÇ ±â´ÉÀÌ ¾Æ¹«¸® ÈǸ¢ÇÏ´Ù ÇÏ´õ¶óµµ ¿Ü¸é¹ÞÀ» ¼ö¹Û¿¡ ¾ø´Ù. ÀÏ´Ü Á¢¼ÓÁ¤º¸¸¦ ¼û°Ü¼­ ¹ÛÀ¸·Î µå·¯³ªÁö ¾Êµµ·Ï ¼öÁ¤Çغ¸ÀÚ. FTP °æ·Î¿¡¼­ Á¢¼ÓÁ¤º¸¸¦ »©°í ÆÄÀÏ À̸§¸¸ ÃßÃâÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇ쵂 ÀÌ ÇÔ¼ö´Â ÇÁ·ÎÁ§Æ®ÀÇ ¸ðµç °÷¿¡¼­ »ç¿ëµÇ¹Ç·Î Util.cpp¿¡ ÀÛ¼ºÇÑ´Ù.

 

void EncodePath(TCHAR *Path, TCHAR *EncPath)

{

     TCHAR Server[256];

     TCHAR User[32];

     TCHAR Pass[32];

     TCHAR *File;

     int Port;

 

     if (strnicmp(Path,"ftp",3) == 0) {

          ParseFtpInfo(Path,Server,User,Pass,File,Port);

          wsprintf(EncPath,"ftp://%s/%s",Server,File);

     } else {

          lstrcpy(EncPath,Path);

     }

}

 

ParseFtpInfo·Î Á¢¼ÓÁ¤º¸¸¦ ºÐ¼®ÇÑ ÈÄ Á¢¼Ó ¼­¹ö¿Í ÆÄÀÏÀÇ °æ·Î¸¸À¸·Î ´Ù½Ã °æ·Î¸¦ Á¶¸³ÇÏ¿© ID¿Í ºñ¹Ð ¹øÈ£´Â °æ·Î¿¡¼­ »èÁ¦ÇÏ¿´´Ù. ŸÀÌƲ¹Ù¿¡ Ç¥½ÃÇÒ °æ·Î´Â ÀÌ ÇÔ¼ö°¡ ¸¸µé¾î³½ °£·«È­µÈ °æ·Î·Î ´ëüÇÑ´Ù. ÆÄÀÏÀ» ¿©´Â ÇÔ¼ö¿Í ÀúÀå(¾÷·Îµå) ÇÔ¼ö¿¡ °æ·Î¸¦ Ç¥½ÃÇÏ´Â Äڵ尡 Àִµ¥ ÀÌ Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

BOOL OpenFileToChild(HWND hChild, TCHAR *Path)

{

    TCHAR EncPath[MAX_PATH];

     ....

     pSi->Ae.SetModified(FALSE);

     lstrcpy(pSi->NowFile,Path);

    EncodePath(Path,EncPath);

    SetWindowText(hChild,EncPath);

 

     return TRUE;

}

 

BOOL SaveAs(HWND hChild)

{

    TCHAR EncPath[MAX_PATH];

     ....

     Mru.AddMRU(OFN.lpstrFile);

     lstrcpy(pSi->NowFile,OFN.lpstrFile);

    EncodePath(pSi->NowFile,EncPath);

    SetWindowText(hChild,EncPath);

         

°æ·Î ¹®ÀÚ¿­À» ¹Ù·Î ŸÀÌƲ¹Ù¿¡ Ãâ·ÂÇÏÁö ¾Ê°í EncodePath ÇÔ¼ö·Î °£·«È­½ÃÄѼ­ Ãâ·ÂÇÏ¿´´Ù. ÀÌÁ¦ ŸÀÌƲ¹Ù¿¡´Â FTP Á¢¼ÓÁ¤º¸°¡ º¸ÀÌÁö ¾ÊÀ» °ÍÀÌ´Ù. ´Ù¿î·Îµå ´ëÈ­»óÀÚÀÇ ÆÄÀÏ¸íµµ °£·«È­ÇÏ¿© º¸¿©ÁÖµµ·Ï ¼öÁ¤ÇÑ´Ù.

 

int DgFtpDown(TCHAR *Path, TCHAR *&Text)

{

     TCHAR EncPath[MAX_PATH];

     ....

     EncodePath(Path,EncPath);

     wsprintf(Mes,"À§Ä¡ : %s",EncPath);

     SetDlgItemText(hDlgDown,IDC_STDOWN1,Mes);

 

BOOL DgFtpUp(TCHAR *Path, TCHAR *Text)

{

     TCHAR EncPath[MAX_PATH];

     ....

     EncodePath(Path,EncPath);

     wsprintf(Mes,"À§Ä¡ : %s",EncPath);

     SetDlgItemText(hDlgDown,IDC_STDOWN1,Mes);

 

´Ù¿î·Îµå¹Þ´Â Àá½Ã µ¿¾ÈÀÌ¶óµµ Á¢¼ÓÁ¤º¸´Â ¼û°Ü¾ß ÇÑ´Ù. MRUÀÇ ¸Þ´º ÅؽºÆ®¿¡µµ Á¢¼ÓÁ¤º¸¸¦ ¼û°Ü¾ß ÇÑ´Ù. ArrangeMenu ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

void CMru::ArrangeMenu()

{

     int i;

     TCHAR szItem[MAX_PATH+12];

     TCHAR EncPath[MAX_PATH];

 

     if (arMru.num) {

          while (DeleteMenu(hMenu,0,MF_BYPOSITION));

     }

 

     for (i=0;i<arMru.num;i++) {

          EncodePath(arMru.Get(i),EncPath);

          if (i < 9) {

              wsprintf(szItem,"&%c %s",i+1+¡¯0¡¯,EncPath);

          } else {

              wsprintf(szItem,"&%c %s",i-9+¡¯A¡¯,EncPath);

          }

          AppendMenu(hMenu,MF_STRING,MenuID+i,szItem);

     }

}

 

ŸÀÌƲ ¹Ù³ª MRUÀÇ FTP °æ·Î¿¡ Á¢¼ÓÁ¤º¸°¡ ³ªÅ¸³ªÁö ¾ÊÀ¸¹Ç·Î ÀÏ´Ü ±¸µÎ ¹ÌÈ­¿ø¿¡°Ô´Â Á¢¼ÓÁ¤º¸¸¦ µéÅ°Áö ¾Ê°Ô µÇ¾ú´Ù. ÇÏÁö¸¸ ´Ü¼øÈ÷ º¸¿©ÁÙ ¶§ Ãâ·ÂµÇ´Â ¹®ÀÚ¿­À» Á¶ÀÛÇßÀ» »ÓÀÌÁö ·¹Áö½ºÆ®¸®¿¡´Â ¿©ÀüÈ÷ ¿ÏÀüÇÑ Á¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´Ù. ÆÄÀÏÀ» ´Ù½Ã ´Ù¿î·Îµå¹ÞÀ» ¼ö ÀÖ¾î¾ß ÇϹǷΠÁ¢¼ÓÁ¤º¸ ÀÚü¸¦ ¾ø¾Ö¹ö¸± ¼ö´Â ¾øÀ¸¸ç °á±¹ ³²µéÀÌ ¾Ë¾Æº¸Áö ¸øÇÏ°Ô ¾Ïȣȭ¸¦ ÇÏ´Â ¼ö ¹Û¿¡ ¾ø´Ù. ¾Ïȣȭ¸¦ À§ÇØ ´ÙÀ½ ³× ÇÔ¼ö¸¦ Util.cpp¿¡ ÀÛ¼ºÇÑ´Ù.

 

void EncodeBinary(PBYTE buf, int Length, BOOL bEncode)

{

     int i;

     BYTE b;

     int Carry;

 

     for (i=0;i<Length;i++) {

          b=buf[i];

          if (bEncode == TRUE) {

              if (b >= 128) Carry = 1; else Carry = 0;

              b = b * 2 + Carry;

              b = b ^ 0xdb;

              if (b % 2 == 1) Carry = 128; else Carry = 0;

              b = b / 2 + Carry;

              b = b ^ 0xbd;

              buf[i] = b;

          } else {

              b = b ^ 0xbd;

              if (b >= 128) Carry = 1; else Carry = 0;

              b = b * 2 + Carry;

              b = b ^ 0xdb;

              if (b % 2 == 1) Carry = 128; else Carry = 0;

              b = b / 2 + Carry;

              buf[i] = b;

          }

     }

}

 

int BinaryToTextEnccode(PBYTE Src, int length, PBYTE Dest, BOOL bEncode)

{

     BYTE s1, s2, s3, s4, d1, d2, d3, d4;

     BYTE *buf;

     int si,di;

     int OriginalLen;

 

     if ((bEncode == FALSE) && (length < 12))

          return -3;

 

     if (bEncode) {

          buf=(PBYTE)malloc(length+8);

          memcpy(buf+6, Src, length);

          buf[0]=0x57;

          buf[1]=0xEC;

          buf[2]=0xFF;

          buf[3]=(length & 0xff0000) >> 16;

          buf[4]=(length & 0xff00) >> 8;

          buf[5]=(length & 0xff);

          buf[length+6]=0;

          buf[length+7]=0;

 

          for (si=0,di=0;si<length+6;si+=3,di+=4) {

              s1=buf[si];

              s2=buf[si+1];

              s3=buf[si+2];

              d1=(s1 >> 2) + 48;

              d2=(((s1 & 0x3) << 4) | (s2 >> 4)) + 48;

              d3=(((s2 & 0xf) << 2) | (s3 >> 6)) + 48;

              d4=(s3 & 0x3f) + 48;

              Dest[di]=d1;

              Dest[di+1]=d2;

              Dest[di+2]=d3;

              Dest[di+3]=d4;

          }

          Dest[di]=0;

          free(buf);

          return 0;

     } else {

          if ((Src[0] != ¡®E¡¯) || (Src[1] != ¡®n¡¯) || (Src[2] != ¡®c¡¯) || (Src[3] != ¡®o¡¯)) {

              return -1;

          }

          for (si=4,di=-3;si<length;si+=4,di+=3) {

              s1=Src[si]-48;

              s2=Src[si+1]-48;

              s3=Src[si+2]-48;

              s4=Src[si+3]-48;

              d1=(s1 << 2) | ((s2 & 0x30) >> 4);

              d2=(s2 << 4) | ((s3 & 0x3c) >> 2);

              d3=(s3 << 6) | (s4 & 0x3f);

 

              if (si==4) {

                   OriginalLen = (d1 << 16) + (d2 << 8) + d3;

                   if ((OriginalLen+2)/3*4+8 != length) {

                        return -2;

                   }

              } else {

                   Dest[di]=d1;

                   Dest[di+1]=d2;

                    Dest[di+2]=d3;

              }

          }

          return OriginalLen;

     }

}

 

void EncodeText(TCHAR *Text, TCHAR *EncText)

{

     int len;

     TCHAR *temp;

 

     len=lstrlen(Text)+1;

     temp=(TCHAR *)malloc(len);

     lstrcpy(temp,Text);

     EncodeBinary((PBYTE)temp,len,TRUE);

     BinaryToTextEnccode((PBYTE)temp,len,(PBYTE)EncText,TRUE);

     free(temp);

}

 

int DecodeText(TCHAR *EncText, TCHAR *Text)

{

     int len;

     len=BinaryToTextEnccode((PBYTE)EncText,lstrlen(EncText),(PBYTE)Text,FALSE);

     if (len < 0)

          return len;

     EncodeBinary((PBYTE)Text,len,FALSE);

     return 0;

}

 

¾ÆÁÖ ´Ü¼øÇÑ ¼öÁØÀÇ ¾Ïȣȭ ÇÔ¼öÀε¥ º¸¾È»óÀÇ ÀÌÀ¯·Î ÀÌ ÇÔ¼öµé¿¡ ´ëÇÑ »ó¼¼ÇÑ ºÐ¼®Àº ÇÏÁö ¾Ê´Â´Ù. °ü½É ÀÖÀ¸¸é Á÷Á¢ ºÐ¼®Çغ¸µÇ ±×·¡µµ ¸í»öÀÌ ¾Ïȣȭ ÇÔ¼öÀÎÁö¶ó ±×´ÙÁö ½±°Ô ºÐ¼®µÇÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ÄÚµå ÀÚü¸¸À¸·Î´Â ºÐ¼®ÇϱⰡ ¾î·Æ°í µð¹ö°ÅÀÇ µµ¿òÀ» Á» ¹ÞÀ¸¸é ¾ó¸¶µçÁö ºÐ¼®ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÇÔ¼öµéÀº 3³â Àü¿¡ ¸¸µé¾ú´Âµ¥ °¡²û ¾µ ÀÏÀÌ ÀÖ¾î ´Ù½Ã º¸¸é ¸¸µç »ç¶÷µµ Çò°¥¸°´Ù. ÀÌ ÇÔ¼öº¸´Ù Á¶±Ý ´õ º¹ÀâÇÑ ¹æ½ÄÀÇ ¾Ïȣȭ ÇÔ¼ö¸¦ Á÷Á¢ ½Ç¹«¿¡ »ç¿ëÇϱ⵵ Çß¾ú´Âµ¥ ¾ÆÁ÷±îÁö´Â º° ¹®Á¦°¡ ¾ø´Â °Í °°´Ù.

ÀÌ ÇÔ¼ö·Î FTP °æ·Î¸¦ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇϱâ Àü¿¡ ¾ÏȣȭÇÏ°í ½ÇÁ¦ »ç¿ëÇÒ ¶§ ¾ÏÈ£¸¦ Ç®¾î¼­ »ç¿ëÇÏ¸é µÈ´Ù. ±×·¯¸é ´ç±ÙÀÌ ½ÇÇàÁßÀÏ ¶§ ³»ºÎÀûÀ¸·Î¸¸ FTP °æ·Î¸¦ Àá½Ã À¯ÁöÇÒ »Ó ³ª¸ÓÁö °æ¿ì´Â ¾ÏȣȭµÇ¾î ÀÖÀ¸¹Ç·Î Á¢¼ÓÁ¤º¸°¡ ³ëÃâµÇÁö ¾Ê´Â´Ù. MRUÀÇ ÀúÀå ¹× ·Îµå ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

void CMru::LoadMRU()

{

     int i;

     TCHAR SubKey[32];

     TCHAR Path[MAX_PATH];

     TCHAR Text[MAX_PATH];

 

     arMru.num=SHRegReadInt(SHCU,Key,"nFiles",0);

     arMru.num=min(arMru.num, MaxMru);

     for (i=0;i<arMru.num;i++) {

          wsprintf(SubKey,"File%d",i);

          SHRegReadString(SHCU,Key,SubKey,"",Path,MAX_PATH);

          if (strncmp(Path,"Enco",4)==0) {

              DecodeText(Path,Text);

          } else {

              lstrcpy(Text,Path);

          }

          arMru.Set(i,Text);

     }

     ArrangeMenu();

}

 

void CMru::SaveMRU()

{

     int i;

     TCHAR SubKey[32];

     TCHAR EncText[MAX_PATH];

 

     SHRegWriteInt(SHCU,Key,"nFiles",arMru.num);

     for (i=0;i<arMru.num;i++) {

          wsprintf(SubKey,"File%d",i);

          if (strnicmp(arMru.Get(i),"ftp",3)==0) {

              EncodeText(arMru.Get(i),EncText);

          } else {

              lstrcpy(EncText,arMru.Get(i));

          }

          SHRegWriteString(SHCU,Key,SubKey,EncText);

     }

}

 

·ÎÄà ÆÄÀÏ¿¡ ´ëÇÑ °æ·Î´Â ±»ÀÌ ¾ÏȣȭÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç FTP °æ·Î¸¸ ¾ÏȣȭÇÏ¿´´Ù. ¸¶Áö¸·À¸·Î ¾ÏȣȭÇÒ °¡Àå Áß¿äÇÑ ´ë»óÀº FTP Á¢¼ÓÁ¤º¸ÀÎ arFtp ¹è¿­ÀÌ´Ù. ÀÌ ¹è¿­¿¡ FTP ¼­¹ö¿¡ ´ëÇÑ ¸ðµç Á¤º¸°¡ µé¾î ÀÖÀ¸¹Ç·Î ±Ùº»ÀûÀ¸·Î º¸È£ÇØ¾ß ÇÒ °¡Àå Áß¿äÇÑ Á¤º¸ÀÌ´Ù. ±×·¡¼­ ÀÌ ¹è¿­À» ÀúÀåÇÏ´Â Äڵ带 ¾ÆÁ÷ ÀÛ¼ºÇÏÁö ¾Ê¾Ò´Âµ¥ SOptionÀÇ Load, Save ÇÔ¼ö¿¡ arFtp ÀúÀå Äڵ带 ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ.

 

void SOption::Load(TCHAR *Key)

{

     TCHAR EncText[400];

     ....

     lstrcpy(szKey,Key);

     lstrcat(szKey,"Ftp");

     j=SHRegReadInt(SHCU,szKey,"Num",0);

     for (i=0;i<j;i++) {

          wsprintf(szSub,"Name-%d",i);

          SHRegReadString(SHCU,szKey,szSub,"",EncText,32);

          DecodeText(EncText,arFtp[i].Name);

          wsprintf(szSub,"Addr-%d",i);

          SHRegReadString(SHCU,szKey,szSub,"",EncText,256);

          DecodeText(EncText,arFtp[i].Addr);

          wsprintf(szSub,"User-%d",i);

          SHRegReadString(SHCU,szKey,szSub,"",EncText,32);

          DecodeText(EncText,arFtp[i].User);

          wsprintf(szSub,"Pass-%d",i);

          SHRegReadString(SHCU,szKey,szSub,"",EncText,32);

          DecodeText(EncText,arFtp[i].Pass);

          wsprintf(szSub,"Port-%d",i);

          arFtp[i].Port=SHRegReadInt(SHCU,szKey,szSub,0);

     }

}

 

void SOption::Save(TCHAR *Key)

{

     TCHAR EncText[400];

     ....

     lstrcpy(szKey,Key);

     lstrcat(szKey,"Ftp");

     for (i=0;;i++) {

          if (lstrlen(arFtp[i].Name)==0) {

              SHRegWriteInt(SHCU,szKey,"Num",i);

              break;

          }

          wsprintf(szSub,"Name-%d",i);

          EncodeText(arFtp[i].Name,EncText);

          SHRegWriteString(SHCU,szKey,szSub,EncText);

          wsprintf(szSub,"Addr-%d",i);

          EncodeText(arFtp[i].Addr,EncText);

          SHRegWriteString(SHCU,szKey,szSub,EncText);

          wsprintf(szSub,"User-%d",i);

          EncodeText(arFtp[i].User,EncText);

          SHRegWriteString(SHCU,szKey,szSub,EncText);

          wsprintf(szSub,"Pass-%d",i);

          EncodeText(arFtp[i].Pass,EncText);

          SHRegWriteString(SHCU,szKey,szSub,EncText);

          wsprintf(szSub,"Port-%d",i);

          SHRegWriteInt(SHCU,szKey,szSub,arFtp[i].Port);

     }

}

 

»ç¿ëÀÚ ID, ºñ¹Ð ¹øÈ£´Â ¹°·ÐÀÌ°í Á¢¼Ó¸í, ¼­¹öÀÇ ÁÖ¼Ò±îÁö ¸ðµÎ ¾ÏȣȭÇß´Ù. ´Ü Á¢¼Ó Æ÷Æ®´Â Á¤¼ö°ªÀÌ°í ÀϹÝÀûÀ¸·Î 21¹øÀ̱⠶§¹®¿¡ ±»ÀÌ ¾Ïȣȭ¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø¾î Á¤¼ö°ªÀ» ¹Ù·Î ±â·ÏÇÏ¿´´Ù. ¿©·¯ °³ÀÇ FTP ¼­¹ö¸¦ µî·ÏÇÑ ÈÄ ·¹Áö½ºÆ®¸® ÆíÁý±â·Î ¾î¶»°Ô Á¢¼ÓÁ¤º¸°¡ ÀúÀåµÇ¾î ÀÖ´ÂÁö º¸µµ·Ï ÇÏÀÚ.

¾ð¶æ ºÁ¼­´Â µµ´ëü ¹«½¼ Á¤º¸ÀÎÁö ¾Ë±â°¡ ¹«Ã´ ¾î·Æ´Ù. ÇÏÁö¸¸ ´ç±ÙÀº ÀÌ ¾ÏȣȭµÈ ¹®ÀÚ¿­·ÎºÎÅÍ Á¢¼ÓÁ¤º¸¸¦ Çص¶ÇÒ ¼ö ÀÖÀ¸¹Ç·Î FTP Á¢¼ÓÀº ÀÌ»ó¾øÀÌ ÇÒ ¼ö ÀÖ´Ù. º¸¾È ¹®Á¦°¡ ÀÏ´ÜÀº ÇØ°áµÇ¾ú´Ù.

±×·¯³ª ¿©±â¼­ ÀÛ¼ºÇÑ ¾Ïȣȭ ÇÔ¼öÀÇ ¼öÁØÀº ¾ÆÁÖ ÃʱÞÀûÀÎ ¼öÁØ¿¡ ºÒ°úÇؼ­ ¾ÏÈ£¿¡ ´ëÇØ Á¶±ÝÀÌ¶óµµ ¿¬±¸ÇØ º» ÀûÀÌ ÀÖ´Â »ç¶÷À̶ó¸é ¾î·ÆÁö ¾Ê°Ô Çص¶ÇÒ ¼ö ÀÖ´Ù. ·¹Áö½ºÆ®¸® ±¸¼ºµµ ¾ÆÁÖ Á÷°üÀûÀ¸·Î µÇ¾î Àִµ¥ Á¢¼ÓÁ¤º¸¸¦ ÀúÀåÇÏ´Â ¼­ºêÅ° À̸§Àº FtpÀÌ°í Addr, User, Pass °°Àº À̸§À» ÁÖ¾î ¡®³ª ¿©±â ÀÖ¼Ò¡¯ÇÏ°í ¾Ë·Á ÁÖ´Â ¼ÀÀÌ´Ù. Á¢¼ÓÁ¤º¸¸¦ ¾ÈÀüÇÏ°Ô ÁöÅ°·Á¸é ÀÌ ÇÔ¼öµéº¸´Ù´Â ÈξÀ ´õ Á¤±³ÇÏ°í °­·ÂÇÑ ¼öÁØÀÇ ¾Ïȣȭ¸¦ ±¸ÇöÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ¹Ì °ø°³µÈ ¾Ïȣȭ ¾Ë°í¸®Áòµµ ¸¹ÀÌ ÀÖÀ¸¹Ç·Î ±× Áß Çϳª¸¦ äÅÃÇؼ­ Àû¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù. ·¹Áö½ºÆ®¸® °æ·Îµµ ¾ó¸¥ ¾Ë ¼ö ¾ø´Â À̸§À¸·Î ¹Ù²Ù°Å³ª ¾Æ´Ï¸é ¾Æ¿¹ ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.

±×·¯³ª ´ç±Ù 1.0Àº ¾Ïȣȭ°¡ ÇÊ¿äÇÏ´Ù´Â °Í°ú ºñ·Ï ÃÊ±Þ ¼öÁØÀÌÁö¸¸ ¾Ïȣȭ¸¦ ÇÏ´Â ¿¹¸¦ º¸¿´À¸¹Ç·Î ¿©±â±îÁö¸¸ ¾Ïȣȭ¸¦ Çϱâ·Î ÇÑ´Ù. ¾îÂ÷ÇÇ ¼Ò½º°¡ °ø°³µÇ¾î Àֱ⠶§¹®¿¡ ¾Æ¹«¸® °­·ÂÇÑ ¾Ïȣȭ¸¦ ÇÏ´õ¶óµµ ¼Ò½ºÀÇ ¾ÏÈ£ Çص¶ ·çƾÀ» ¶¼¾î ³»¸é ¸ðµç ¾ÏÈ£¸¦ Ç® ¼ö ÀÖ¾î Çö ½ÃÁ¡¿¡¼­ ´õ ÀÌ»óÀÇ °­·ÂÇÑ ¾Ïȣȭ ¹æ¹ýÀ» Àû¿ëÇÏ´Â °ÍÀº ¾Æ¹« Àǹ̰¡ ¾ø´Ù. ´ÙÀ½ ¹öÀü¿¡¼­´Â À̺¸´Ù ÈξÀ ´õ °­·ÂÇÑ ¹æ¹ýÀ¸·Î ¾Ïȣȭ¸¦ ÇÒ °ÍÀÌ´Ù.