当前位置:Gxlcms > 数据库问题 > mysql_auth.c 一段C代码

mysql_auth.c 一段C代码

时间: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   

人气教程排行