时间:2021-07-01 10:21:17 帮助过:40人阅读
* * mysql_auth.c
* *
* * Copyright 1998 Frank Liu (frank@ctcqnx4.ctc.cummins.com)
* * Distributed under the GPL
* *
* * 26 Sep 1999, version 2:
* * 1. fixed a bug where A_TABLE is defined but never used.
* * (thanks to luciano.ghezzi@linux.it)
* * 2. now you can choose to use either clear text password or
* * encrypted password in the MySQL table.
* * 13 Nov 1998, version 1:
* * initial release
* * Needs to be compiled/linked with MySQL libs.
* * Assuming MySQL header files are installed in /usr/local/mysql/include
* * and MySQL libs in /usr/local/mysql/lib
* *
* *
* * gcc -O2 -Wall -o mysql_auth mysql_auth.c -L /usr/lib/mysql -lmysqlclient
* *
* * Dec, 2002.
* * Modfied by Jiang.
* * Add support for crypt password.
* */
#include "/usr/include/mysql/mysql.h"
/* comment out next line if you use clear text password in MySQL DB */
/*#define ENCRYPTED_PASS*/
/* can use NULL for localhost, current user, or no password */
#define DBHOST "localhost"
#define DBUSER "squid"
#define DB "mysql_auth"
#define DBPASSWORD "squid"
/* table for the user database for the squid authentication,
* column names for auth username and auth password */
#define A_TABLE "test"
#define A_USERNAME "username"
#define A_PASSWORD "passwd"
#define BUFSIZE 256
void main(int argc, char *argv[])
{
char buf[BUFSIZE], qbuf[BUFSIZE];
char *p;
MYSQL mysql,*sock;
MYSQL_RES *res;
}
/* make standard output line buffered */
if (setvbuf(stdout, NULL, _IOLBF, 0) != 0)
return;
while (1) {
if (fgets(buf, BUFSIZE, stdin) == NULL)
break;
if ((p = strchr(buf, ‘\n‘)) != NULL)
*p = ‘\0‘; /* strip \n */
if ((p = strchr(buf, ‘ ‘)) == NULL) {
(void) printf("ERR\n");
continue;
}
*p++ = ‘\0‘;
/* buf is username and p is password now */
if (!(sock = mysql_connect(&mysql, DBHOST, DBUSER, DBPASSWORD)))
{
/* couldn‘t connect to database server */
(void) printf("ERR\n");
continue;
}
if (mysql_select_db(sock, DB))
{
/* couldn‘t use the database */
(void) printf("ERR\n");
mysql_close(sock);
continue;
}
sprintf(qbuf, "select " A_USERNAME " from " A_TABLE " where "
A_USERNAME "=‘%s‘ and " A_PASSWORD
#ifdef ENCRYPTED_PASS
"=password(‘%s‘)", buf, p);
#else
"=‘%s‘", buf, p);
#endif
if(mysql_query(sock,qbuf) || !(res=mysql_store_result(sock)))
{
/* query failed */
(void) printf("ERR\n");
mysql_close(sock);
continue;
}
if ( res->;row_count !=0 )
(void) printf("OK\n");
else
(void) printf("ERR\n");
mysql_free_result(res);
mysql_close(sock);
}
exit(0);
}
本文出自 “江湖笑笑生” 博客,请务必保留此出处http://hashlinux.blog.51cto.com/9647696/1760561
mysql_auth.c 一段C代码
标签:copyright password version where either