summary refs log tree commit diff stats
path: root/src
<
/* simple identd server for xchat under win32 */


static int identd_is_running = FALSE;


static int
identd (char *username)
{
	int sok, read_sok, len;
	char *p;
	char buf[256];
	char outbuf[256];
	struct sockaddr_in addr;

	sok = socket (AF_INET, SOCK_STREAM, 0);
	if (sok == INVALID_SOCKET)
	{
		free (username);
		return 0;
	}

	len = 1;
	setsockopt (sok, SOL_SOCKET, SO_REUSEADDR, (char *) &len, sizeof (len));

	memset (&addr, 0, sizeof (addr));
	addr.sin_family = AF_INET;
	addr.sin_port = htons (113);

	if (bind (sok, (struct sockaddr *) &addr, sizeof (addr)) == SOCKET_ERROR)
	{
		closesocket (sok);
		free (username);
		return 0;
	}

	if (listen (sok, 1) == SOCKET_ERROR)
	{
		closesocket (sok);
		free (username);
		return 0;
	}

	len = sizeof (addr);
	read_sok = accept (sok, (struct sockaddr *) &addr, &len);
	closesocket (sok);
	if (read_sok == INVALID_SOCKET)
	{
		free (username);
		return 0;
	}

	identd_is_running = FALSE;

	snprintf (outbuf, sizeof (outbuf), "%%\tServicing ident request from %s\n",
				 inet_ntoa (addr.sin_addr));
	PrintText (current_sess, outbuf);

	recv (read_sok, buf, sizeof (buf) - 1, 0);
	buf[sizeof (buf) - 1] = 0;	  /* ensure null termination */

	p = strchr (buf, ',');
	if (p)
	{
		snprintf (outbuf, sizeof (outbuf) - 1, "%d, %d : USERID : UNIX : %s\r\n",
					 atoi (buf), atoi (p + 1), username);
		outbuf[sizeof (outbuf) - 1] = 0;	/* ensure null termination */
		send (read_sok, outbuf, strlen (outbuf), 0);
	}

	sleep (1);
	closesocket (read_sok);
	free (username);

	return 0;
}

static void
identd_start (char *username)
{
	DWORD tid;

	if (identd_is_running == FALSE)
	{
		identd_is_running = TRUE;
		CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) identd,
						 strdup (username), 0, &tid));
	}
}
AgeCommit message (Collapse)Author
2011-08-15update scripts for gendef usageBerke Viktor
2011-08-15restructuring part2Berke Viktor
2011-08-15some restructingBerke Viktor
2011-08-15obs gtk works but requires library conversionBerke Viktor
2011-08-14first attempt at switching to OBS, compiles, but doesn't run yetBerke Viktor
2011-08-11VersionInfo enhancements (XhmikosR)Berke Viktor
2011-08-11add manifest file so that visual styles are applied to xtray (XhmikosR)Berke Viktor
2011-08-09disable channel switcher's context menu item for tray alerts when xtray is ↵Berke Viktor
loaded
2011-08-09add option to auto-open a new tab when sending /msg (openSUSE)berkeviktor@aol.com
2011-08-07last minute typofixberkeviktor@aol.com
2011-08-07recognize all installed dictionaries and select the required ones via ↵berkeviktor@aol.com