- 전체
- ServerSpecific
- Tips
- Apps (Freeware)
- Apps
- BulitIn
- News
- MyStories
- Apps (iPhone/iPod Touch)
- Report
- Hardware
Tips [펌] PureFtpd - Mysql-auth per user connection limit feature
2009.02.25 12:02
http://osdir.com/ml/network.pureftpd.user/2005-11/msg00066.html
Mysql-auth per user connection limit feature: msg#00066
network.pureftpd.user
Subject: Mysql-auth per user connection limit feature
I needed this feature, but haven't found any solution, so i implemented it,
and i saw, that some other people needs it too, so made a patch.
Here it is:
http://dblaci.hu/pure-ftpd/pure-ftpd-1.0.20-mysqlperusermax.patch
I added a comment to the feature request 993994 too.
DBLaci
p.s. i don't know if this mail is going to the right place, if not, sorry.
---------------------------------------------------------------------
To post a new message, e-mail: list@xxxxxxxxxxxx
To unsubscribe, e-mail: list-unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: list-help@xxxxxxxxxxxx
--- pure-ftpd-1.0.20.old/pureftpd-mysql.conf 2003-01-21 21:09:44.000000000 +0100
+++ pure-ftpd-1.0.20/pureftpd-mysql.conf 2005-11-18 12:27:34.000000000 +0100
@@ -106,6 +106,12 @@
# MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="L"
# MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="L"
+# Optional : concurrent session limit per user.
+# The server has to be compiled with per-user-limits support.
+# Value 0 means unlimited. (default)
+
+#MySQLGetPerUserMax SELECT PerUserMax FROM users WHERE User="L"
+
# Optional : bandwidth throttling.
# The server has to be compiled with throttling support.
diff -ur pure-ftpd-1.0.20.old/src/log_mysql.c pure-ftpd-1.0.20/src/log_mysql.c
--- pure-ftpd-1.0.20.old/src/log_mysql.c 2004-05-15 23:14:06.000000000 +0200
+++ pure-ftpd-1.0.20/src/log_mysql.c 2005-11-18 11:48:58.000000000 +0100
@@ -300,6 +300,9 @@
const char *bandwidth_ul = NULL; /* stored bandwidth UL */
const char *bandwidth_dl = NULL; /* stored bandwidth DL */
#endif
+#ifdef PER_USER_LIMITS
+ const char *perusermax = NULL; /* stored per user concurrent sessions */
+#endif
char *escaped_account = NULL;
char *escaped_ip = NULL;
char *escaped_port = NULL;
@@ -543,6 +546,18 @@
}
}
#endif
+#ifdef PER_USER_LIMITS
+ if ((perusermax = pw_mysql_getquery(id_sql_server, sqlreq_getperusermax,
+ escaped_account, escaped_ip,
+ escaped_port, escaped_peer_ip,
+ escaped_decimal_ip)) != NULL) {
+ const unsigned long q = (unsigned long) strtoul(perusermax, NULL, 10);
+
+ if (q > 0UL) {
+ result->per_user_max = q;
+ }
+ }
+#endif
result->slow_tilde_expansion = !tildexp;
result->auth_ok =- result->auth_ok;
bye:
@@ -572,6 +587,9 @@
free((void *) bandwidth_ul);
free((void *) bandwidth_dl);
#endif
+#ifdef PER_USER_LIMITS
+ free((void *) perusermax);
+#endif
free((void *) escaped_account);
free((void *) escaped_ip);
free((void *) escaped_port);
diff -ur pure-ftpd-1.0.20.old/src/log_mysql_p.h pure-ftpd-1.0.20/src/log_mysql_p.h
--- pure-ftpd-1.0.20.old/src/log_mysql_p.h 2004-02-29 22:49:28.000000000 +0100
+++ pure-ftpd-1.0.20/src/log_mysql_p.h 2005-11-18 11:21:18.000000000 +0100
@@ -38,6 +38,9 @@
static char *sqlreq_getbandwidth_ul;
static char *sqlreq_getbandwidth_dl;
#endif
+#ifdef PER_USER_LIMITS
+static char *sqlreq_getperusermax;
+#endif
static signed char server_down;
static ConfigKeywords mysql_config_keywords[] = {
@@ -68,6 +71,9 @@
{ "MYSQLGetBandwidthUL", &sqlreq_getbandwidth_ul },
{ "MYSQLGetBandwidthDL", &sqlreq_getbandwidth_dl },
#endif
+#ifdef PER_USER_LIMITS
+ { "MYSQLGetPerUserMax", &sqlreq_getperusermax },
+#endif
{ NULL, NULL }
};