mldonkey-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Mldonkey-users] Firebird + MLdonkey-Plugin


From: Dirk
Subject: Re: [Mldonkey-users] Firebird + MLdonkey-Plugin
Date: Tue, 08 Jul 2003 12:18:10 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.5a) Gecko/20030605

Thoran wrote:

>MrOrange> Hello, is there a way to get the Mozilla-Plugin working with
>MrOrange> Mozilla's Firebird-Browser (the standalone version).  With
>MrOrange> Firebird I only get a pop-up window displaying some adverts
>MrOrange> (don't know where this URL comes from).
>
>I installed it under Firebird and it works perfectly.  I didn't do
>anything special.  Here is my version:
>
>Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030516
>Mozilla Firebird/0.6
>
>Cheers,
>
> Thoran
>  
>

if someone still has problems with those plugins he might consider
giving the attached C program a try... it's my port of the
mldonkey_submit script but supports local torrent files (with
wildcards!), links to torrent files and ed2k_links of course... it works
from commandline or as "open with..." extension in mozilla..

should compile with windows too...

Dirk

/*
  mldonkey_submit in C
  by Dirk (address@hidden)
  
  Supports
  - Bittorrent links
  - Bittorrent files
  - ed2k links
  Works with mozilla
  
  Compile with: gcc mldonkey_submit.c -o mldonkey_submit -s
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#if defined(_WIN32)
#include <windows.h>
#include <winsock2.h>
#define FILE_SEPARATOR ('\\')
#else
#include <unistd.h>
#include <sys/file.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netdb.h>
#define FILE_SEPARATOR ('/')
#endif

#define HOST_S ("127.0.0.1")
#define PORT (4080)
#define USER_S ("admin")
#define PASS_S ("")


#if defined(_WIN32)
#define READ(a,b,c)  recv((a),(b),(c),0)
#define WRITE(a,b,c) send((a),(b),(c),0)
#else
#define READ(a,b,c)  read((a),(b),(c))
#define WRITE(a,b,c) write((a),(b),(c))
#endif
#ifndef MAXBUFSIZE
#define MAXBUFSIZE (32768)
#endif


static int
tcp_open (void)
{
  struct sockaddr_in stAddr;
  struct hostent *host;
  int sock;
  struct linger l;

  memset (&stAddr, 0, sizeof (stAddr));
  stAddr.sin_family = AF_INET;
  stAddr.sin_port = htons (PORT);

  if ((host = gethostbyname (HOST_S)) == NULL)
    return 0;

  stAddr.sin_addr = *((struct in_addr *) host->h_addr_list[0]);

  if ((sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
    return 0;

  l.l_onoff = 1;
  l.l_linger = 5;
  if (setsockopt (sock, SOL_SOCKET, SO_LINGER, (char *) &l, sizeof (l)) < 0)
    return 0;

  if (connect (sock, (struct sockaddr *) &stAddr, sizeof (stAddr)) < 0)
    return 0;

  return sock;
}


char *
stresc (char *dest, const char *src)
{
  unsigned char c;
  char *p = dest;
  const unsigned char *positiv =
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    "abcdefghijklmnopqrstuvwxyz"
    "0123456789"
#if 1
    "+/."
#else
    "-_.!~"                     // mark characters
    "*\\()%"                    // do not touch escape character
    ";/?:@"                     // reserved characters
    "&=+$,"                     // see RFC 2396
//  "\x7f ... \xff"    far east languages(Chinese, Korean, Japanese)
#endif
    ;

  while ((c = *src++))
    if (strchr (positiv, c) != NULL || c >= 0x7f)
      *p++ = c;
    else
      {
        sprintf (p, "%%%02X", c);
        p += 3;
      }
  *p = 0;

  return dest;
}


int
main (int argc, char **argv)
{
  int x = 0;

  if (argc < 2)
    {
      fprintf (stderr, "Usage: mldonkey_submit <ed2kURI|torrent> ...\n");
      exit (1);
    }

  for (x = 1; x < argc; x++)
    {
      int socket = 0;
      char buf[MAXBUFSIZE], buf2[MAXBUFSIZE];
        
      if (!(socket = tcp_open()))
        {
          fprintf (stderr, "ERROR: could not open tcp connection\n");
          exit (1);
        }
                      
      stresc (buf, argv[x]);

      if (!strchr (buf, FILE_SEPARATOR))
        {
          getcwd (buf2, MAXBUFSIZE);
          sprintf (buf2 + strlen (buf2), "%c%s", FILE_SEPARATOR, buf);
          strcpy (buf, buf2);
        }

      sprintf (buf2, "GET /submit?q=dllink+\"%s\" HTTP/1.1\r\n"
        "Host: %s:%d\r\n"
        "User-Agent: mldonkey_submit\r\n"
        "Accept: */*\r\n"
//        "Keep-Alive: 300\r\n"
//        "Connection: keep-alive\r\n"
        "Referer: http://%s:%d/submit?\r\n";
        "\r\n",
        buf,
        HOST_S,
        PORT,
        HOST_S,
        PORT);

//#ifdef  DEBUG
      fprintf (stderr, "%s\n", buf);
      fflush (stderr);
//#endif

      WRITE (socket, buf2, strlen (buf2));
      READ (socket, buf2, MAXBUFSIZE);
      
//#ifdef  DEBUG
      fprintf  (stderr, "%s\n\n", buf2);
      fflush (stderr);
//#endif  DEBUG

      close (socket);
    }

  return 0;
}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]