diff src/proxy.h @ 5681:46d7ad0dfa26

[gaim-migrate @ 6100] Rewrote the proxy code. It should now work with the new prefs, and it has a namespace and API too! committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 03 Jun 2003 02:00:33 +0000
parents dfdea22a7153
children cec7988f8ee7
line wrap: on
line diff
--- a/src/proxy.h	Mon Jun 02 22:30:25 2003 +0000
+++ b/src/proxy.h	Tue Jun 03 02:00:33 2003 +0000
@@ -1,10 +1,11 @@
 /**
- * @file proxy.h Proxy functions
+ * @file proxy.h Proxy API
  * @ingroup core
  *
  * gaim
  *
  * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
+ * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,57 +21,243 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
-
-/* this is the export part of the proxy.c file. it does a little
-   prototype-ing stuff and redefine some net function to mask them
-   with some kind of transparent layer */ 
-
-#ifndef _PROXY_H_
-#define _PROXY_H_
+#ifndef _GAIM_PROXY_H_
+#define _GAIM_PROXY_H_
 
 #include <sys/types.h>
 /*this must happen before sys/socket.h or freebsd won't compile*/
 
 #ifndef _WIN32
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
+# include <sys/socket.h>
+# include <netdb.h>
+# include <netinet/in.h>
 #else
-#include <winsock.h>
+# include <winsock.h>
 #endif
 
 #include <glib.h>
 
 #include "core.h"
+#include "account.h"
 
-typedef enum {
-	PROXY_USE_GLOBAL = -1,
-	PROXY_NONE = 0,
-	PROXY_HTTP,
-	PROXY_SOCKS4,
-	PROXY_SOCKS5,
-} proxytype_t;
+/**
+ * A type of proxy connection.
+ */
+typedef enum
+{
+	GAIM_PROXY_USE_GLOBAL = -1,  /**< Use the global proxy information. */
+	GAIM_PROXY_NONE = 0,         /**< No proxy.                         */
+	GAIM_PROXY_HTTP,             /**< HTTP proxy.                       */
+	GAIM_PROXY_SOCKS4,           /**< SOCKS 4 proxy.                    */
+	GAIM_PROXY_SOCKS5,           /**< SOCKS 5 proxy.                    */
+
+} GaimProxyType;
 
-struct gaim_proxy_info {
-	int proxytype;
-	char proxyhost[128];
-	proxytype_t proxyport;
-	char proxyuser[128];
-	char proxypass[128];
-};
+/**
+ * An input condition.
+ */
+typedef enum
+{
+	GAIM_INPUT_READ  = 1 << 0,
+	GAIM_INPUT_WRITE = 1 << 1
+
+} GaimInputCondition;
 
-extern struct gaim_proxy_info global_proxy_info;
-extern guint proxy_info_is_from_gaimrc;
+/**
+ * Information on proxy settings.
+ */
+typedef struct
+{
+	GaimProxyType type;   /**< The proxy type.  */
 
-typedef enum {
-	GAIM_INPUT_READ = 1 << 0,
-	GAIM_INPUT_WRITE = 1 << 1
-} GaimInputCondition;
+	char *host;           /**< The host.        */
+	int   port;           /**< The port number. */
+	char *username;       /**< The username.    */
+	char *password;       /**< The password.    */
+
+} GaimProxyInfo;
+
 typedef void (*GaimInputFunction)(gpointer, gint, GaimInputCondition);
 
-extern gint gaim_input_add(int, GaimInputCondition, GaimInputFunction, gpointer);
-extern void gaim_input_remove(gint);
+/**************************************************************************/
+/** @name Proxy structure API                                             */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Creates a proxy information structure.
+ *
+ * @return The proxy information structure.
+ */
+GaimProxyInfo *gaim_proxy_info_new(void);
+
+/**
+ * Destroys a proxy information structure.
+ *
+ * @param proxy The proxy information structure to destroy.
+ */
+void gaim_proxy_info_destroy(GaimProxyInfo *info);
+
+/**
+ * Sets the type of proxy.
+ *
+ * @param proxy The proxy information.
+ * @param type  The proxy type.
+ */
+void gaim_proxy_info_set_type(GaimProxyInfo *info, GaimProxyType type);
+
+/**
+ * Sets the proxy host.
+ *
+ * @param proxy The proxy information.
+ * @param host  The host.
+ */
+void gaim_proxy_info_set_host(GaimProxyInfo *info, const char *host);
+
+/**
+ * Sets the proxy port.
+ *
+ * @param proxy The proxy information.
+ * @param port  The port.
+ */
+void gaim_proxy_info_set_port(GaimProxyInfo *info, int port);
+
+/**
+ * Sets the proxy username.
+ *
+ * @param proxy    The proxy information.
+ * @param username The username.
+ */
+void gaim_proxy_info_set_username(GaimProxyInfo *info, const char *username);
+
+/**
+ * Sets the proxy password.
+ *
+ * @param proxy    The proxy information.
+ * @param password The password.
+ */
+void gaim_proxy_info_set_password(GaimProxyInfo *info, const char *password);
+
+/**
+ * Returns the proxy's type.
+ *
+ * @param The proxy information.
+ *
+ * @return The type.
+ */
+GaimProxyType gaim_proxy_info_get_type(const GaimProxyInfo *info);
+
+/**
+ * Returns the proxy's host.
+ *
+ * @param The proxy information.
+ *
+ * @return The host.
+ */
+const char *gaim_proxy_info_get_host(const GaimProxyInfo *info);
+
+/**
+ * Returns the proxy's port.
+ *
+ * @param The proxy information.
+ *
+ * @return The port.
+ */
+int gaim_proxy_info_get_port(const GaimProxyInfo *info);
 
-extern int proxy_connect(GaimAccount *account, const char *host, int port, GaimInputFunction func, gpointer data);
+/**
+ * Returns the proxy's username.
+ *
+ * @param The proxy information.
+ *
+ * @return The username.
+ */
+const char *gaim_proxy_info_get_username(const GaimProxyInfo *info);
+
+/**
+ * Returns the proxy's password.
+ *
+ * @param The proxy information.
+ *
+ * @return The password.
+ */
+const char *gaim_proxy_info_get_password(const GaimProxyInfo *info);
+
+/*@}*/
+
+/**************************************************************************/
+/** @name Global Proxy API                                                */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Sets whether or not the global proxy information is from preferences.
+ *
+ * @param from_prefs @c TRUE if the info is from preferences.
+ */
+void gaim_global_proxy_set_from_prefs(gboolean from_prefs);
+
+/**
+ * Returns gaim's global proxy information.
+ *
+ * @return The global proxy information.
+ */
+GaimProxyInfo *gaim_global_proxy_get_info(void);
+
+/**
+ * Returns whether or not the current global proxy information is from
+ * preferences.
+ *
+ * @return @c TRUE if the info is from preferences.
+ */
+gboolean gaim_global_proxy_is_from_prefs(void);
 
-#endif /* _PROXY_H_ */
+/*@}*/
+
+/**************************************************************************/
+/** @name Proxy API                                                       */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Initializes the proxy subsystem.
+ */
+void gaim_proxy_init(void);
+
+/**
+ * Adds an input handler.
+ *
+ * @param source    The input source.
+ * @param cond      The condition type.
+ * @param func      The callback function for data.
+ * @param user_data User-specified data.
+ *
+ * @return The resulting handle.
+ */
+gint gaim_input_add(int source, GaimInputCondition cond,
+					GaimInputFunction func, gpointer user_data);
+
+/**
+ * Removes an input handler.
+ *
+ * @param handle The handle of the input handler.
+ */
+void gaim_input_remove(gint handle);
+
+/**
+ * Makes a connection to the specified host and port.
+ *
+ * @param account The account making the connection.
+ * @param host    The destination host.
+ * @Param port    The destination port.
+ * @Param func    The input handler function.
+ * @param data    User-defined data.
+ *
+ * @return The socket handle.
+ */
+int gaim_proxy_connect(GaimAccount *account, const char *host, int port,
+					   GaimInputFunction func, gpointer data);
+
+/*@}*/
+
+#endif /* _GAIM_PROXY_H_ */