Example #1
0
File: db.c Project: BPotato/fluffos
static int msql_connect (dbconn_t * c, char * host, char * database, char * username, char * password)
{
	c->msql.handle = msqlConnect(host);
	if (c->msql.handle < 1) {
		return 0;
	}

	if (msqlSelectDB(c->msql.handle, database) == -1) {
		msqlClose(c->msql.handle);
		return 0;
	}

	c->msql.result_set = 0;
	return 1;
}
Example #2
0
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

boolean mSQLDBConnection::connect(Properties *cfg){
   char *tmp = strdupn( cfg->get(DBC_HOST) );
   sock = msqlConnect(tmp);
   free(tmp);
   
   if (sock < 0)
      return false;

   tmp = strdupn( cfg->get(DBC_DATABASE) );
   if (msqlSelectDB(sock, tmp) < 0){
      //msqlClose(sock);
      sock = -1;
Example #3
0
void main(void)
{
int dbh;
m_result *tmp;
m_row res;
time_t clock;

	if( (dbh=msqlConnect(NULL))<0)
		die(msqlErrMsg);

	if( msqlSelectDB(dbh, "web") < 0)
		die(msqlErrMsg);

	if( msqlQuery(dbh, "select hostname, who_updated, date_updated from virtuals") < 0)
		die(msqlErrMsg);

	tmp=msqlStoreResult();

	puts("Content-type: text/html\n");

	puts("<html><head><title>Virtual Hosts</title></head>\n");
	puts("<body bgcolor=\"ffffff\">\n");
	puts("<h2>Virtual Hosts on Heavy</h2>\n<table>\n");
	puts("<tr><td>Hostname</td><td>Who updated</td><td>Last Updated</td></tr>");

	while( (res=msqlFetchRow(tmp)) !=NULL)
	{
		clock=atol(res[2]);

		printf("<tr><td color=\"eeeeff\"><a \
		href=\"/cgi-bin/tools/hosts/gethostinfo.cgi?%s\">%s</a></td> \
		<td>%s</td><td>%s</td></tr>\n",
		res[0], res[0], res[1], ctime(&clock) );
	}

	puts("</table><hr align=\"left\" width=\"50%\">");
	puts("<font size=\"-2\">");
	puts("Copyright &copy 1996 <a href=\"http://www.ipa.net/\">Internet Partners of America</a>");
	puts("</font></body></html>");
	msqlFreeResult(tmp);
	msqlClose(dbh);
}
Example #4
0
void main(int argc, char *argv[])
{
int dbh, tmpint;
m_result *tmp;
m_row res;
char query[500];
static char *selected="SELECTED";
char *c[2]={"", ""}, *t[2]={"", ""}, *e[2]={"", ""}, *a[2]={"", ""};
struct cgiform *form;
char *hostname;

    puts("Content-type: text/html\n");
    puts("<html><head><title>Info</title></head>\n");
    puts("<body bgcolor=\"ffffff\">\n");

    if( (dbh=msqlConnect(NULL))<0)
	die(msqlErrMsg);

    if( msqlSelectDB(dbh, "web") < 0)
	die(msqlErrMsg);

    if(argc>1)
    {
	hostname=argv[1];
    }
    else
    {
        form=cgiinit();
	hostname=cgigetdata(form, "hostname");
    }

    sprintf(query, "select * from virtuals where hostname='%s'", hostname);

    if( msqlQuery(dbh, query) < 0)
    {
	printf("Oops, didn't like that:  %s<br>\n", msqlErrMsg);
	puts("</body></html>");
	exit(0);
    }

    tmp=msqlStoreResult();

    puts("<h2>Edit a virtual host</h2>");
    puts("<form action=\"/cgi-bin/tools/hosts/edithost.cgi\" \
        method=\"POST\">");

    res=msqlFetchRow(tmp);

    if(res==NULL)
    {
	printf("Problem getting the data<br>\n");
	puts("</body></html>");
	exit(0);
    }

    tmpint=atoi(res[6]);
    c[tmpint]=selected;

    tmpint=atoi(res[4]);
    t[tmpint]=selected;

    tmpint=atoi(res[5]);
    e[tmpint]=selected;

    tmpint=atoi(res[9]);
    a[tmpint]=selected;

    puts("<table>\n");
    printf("<tr><td>Hostname:</td><td><input name=\"hostname\" \
	value=\"%s\"></td></tr>\n", res[0]);

    printf("<tr><td>Admin:</td><td><input name=\"admin\" \
	value=\"%s\"></td></tr>\n", res[1]);

    printf("<tr><td>User:</td><td><input name=\"user\" \
	value=\"%s\"></td></tr>\n", res[2]);

    printf("<tr><td>Group:</td><td><input name=\"group\" \
	value=\"%s\"></td></tr>\n", res[3]);


    printf("<tr><td>Keep Transfer log:</td><td><select name=\"trans_log\">\
	<option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n",
	t[0], t[1]);

    printf("<tr><td>Keep Error log:</td><td><select name=\"err_log\">\
	<option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n",
	e[0], e[1]);

    printf("<tr><td>Create CGI bin:</td><td><select name=\"cgi_bin\">\
	<option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n",
	c[0], c[1]);

    printf("<tr><td>Active:</td><td><select name=\"active\">\
	<option value=\"0\" %s>No\n<option value=\"1\" %s>Yes</select>\n",
	a[0], a[1]);

    puts("</table><input type=\"submit\" value=\"Save it\"></form><br>");
    printf("<a href=\"/cgi-bin/tools/hosts/deletehost.cgi?%s\">Delete %s</a>",
	res[0], res[0]);
    puts("<hr align=\"left\" width=\"50%\">");
    puts("<font size=\"-2\">");
    puts("Copyright &copy 1996 <a href=\"/\">SPY Internetworking</a>");
    puts("</font></body></html>");
    msqlFreeResult(tmp);
    msqlClose(dbh);
}
Example #5
0
int
main()
{
  string SSN1 = "123-45-1001";
  string SSN2 = "123-45-1002";
  string SSN3 = "123-45-1003";
  string SSN4 = "123-45-1004";
  string SSN5 = "123-45-1005";

  string Name1 = "Chess";
  string Name2 = "Bridge";
  string Name3 = "Tennis";

  time_t today;

  Person   	*p;
  Club     	*c;
  Membership 	*m;
  int      	 handle;

  today = time( &today );

  // load the specific configuration file
  //
  if ( msqlLoadConfigFile( "/web/kochut/public_html/msql.conf" ) == -1 ) {
    cerr << "mSQL error: " << msqlErrMsg << endl;
    cerr << "\nProbable cause: SQL server is not running.\n";
    cerr << "\n                or server miscunfiguration in msql.conf.\n";
    cerr << "\nSolution:       Reconfigure/Restart the server\n";
    exit(1);
  }


  // connect to the database server on ajax
  //
  if ( ( handle = msqlConnect( "ajax.cs.uga.edu" ) ) == -1 ) {
    cerr << "mSQL error: " << msqlErrMsg << endl;
    cerr << "\nProbable cause: SQL server is not running.\n";
    cerr << "\nSolution:       Restart the server\n";
    exit(1);
  }

  // open database 'clubs'
  //
  if ( msqlSelectDB( handle, "clubs" ) == -1 ) {
    cerr << "mSQL error: " << msqlErrMsg << endl;
    cerr << "\nProbable cause: databse clubs does not exist.\n";
    cerr << "\nSolution:       create the database using msqladmin creat clubs\n";
    exit(1);
  }


  // retrieve a Club object
  //
  try {

    c = Club::DBRead( Name1, handle );

    p = Person::DBRead( SSN1, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    p = Person::DBRead( SSN3, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    cout << "Added members to club: " << Name1 << endl;


    // retrieve a Club object
    //
    c = Club::DBRead( Name2, handle );

    p = Person::DBRead( SSN2, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    p = Person::DBRead( SSN3, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    p = Person::DBRead( SSN5, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    cout << "Added members to club: " << Name2 << endl;


    // retrieve a Club object
    //
    c = Club::DBRead( Name3, handle );

    p = Person::DBRead( SSN4, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    p = Person::DBRead( SSN2, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

    p = Person::DBRead( SSN5, handle );

    m = new Membership( p, c, today );
    m->DBWrite( handle );

  }
  catch ( ClubsException &ce ) {
    cerr << ce.get_Msg() << endl;
    exit(1);
  }

  cout << "Added members to club: " << Name3 << endl;


  cout << endl;
  cout << "Club memberships have been written to the database.\n";
  cout << "Closing the database.\n";

  // close the database
  //
  msqlClose( handle );

  return 0;
  
}
/*
 * SubVar
 *
 * This function substitutes variables designated by the leading separator (sep)
 * with values with matching names.  The string buffer will be realloced in 512-byte
 * chunks if needed.
 */
char *SubVar(char sep, char *var_name, char *var_value, char *oldbuf, int *bufsize) {
    char *buf, *s, *t;
    int l, n;
    char o;
    char *local_buf;
#if MSQL
	char *u;
	int i,j;
    int numi, numj;
    char temp[1024];
    m_result *result=NULL;
    m_row record;
    int new_connection=0;
#endif
 
    l=strlen(oldbuf);
    n=strlen(var_value);
 
    if(l-(int)strlen(var_name)-1+(int)strlen(var_value) >(int)(*bufsize-1)) {

#if DEBUG
        fprintf(fperr,"Query buffer re-allocated\n");
        fflush(fperr);
#endif

        buf=realloc(oldbuf,*bufsize+((n>512)?n:512));
        *bufsize+=((n>512)?n:512);
    } else buf=oldbuf;
 
    /* I don't trust strdup() on many systems */
    local_buf=malloc(*bufsize*sizeof(char));
    strcpy(local_buf,buf);
 
    if(!local_buf) {
        html_error("FI Error","Unable to allocate memory");
        exit(-1);
    }
    s=local_buf;
 
    while(*s!='\0') {
        if(*s==sep) {
            if(s>local_buf && *(s-1)=='\\') {  /* Allow for escaping the separator */
                s++;
                continue;
            }
            n=strcspn(s+1," ,()'\n:;.{}[]-+=~!@#$%^*<>\"");
 
            t=s+n+1;
            o=*t;
            *t='\0';
            if(!strcasecmp(var_name,s+1)) {
                *s='\0';
#if MSQL
                if(!strcasecmp(var_name,"sql")) {
                    /* looking for database name */
 
#if DEBUG
                    fprintf(fperr,"var_name=[%s], var_value=[%s]\n",var_name,var_value);
                    fflush(fperr);
#endif
 
                    u=strchr(var_value,' ');
                    if(u) {
                        *u='\0';
                        if(strlen(current_db)==0) {
                            if(dbsock==-1) {
                                dbsock=msqlConnect(NULL);
                                new_connection=1;
                            }
                            if(msqlSelectDB(dbsock,var_value)<0) {
                                strcpy(temp,msqlErrMsg);
                                current_db[0]='\0';
                            } else {
                                strcpy(current_db,var_value);
                            }
                        }
                        if(msqlQuery(dbsock,u+1)<0) strcpy(temp,msqlErrMsg);
                        else {
                            temp[0]='\0';
                            msqlStoreResult(result);
                            numi=msqlNumRows(result);
                            for(i=0;i<numi;i++) {
                                if(strlen(before_record)) strcat(temp,before_record);
                                msqlDataSeek(result,i);
                                numj=msqlNumFields(result);
                                record=msqlFetchRow(result);
                                for(j=0;j<numj;j++) {
                                    if(strlen(before_element)) strcat(temp,before_element);
                                    strcat(temp,record[j]);
                                    if(strlen(after_element)) strcat(temp,after_element);
                                }
                                if(strlen(after_record)) strcat(temp,after_record);
                            }
                            msqlFreeResult(result);
                            if(new_connection) {
                                msqlClose(dbsock);
                                dbsock=-1;
                                current_db[0]='\0';
                            }
                        }
                    }
                }
#endif
                sprintf(buf,"%s%s%c%s",local_buf,var_value,o,t+1);
                strcpy(local_buf,buf);
            } else {
                *t=o;
            }
            s=t+1;
        } else s++;
    }
    free(local_buf);
    return(buf);
}
Example #7
0
SQLRETURN SQLConnect(	SQLHDBC        hDrvDbc,
						SQLCHAR        *szDataSource,
						SQLSMALLINT    nDataSourceLength,
						SQLCHAR        *szUID,
						SQLSMALLINT    nUIDLength,
						SQLCHAR        *szPWD,
						SQLSMALLINT    nPWDLength
                          )
{
	HDRVDBC 	hDbc	= (HDRVDBC)hDrvDbc;
    char    	szDATABASE[INI_MAX_PROPERTY_VALUE+1];
    char    	szCONFIGFILE[INI_MAX_PROPERTY_VALUE+1];
    char    	szHOST[INI_MAX_PROPERTY_VALUE+1];

    /* SANITY CHECKS */
    if( SQL_NULL_HDBC == hDbc )
		return SQL_INVALID_HANDLE;

	sprintf( hDbc->szSqlMsg, "hDbc=$%08lX szDataSource=(%s)", hDbc, szDataSource );
	logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );

    if( hDbc->bConnected == 1 )
    {
		logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Already connected" );
        return SQL_ERROR;
    }

    if ( strlen( szDataSource ) > ODBC_FILENAME_MAX+INI_MAX_OBJECT_NAME )
    {
		logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, "SQL_ERROR Given Data Source is too long. I consider it suspect." );
        return SQL_ERROR;
    }

    /********************
     * gather and use any required DSN properties
	 * - CONFIGFILE - for msqlLoadConfigFile() (has precedence over other properties)
	 * - DATABASE
	 * - HOST (localhost assumed if not supplied)
     ********************/
    szDATABASE[0] 		= '\0';
    szHOST[0] 			= '\0';
    szCONFIGFILE[0] 	= '\0';
	SQLGetPrivateProfileString( szDataSource, "DATABASE", "", szDATABASE, sizeof(szDATABASE), ".odbc.ini" );
	if ( szDATABASE[0] == '\0' )
	{
		sprintf( hDbc->szSqlMsg, "SQL_ERROR Could not find Driver entry for %s in system information", szDataSource );
		logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
		return SQL_ERROR;
	}
	SQLGetPrivateProfileString( szDataSource, "HOST", "", szHOST, sizeof(szHOST), ".odbc.ini" );
	SQLGetPrivateProfileString( szDataSource, "CONFIGFILE", "", szCONFIGFILE, sizeof(szCONFIGFILE), ".odbc.ini" );

    /********************
     * 1. initialise structures
     * 2. try connection with database using your native calls
     * 3. store your server handle in the extras somewhere
     * 4. set connection state
     *      hDbc->bConnected = TRUE;
     ********************/
	if ( szCONFIGFILE[0] != '\0' )
	{
		if ( msqlLoadConfigFile( szCONFIGFILE ) != 0 )
		{
			sprintf( hDbc->szSqlMsg, "SQL_ERROR %s", msqlErrMsg );
			logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
			sprintf( hDbc->szSqlMsg, "SQL_WARNING Failed to use (%s)", szCONFIGFILE );
			logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
			return SQL_ERROR;
		}
	}

	if ( szHOST[0] == '\0' )
	{
		hDbc->hDbcExtras->hServer = msqlConnect( NULL );    /* this is faster than using localhost */
		strcpy( szHOST, "localhost" );
	}
	else
		hDbc->hDbcExtras->hServer = msqlConnect( szHOST );

	if ( hDbc->hDbcExtras->hServer < 0 )
	{
		sprintf( hDbc->szSqlMsg, "SQL_ERROR %s", msqlErrMsg );
		logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
		sprintf( hDbc->szSqlMsg, "SQL_ERROR Failed to connect to (%s)", szHOST );
		logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
		return SQL_ERROR;
	}

	hDbc->bConnected = 1;

	/* SET DATABASE */
	if ( szDATABASE[0] != '\0' )
	{
		if ( msqlSelectDB( hDbc->hDbcExtras->hServer, szDATABASE ) == -1 )
		{
			sprintf( hDbc->szSqlMsg, "SQL_WARNING %s", msqlErrMsg );
			logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
			sprintf( hDbc->szSqlMsg, "SQL_WARNING Connected to server but failed to use database (%s)", szDATABASE );
			logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
		}
		else
		{
			sprintf( hDbc->szSqlMsg, "SQL_INFO DATABASE=%s", szDATABASE );
			logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_WARNING, LOG_WARNING, hDbc->szSqlMsg );
		}

	}

    logPushMsg( hDbc->hLog, __FILE__, __FILE__, __LINE__, LOG_INFO, LOG_INFO, "SQL_SUCCESS" );

    return SQL_SUCCESS;
}