diff options
Diffstat (limited to 'ftp/proftpd/files/patch-ba')
-rw-r--r-- | ftp/proftpd/files/patch-ba | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/ftp/proftpd/files/patch-ba b/ftp/proftpd/files/patch-ba deleted file mode 100644 index b1d054b52edc..000000000000 --- a/ftp/proftpd/files/patch-ba +++ /dev/null @@ -1,253 +0,0 @@ ---- contrib/mod_mysql.c.old Sun Feb 11 19:47:54 2001 -+++ contrib/mod_mysql.c Sun Feb 11 19:45:37 2001 -@@ -0,0 +1,250 @@ -+/* -+ * ProFTPD: mod_mysql -- Support for connecting to MySQL databases. -+ * Time-stamp: <1999-10-04 03:21:21 root> -+ * Copyright (c) 1998-1999 Johnie Ingram. -+ * -+ * 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 -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+#define MOD_MYSQL_VERSION "mod_mysql/2.0" -+ -+/* -- DO NOT MODIFY THE LINE BELOW UNLESS YOU FEEL LIKE IT -- -+ * $Libraries: -lm -lmysqlclient $ -+ */ -+ -+/* This is mod_mysql, contrib software for proftpd 1.2.0pre3 and above. -+ For more information contact Johnie Ingram <johnie@netgod.net>. -+ -+ History Log: -+ -+ * 1999-09-19: v2.0: Most directives split into mod_sql; invented API. -+ -+*/ -+ -+#include "conf.h" -+#include <mysql.h> -+ -+/* *INDENT-OFF* */ -+ -+static MYSQL mod_mysql_server; -+static MYSQL *mysqldb = 0; -+ -+/* Maximum username field to expect, etc. */ -+#define ARBITRARY_MAX 128 -+ -+static struct -+{ -+ char *sql_host; /* Data for connecting, set by MySQLInfo. */ -+ char *sql_user; -+ char *sql_pass; -+ char *sql_dbname; -+ -+ int ok; -+ int opens; -+} g; -+ -+/* *INDENT-ON* */ -+ -+/* **************************************************************** */ -+ -+MODRET -+sql_cmd_close (cmd_rec * cmd) -+{ -+ log_debug (DEBUG5, "mysql: close [%i] for %s", g.opens, cmd->argv[0]); -+ -+ if (!g.ok || g.opens--) -+ return DECLINED (cmd); -+ -+ if (mysqldb) -+ { -+ log_debug (DEBUG4, "mysql: disconnecting: %s", mysql_stat (mysqldb)); -+ mysql_close (mysqldb); -+ } -+ mysqldb = NULL; -+ return DECLINED (cmd); -+} -+ -+MODRET -+sql_cmd_open (cmd_rec * cmd) -+{ -+ if (!g.ok) -+ return DECLINED (cmd); -+ -+ g.opens++; -+ log_debug (DEBUG5, "mysql: open [%i] for %s", g.opens, cmd->argv[0]); -+ if (g.opens > 1) -+ return HANDLED (cmd); -+ -+ if (!(mysqldb = mysql_connect (&mod_mysql_server, g.sql_host, -+ g.sql_user, g.sql_pass))) -+ { -+ log_pri (LOG_ERR, "mysql: client %s connect FAILED to %s@%s", -+ mysql_get_client_info (), g.sql_user, g.sql_host); -+ g.ok = FALSE; -+ g.opens = 0; -+ return DECLINED (cmd); -+ } -+ log_debug (DEBUG5, "mysql: connect OK %s -> %s (%s@%s)", -+ mysql_get_client_info (), mysql_get_server_info (mysqldb), -+ g.sql_user, g.sql_host); -+ -+ return HANDLED (cmd); -+} -+ -+MODRET -+_do_query (cmd_rec * cmd, const char *query, int update) -+{ -+ int error = 1; -+ -+ if (!g.ok) -+ return DECLINED (cmd); -+ -+ block_signals (); -+ -+ /* This forces a quick ping of the remote server, so we know if its there. */ -+ if (mysqldb) -+ mysql_select_db (mysqldb, g.sql_dbname); -+ -+ if (!mysqldb -+ || ((error = mysql_query (mysqldb, query)) -+ && !strcasecmp (mysql_error (mysqldb), "mysql server has gone"))) -+ { -+ /* We need to restart the server link. */ -+ if (mysqldb) -+ log_pri (LOG_ERR, "mysql: server has wandered off (%s/%s)", -+ g.sql_host, g.sql_dbname); -+ sql_cmd_open (cmd); -+ if (!mysqldb) -+ return DECLINED (cmd); -+ error = mysql_select_db (mysqldb, g.sql_dbname) -+ || mysql_query (mysqldb, query); -+ } -+ -+ unblock_signals (); -+ -+ if (error) -+ { -+ log_debug (DEBUG4, "mysql: %s failed: \"%s\": %s", -+ (update) ? "update" : "select", -+ query, mysql_error (mysqldb)); -+ return DECLINED (cmd); -+ } -+ -+ log_debug (DEBUG5, "mysql: %s OK: [%s] \"%s\"", -+ (update) ? "update" : "select", g.sql_dbname, query); -+ return HANDLED (cmd); -+} -+ -+MODRET -+sql_cmd_update (cmd_rec * cmd) -+{ -+ return _do_query (cmd, cmd->argv[1], TRUE); -+} -+ -+MODRET -+sql_cmd_select (cmd_rec * cmd) -+{ -+ MODRET mr; -+ MYSQL_RES *result; -+ MYSQL_ROW sql_row; -+ int i, j; -+ -+ mr = _do_query (cmd, cmd->argv[1], FALSE); -+ if (!MODRET_ISHANDLED (mr)) -+ return DECLINED (mr); -+ -+ if ((result = mysql_store_result (mysqldb))) -+ { -+ int rcount = mysql_num_rows (result); -+ int fcount = mysql_num_fields (result); -+ int count = rcount * fcount; -+ -+ char **data = pcalloc (cmd->tmp_pool, sizeof (char *) * (count + 1)); -+ for (i = 0, count = 0; i < rcount; i++) -+ { -+ sql_row = mysql_fetch_row (result); -+ for (j = 0; j < fcount; j++) -+ data[count++] = pstrdup (cmd->tmp_pool, sql_row[j]); -+ } -+ mysql_free_result (result); -+ data[count] = NULL; -+ mr->data = data; -+ } -+ return mr; -+} -+ -+static authtable mysql_authtab[] = { -+ {0, "dbd_open", sql_cmd_open}, -+ {0, "dbd_close", sql_cmd_close}, -+ {0, "dbd_update", sql_cmd_update}, -+ {0, "dbd_select", sql_cmd_select}, -+ -+ {0, NULL, NULL} -+}; -+ -+/* **************************************************************** */ -+ -+MODRET set_sqlinfo (cmd_rec * cmd) -+{ -+ CHECK_ARGS (cmd, 4); -+ CHECK_CONF (cmd, CONF_ROOT | CONF_GLOBAL | CONF_VIRTUAL); -+ add_config_param_str ("MySQLInfo", 4, -+ (void *) cmd->argv[1], (void *) cmd->argv[2], -+ (void *) cmd->argv[3], (void *) cmd->argv[4]); -+ return HANDLED (cmd); -+} -+ -+static conftable mysql_conftab[] = { -+/* *INDENT-OFF* */ -+ -+ { "MySQLInfo", set_sqlinfo, NULL }, -+ -+ { 0, NULL } -+ -+/* *INDENT-ON* */ -+}; -+ -+/* **************************************************************** */ -+ -+static int -+mysql_modinit () -+{ -+ config_rec *c; -+ -+ memset (&g, 0, sizeof (g)); -+ if (!(c = find_config (CURRENT_CONF, CONF_PARAM, "MySQLInfo", FALSE))) -+ return 0; -+ -+ g.sql_host = pstrdup (session.pool, c->argv[0]); -+ g.sql_user = pstrdup (session.pool, c->argv[1]); -+ g.sql_pass = pstrdup (session.pool, c->argv[2]); -+ g.sql_dbname = pstrdup (session.pool, c->argv[3]); -+ g.ok = TRUE; -+ -+ log_debug (DEBUG5, "%s: configured: db %s at %s@%s", -+ MOD_MYSQL_VERSION, g.sql_dbname, g.sql_user, g.sql_host); -+ return 0; -+} -+ -+module mysql_module = { -+ NULL, NULL, /* Always NULL */ -+ 0x20, /* API Version 2.0 */ -+ "mysql", -+ mysql_conftab, /* SQL configuration handler table */ -+ NULL, /* SQL command handler table */ -+ mysql_authtab, /* SQL authentication handler table */ -+ mysql_modinit, /* Pre-fork "parent-mode" init */ -+ mysql_modinit /* Post-fork "child mode" init */ -+}; |