Beispiel #1
0
unsigned long int md5sum32(const char *buff) {
    union {
        char md5digest[16];
        unsigned long int hash;
    } u;

    domd5mem(buff, strlen(buff), u.md5digest, 0);
    return u.hash;
}
Beispiel #2
0
int main(int argc, char* argv[])
{
  int i;
  int ret = 0;
  int defaultPort = 0;
  printf("Initialzing the server..\n");

#ifdef _WIN32
  {
    WORD   wVersionRequested;   // requested version WinSock API
    WSADATA wsadata;            // Windows Sockets API data
    int stat;
    wVersionRequested = 0x0101;
    stat = WSAStartup( wVersionRequested, &wsadata );
    if (stat != 0) {
      fprintf(stderr, "Winsock not found!\n");
      return -1;
    } else if (LOBYTE(wsadata.wVersion) != 1  && HIBYTE(wsadata.wVersion) != 1) {
      fprintf(stderr, "WINSOCK.DLL does not support version 1.1\n");
      WSACleanup();
      return -1;
    }
  }
#endif

  if (argc < 2 || (argc % 2) != 0) {
    fprintf(stderr, "** Warning: use the webhttrack frontend if available\n");
    fprintf(stderr, "usage: %s [--port <port>] <path-to-html-root-dir> [key value [key value]..]\n", argv[0]);
    fprintf(stderr, "example: %s /usr/share/httrack/\n", argv[0]);
    return 1;
  }

  /* init and launch */
  hts_init();
  htslang_init();

  /* set general keys */
#ifdef HTS_ETCPATH
  smallserver_setkey("ETCPATH", HTS_ETCPATH);
#endif
#ifdef HTS_BINPATH
  smallserver_setkey("BINPATH", HTS_BINPATH);
#endif
#ifdef HTS_LIBPATH
  smallserver_setkey("LIBPATH", HTS_LIBPATH);
#endif
#ifdef HTS_PREFIX
  smallserver_setkey("PREFIX", HTS_PREFIX);
#endif
#ifdef HTS_HTTRACKCNF
  smallserver_setkey("HTTRACKCNF", HTS_HTTRACKCNF);
#endif
#ifdef HTS_HTTRACKDIR
  smallserver_setkey("HTTRACKDIR", HTS_HTTRACKDIR);
#endif
#ifdef HTS_INET6
  smallserver_setkey("INET6", "1");
#endif
#ifdef HTS_USEOPENSSL
  smallserver_setkey("USEOPENSSL", "1");
#endif
#ifdef HTS_DLOPEN
  smallserver_setkey("DLOPEN", "1");
#endif
#ifdef HTS_USESWF
  smallserver_setkey("USESWF", "1");
#endif
#ifdef HTS_USEZLIB
  smallserver_setkey("USEZLIB", "1");
#endif
#ifdef _WIN32
  smallserver_setkey("WIN32", "1");
#endif
  smallserver_setkey("HTTRACK_VERSION", HTTRACK_VERSION);
  smallserver_setkey("HTTRACK_VERSIONID", HTTRACK_VERSIONID);
  smallserver_setkey("HTTRACK_AFF_VERSION", HTTRACK_AFF_VERSION);
  {
    char tmp[32];
    sprintf(tmp, "%d", -1);
    smallserver_setkey("HTS_PLATFORM", tmp);
  }
  smallserver_setkey("HTTRACK_WEB", HTTRACK_WEB); 

  /* protected session-id */
  {
    char buff[1024];
    char digest[32 + 2];
    srand((unsigned int)time(NULL));
    sprintf(buff, "%d-%d", (int)time(NULL), (int)rand());
    domd5mem(buff,strlen(buff),digest,1);
    smallserver_setkey("sid", digest);
    smallserver_setkey("_sid", digest);
  }

  /* set commandline keys */
	for(i = 2 ; i < argc ; i += 2) {
		if (strcmp(argv[i], "--port") == 0) {
			if (sscanf(argv[i + 1], "%d", &defaultPort) != 1 || defaultPort < 0 || defaultPort >= 65535 ) {
				fprintf(stderr, "couldn't set the port number to %s\n", argv[i + 1]);
				return -1;
			}
		} else {
			smallserver_setkey(argv[i], argv[i + 1]);
		}
  }

  /* sigpipe */
#ifndef _WIN32
  signal( SIGPIPE , htsweb_sig_brpipe );   // broken pipe (write into non-opened socket)
#endif

  /* launch */
  ret = help_server(argv[1], defaultPort);

  htsthread_wait();
  hts_uninit();

#ifdef _WIN32
  WSACleanup();
#endif

  return ret;
}