OSDN Git Service

バージョンチェックにDNS情報を使うようにした IM0040
authoreru <eru01@users.sourceforge.jp>
Tue, 29 Sep 2009 18:25:29 +0000 (18:25 +0000)
committereru <eru01@users.sourceforge.jp>
Tue, 29 Sep 2009 18:25:29 +0000 (18:25 +0000)
PeerCast.root/PeerCast/core/common/pcp.cpp
PeerCast.root/PeerCast/core/common/servmgr.cpp
PeerCast.root/PeerCast/core/common/servmgr.h
PeerCast.root/PeerCast/core/common/version2.h
PeerCast.root/PeerCast/ui/win32/simple/Simple.rc
c:/Git/PeerCast.root/PeerCast/core/common/pcp.cpp
c:/Git/PeerCast.root/PeerCast/core/common/servmgr.cpp
c:/Git/PeerCast.root/PeerCast/core/common/servmgr.h
c:/Git/PeerCast.root/PeerCast/core/common/version2.h
c:/Git/PeerCast.root/PeerCast/ui/win32/simple/Simple.rc

index ff7ded8..6ad4418 100644 (file)
@@ -736,11 +736,21 @@ int PCPStream::readBroadcastAtoms(AtomStream &atom,int numc,BroadcastState &bcs)
                        patom.writeBytes(id,ver_ex_prefix,2);
                }else if (id == PCP_BCST_VERSION_EX_NUMBER)
                {
+                       // version check (force)
+                       if (servMgr->versionDNS > PCP_CLIENT_VERSION_EX_NUMBER)
+                       {
+                               strcpy(servMgr->downloadURL, PCP_CLIENT_DIST_URL);
+                               peercastApp->notifyMessage(ServMgr::NT_UPGRADE,"\90V\82µ\82¢\83o\81[\83W\83\87\83\93\82ÌPeercast\82ª\83\8a\83\8a\81[\83X\82³\82ê\82Ü\82µ\82½\81B");
+                               
+                               LOG_DEBUG("PCP triggered version check (force): %d / %d", servMgr->versionDNS, PCP_CLIENT_VERSION_EX_NUMBER);
+                       }
+
                        ver_ex_number = atom.readShort();
                        patom.writeShort(id,ver_ex_number);
 
                        // version check
-                       if (!servMgr->noVersionCheck
+                       if (!servMgr->versionDNS // DNS\82©\82ç\83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\8eæ\93¾\82Å\82«\82È\82©\82Á\82½
+                               && !servMgr->noVersionCheck
                                && !strncmp(ver_ex_prefix, PCP_CLIENT_VERSION_EX_PREFIX, 2)
                                && ver_ex_number > PCP_CLIENT_VERSION_EX_NUMBER)
                        {
index 4391037..5fb1d20 100644 (file)
@@ -143,6 +143,23 @@ ServMgr::ServMgr()
        preventSS = false;
        noVersionCheck = false;
 
+       // retrieve newest version number from DNS
+       // for windows ONLY. Linux or other OS is NOT supported.
+#ifdef WIN32
+       {
+               struct hostent *he;
+
+               he = gethostbyname(PCP_CLIENT_VERSION_URL);
+               if (he && he->h_addrtype == AF_INET)
+               {
+                       versionDNS = ((struct in_addr*)he->h_addr_list[0])->S_un.S_un_b.s_b3;
+               } else
+                       versionDNS = 0;
+       }
+#else
+       versionDNS = 0;
+#endif
+
        chanLog="";
 
        maxRelaysIndexTxt = 1;  // for PCRaw (relay)
index 87da231..309d98d 100644 (file)
@@ -422,6 +422,8 @@ public:
        bool preventSS; // \83X\83N\83\8a\81[\83\93\83Z\81[\83o\81[\82ð\97}\8e~
        bool noVersionCheck; // bcstAtom\82É\82æ\82é\83o\81[\83W\83\87\83\93\83`\83F\83b\83N\82ð\8ds\82í\82È\82¢
 
+       int versionDNS; // DNS\82©\82ç\8eæ\93¾\82µ\82½\8dÅ\90V\83o\81[\83W\83\87\83\93\82Ì\94Ô\8d\86
+
        int maxRelaysIndexTxt;  // for PCRaw (relay)
 
 #ifdef WIN32 //JP-MOD
index 1497f04..2ae49c9 100644 (file)
@@ -44,11 +44,12 @@ extern int version_ex; // VERSION_EX
 #if 1 /* for VP extend version */
 //#define VERSION_EX 1
 static const char *PCP_CLIENT_VERSION_EX_PREFIX = "IM"; // 2bytes only
-static const int  PCP_CLIENT_VERSION_EX_NUMBER = 39;
-static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0039)";
-static const char *PCX_VERSTRING_EX = "v0.1218(IM0039)";
+static const int  PCP_CLIENT_VERSION_EX_NUMBER = 40;
+static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0040)";
+static const char *PCX_VERSTRING_EX = "v0.1218(IM0040)";
 
 static const char *PCP_CLIENT_DIST_URL = "http://pecaim.net/";
+static const char *PCP_CLIENT_VERSION_URL = "version.pecaim.net";
 #endif
 
 // ------------------------------------------------
index 90a2888..e8c0f58 100644 (file)
@@ -71,8 +71,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,3,9,0
- PRODUCTVERSION 1,3,9,0
+ FILEVERSION 1,4,0,0
+ PRODUCTVERSION 1,4,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -89,12 +89,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "PeCa"
             VALUE "FileDescription", "Peercast IM"
-            VALUE "FileVersion", "1, 3, 9, 0"
+            VALUE "FileVersion", "1, 4, 0, 0"
             VALUE "InternalName", "PeCaIM"
             VALUE "LegalCopyright", "Copyright (C) 2009"
             VALUE "OriginalFilename", "PeerCast.exe"
             VALUE "ProductName", "Peercast IM"
-            VALUE "ProductVersion", "1, 3, 9, 0"
+            VALUE "ProductVersion", "1, 4, 0, 0"
         END
     END
     BLOCK "VarFileInfo"
index ff7ded8..6ad4418 100644 (file)
@@ -736,11 +736,21 @@ int PCPStream::readBroadcastAtoms(AtomStream &atom,int numc,BroadcastState &bcs)
                        patom.writeBytes(id,ver_ex_prefix,2);
                }else if (id == PCP_BCST_VERSION_EX_NUMBER)
                {
+                       // version check (force)
+                       if (servMgr->versionDNS > PCP_CLIENT_VERSION_EX_NUMBER)
+                       {
+                               strcpy(servMgr->downloadURL, PCP_CLIENT_DIST_URL);
+                               peercastApp->notifyMessage(ServMgr::NT_UPGRADE,"\90V\82µ\82¢\83o\81[\83W\83\87\83\93\82ÌPeercast\82ª\83\8a\83\8a\81[\83X\82³\82ê\82Ü\82µ\82½\81B");
+                               
+                               LOG_DEBUG("PCP triggered version check (force): %d / %d", servMgr->versionDNS, PCP_CLIENT_VERSION_EX_NUMBER);
+                       }
+
                        ver_ex_number = atom.readShort();
                        patom.writeShort(id,ver_ex_number);
 
                        // version check
-                       if (!servMgr->noVersionCheck
+                       if (!servMgr->versionDNS // DNS\82©\82ç\83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\8eæ\93¾\82Å\82«\82È\82©\82Á\82½
+                               && !servMgr->noVersionCheck
                                && !strncmp(ver_ex_prefix, PCP_CLIENT_VERSION_EX_PREFIX, 2)
                                && ver_ex_number > PCP_CLIENT_VERSION_EX_NUMBER)
                        {
index 4391037..5fb1d20 100644 (file)
@@ -143,6 +143,23 @@ ServMgr::ServMgr()
        preventSS = false;
        noVersionCheck = false;
 
+       // retrieve newest version number from DNS
+       // for windows ONLY. Linux or other OS is NOT supported.
+#ifdef WIN32
+       {
+               struct hostent *he;
+
+               he = gethostbyname(PCP_CLIENT_VERSION_URL);
+               if (he && he->h_addrtype == AF_INET)
+               {
+                       versionDNS = ((struct in_addr*)he->h_addr_list[0])->S_un.S_un_b.s_b3;
+               } else
+                       versionDNS = 0;
+       }
+#else
+       versionDNS = 0;
+#endif
+
        chanLog="";
 
        maxRelaysIndexTxt = 1;  // for PCRaw (relay)
index 87da231..309d98d 100644 (file)
@@ -422,6 +422,8 @@ public:
        bool preventSS; // \83X\83N\83\8a\81[\83\93\83Z\81[\83o\81[\82ð\97}\8e~
        bool noVersionCheck; // bcstAtom\82É\82æ\82é\83o\81[\83W\83\87\83\93\83`\83F\83b\83N\82ð\8ds\82í\82È\82¢
 
+       int versionDNS; // DNS\82©\82ç\8eæ\93¾\82µ\82½\8dÅ\90V\83o\81[\83W\83\87\83\93\82Ì\94Ô\8d\86
+
        int maxRelaysIndexTxt;  // for PCRaw (relay)
 
 #ifdef WIN32 //JP-MOD
index 1497f04..2ae49c9 100644 (file)
@@ -44,11 +44,12 @@ extern int version_ex; // VERSION_EX
 #if 1 /* for VP extend version */
 //#define VERSION_EX 1
 static const char *PCP_CLIENT_VERSION_EX_PREFIX = "IM"; // 2bytes only
-static const int  PCP_CLIENT_VERSION_EX_NUMBER = 39;
-static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0039)";
-static const char *PCX_VERSTRING_EX = "v0.1218(IM0039)";
+static const int  PCP_CLIENT_VERSION_EX_NUMBER = 40;
+static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0040)";
+static const char *PCX_VERSTRING_EX = "v0.1218(IM0040)";
 
 static const char *PCP_CLIENT_DIST_URL = "http://pecaim.net/";
+static const char *PCP_CLIENT_VERSION_URL = "version.pecaim.net";
 #endif
 
 // ------------------------------------------------
index 90a2888..e8c0f58 100644 (file)
@@ -71,8 +71,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,3,9,0
- PRODUCTVERSION 1,3,9,0
+ FILEVERSION 1,4,0,0
+ PRODUCTVERSION 1,4,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -89,12 +89,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "PeCa"
             VALUE "FileDescription", "Peercast IM"
-            VALUE "FileVersion", "1, 3, 9, 0"
+            VALUE "FileVersion", "1, 4, 0, 0"
             VALUE "InternalName", "PeCaIM"
             VALUE "LegalCopyright", "Copyright (C) 2009"
             VALUE "OriginalFilename", "PeerCast.exe"
             VALUE "ProductName", "Peercast IM"
-            VALUE "ProductVersion", "1, 3, 9, 0"
+            VALUE "ProductVersion", "1, 4, 0, 0"
         END
     END
     BLOCK "VarFileInfo"