⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpgsql.c

📁 相当优秀的 UNIX 进程管理工具
💻 C
📖 第 1 页 / 共 3 页
字号:
level_cur, level_max, \level_start0, level_start1, level_start2, \level_end0, level_end1, level_end2, \level_mod0, level_mod1, level_mod2, \level_index0, level_index1, level_index2, the_dir ) values ( \'%s', %lu, %d, %d, \%d, %d, %d, \%d, %d, %d, \%d, %d, %d, \%d, %d, %d, \'%s')\n",	   domain, vdir->cur_users, vdir->level_cur, vdir->level_max,	   vdir->level_start[0], vdir->level_start[1], vdir->level_start[2],	   vdir->level_end[0], vdir->level_end[1], vdir->level_end[2],	   vdir->level_mod[0], vdir->level_mod[1], vdir->level_mod[2],	   vdir->level_index[0], vdir->level_index[1], vdir->level_index[2],	   vdir->the_dir);  pgres=PQexec(pgc, SqlBufUpdate);  if ( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    PQclear(pgres);    vcreate_dir_control(domain);    if ( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr, "vwrite_dir_control: %s\n", PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(-1);    }  }  PQclear(pgres);  return pg_end(); /* end transcation */}void vcreate_dir_control(char *domain){  PGresult *pgres;  vauth_create_table ("dir_control", DIR_CONTROL_TABLE_LAYOUT, 1);  qnprintf(SqlBufUpdate, SQL_BUF_SIZE, "insert into dir_control ( \domain, cur_users, \level_cur, level_max, \level_start0, level_start1, level_start2, \level_end0, level_end1, level_end2, \level_mod0, level_mod1, level_mod2, \level_index0, level_index1, level_index2, the_dir ) values ( \\'%s\', 0, \0, %d, \0, 0, 0, \%d, %d, %d, \0, 2, 4, \0, 0, 0, \\'\')\n",    domain, MAX_DIR_LEVELS, MAX_DIR_LIST-1, MAX_DIR_LIST-1, MAX_DIR_LIST-1);  pgres = PQexec( pgc, SqlBufUpdate );  if ( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    fprintf(stderr, "vcreate_dir_control: insert failed: %s\n", 	    PQerrorMessage(pgc));	  if (pgres) PQclear (pgres);      return;  }  PQclear(pgres);}int vdel_dir_control(char *domain){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf(SqlBufUpdate, SQL_BUF_SIZE, 	   "delete from dir_control where domain = '%s'", 	   domain);   pgres=PQexec(pgc, SqlBufUpdate);  if ( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    PQclear(pgres);    vcreate_dir_control(domain);    qnprintf(SqlBufUpdate, SQL_BUF_SIZE, 	     "delete from dir_control where domain = '%s'", 	     domain);     if ( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr, "vdel_dir_control: delete failed[e]: %s\n", 	      PQerrorMessage(pgc));      err=-1;    }  }  if( pgres ) PQclear(pgres);  return err;}#ifdef ENABLE_AUTH_LOGGINGint vset_lastauth(char *user, char *domain, char *remoteip ){  PGresult *pgres;  int err=0;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf( SqlBufUpdate, SQL_BUF_SIZE,    "UPDATE lastauth SET remote_ip='%s', timestamp=%lu " \    "WHERE userid='%s' AND domain='%s'", remoteip, time(NULL), user, domain); #ifdef DEBUGfprintf(stderr,"UPDATE command to run is \n\n%s\n\n", SqlBufUpdate);#endif  pgres=PQexec(pgc, SqlBufUpdate);  if (pgres && PQresultStatus(pgres) == PGRES_COMMAND_OK && atoi(PQcmdTuples(pgres)) == 0) {#ifdef DEBUGfprintf(stderr,"UPDATE returned OK but had 0 rows\n");#endif    if( pgres ) PQclear(pgres);    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,      "INSERT INTO lastauth (userid, domain, remote_ip, timestamp) " \      "VALUES ('%s', '%s', '%s', %lu)", user, domain, remoteip, time(NULL)); #ifdef DEBUGfprintf(stderr,"INSERT command to run is \n\n%s\n\n", SqlBufUpdate);#endif    pgres=PQexec(pgc, SqlBufUpdate);    }/* UPDATE returned 0 rows and/or INSERT failed.  Try creating the table */  if(!pgres || PQresultStatus(pgres) != PGRES_COMMAND_OK) {#ifdef DEBUGfprintf(stderr,"UPDATE and/or INSERT failed.  error was %s\n", PQerrorMessage(pgc));#endif    if( pgres ) PQclear(pgres);#ifdef DEBUGfprintf(stderr, "update returned 0 and/or insert failed in vset_lastauth()\n");#endif    vcreate_lastauth_table();/* and try INSERTing now... */    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,      "INSERT INTO lastauth (userid, domain, remote_ip, timestamp) " \      "VALUES ('%s', '%s', '%s', %lu)", user, domain, remoteip, time(NULL));     pgres=PQexec(pgc, SqlBufUpdate);    }  if ( !pgres || PQresultStatus(pgres) != PGRES_COMMAND_OK ) {    fprintf( stderr, "vset_lastauth[f]: %s\n: %s\n", SqlBufUpdate,PQerrorMessage(pgc));    if( pgres ) PQclear(pgres);    return (-1);  }  if( pgres ) PQclear(pgres);  return(0);}time_t vget_lastauth(struct vqpasswd *pw, char *domain){  PGresult *pgres;  int err, ntuples;  time_t mytime;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf( SqlBufRead,  SQL_BUF_SIZE, "SELECT timestamp FROM lastauth WHERE userid='%s' AND domain='%s'", pw->pw_name, domain);  pgres=PQexec(pgc, SqlBufRead);  if ( !pgres || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {    if( pgres ) PQclear(pgres);    vcreate_lastauth_table();    qnprintf( SqlBufRead,  SQL_BUF_SIZE, "SELECT timestamp FROM lastauth WHERE userid='%s' AND domain='%s'", pw->pw_name, domain);    pgres=PQexec(pgc, SqlBufRead);    if ( !pgres || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {      fprintf(stderr,"vpgsql: sql error[g]: %s\n", PQerrorMessage(pgc));      return(0);    }  }  ntuples = PQntuples(pgres);  mytime = 0;  if( ntuples ) { /* got something */    mytime = atol( PQgetvalue(pgres, ntuples-1, 0));  }  if( pgres ) PQclear(pgres);  return(mytime);}char *vget_lastauthip(struct vqpasswd *pw, char *domain){  PGresult *pgres;  static char tmpbuf[100];  int ntuples=0;  if ( vauth_open() != 0 ) return(NULL);  qnprintf( SqlBufRead,  SQL_BUF_SIZE, "select remote_ip from lastauth where userid='%s' and domain='%s'",  pw->pw_name, domain);  pgres=PQexec(pgc, SqlBufRead);  if ( !pgres || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {    if( pgres ) PQclear(pgres);    vcreate_lastauth_table();    qnprintf( SqlBufRead,  SQL_BUF_SIZE, "select remote_ip from lastauth where userid='%s' and domain='%s'", pw->pw_name, domain);    pgres=PQexec(pgc, SqlBufRead);    if ( !pgres || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {      fprintf( stderr,"vpgsql: sql error[h]: %s\n", PQerrorMessage(pgc));      return(NULL);    }  }  ntuples = PQntuples(pgres);  if( ntuples ) { /* got something */    strncpy(tmpbuf, PQgetvalue(pgres, ntuples-1, 0),100 );  }  if( pgres ) PQclear(pgres);  return(tmpbuf);}void vcreate_lastauth_table(){  vauth_create_table ("lastauth", LASTAUTH_TABLE_LAYOUT, 1);  return;}#endif /* ENABLE_AUTH_LOGGING */#ifdef VALIASchar *valias_select( char *alias, char *domain ){  int err, verrori;  if ( (err=vauth_open()) != 0 ) {    verrori = err;    return(NULL);  }  /* if we're already in a query, clear it out before starting a new one */  if (pgvalias) PQclear(pgvalias);  qnprintf( SqlBufRead, SQL_BUF_SIZE, 	    "select valias_line from valias where alias='%s' and domain='%s'",	    alias, domain );  if ( ! (pgvalias=PQexec(pgc, SqlBufRead))        || PQresultStatus(pgvalias) != PGRES_TUPLES_OK ) {    if(pgvalias) PQclear(pgvalias);    vcreate_valias_table();    if ( ! (pgvalias=PQexec(pgc, SqlBufRead)) 	 || PQresultStatus(pgvalias) != PGRES_TUPLES_OK ) {      fprintf(stderr,"vpgsql: sql error[j]: %s\n", 	      PQerrorMessage(pgc));	  if (pgvalias) PQclear(pgvalias);      return(NULL);    }  }    return valias_select_next();}char *valias_select_next(){  if ( PQntuples(pgvalias) > 0 ) {    return( PQgetvalue( pgvalias, 0, 0 ) );  }  if(pgvalias) PQclear(pgvalias);  return(NULL);}int valias_insert( char *alias, char *domain, char *alias_line){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(err);  while(*alias_line==' ') ++alias_line;  qnprintf( SqlBufUpdate, SQL_BUF_SIZE,    "insert into valias(alias,domain,valias_line) values ('%s','%s','%s')",	    alias, domain, alias_line );  pgres=PQexec( pgc, SqlBufUpdate );  if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    if(pgres) PQclear(pgres);    vcreate_valias_table();    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,    "insert into valias(alias,domain,valias_line) values ('%s','%s','%s')",	    alias, domain, alias_line );    pgres=PQexec( pgc, SqlBufUpdate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr,"vpgsql: sql error[k]: %s\n", PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(-1);    }    if(pgres) PQclear(pgres);    return(0);  }  return(-1);}int valias_delete( char *alias, char *domain){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf( SqlBufUpdate, SQL_BUF_SIZE, 	    "delete from valias where alias='%s' and domain='%s'", 	    alias, domain );  pgres=PQexec( pgc, SqlBufUpdate );  if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    if(pgres) PQclear(pgres);    vcreate_valias_table();    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, 	      "delete from valias where alias='%s' and domain='%s'", 	      alias, domain );    pgres=PQexec( pgc, SqlBufUpdate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr,"vpgsql: sql error: %s\n", PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(-1);    }  }  if(pgres) PQclear(pgres);  return(0);}int valias_remove( char *alias, char *domain, char *alias_line){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf( SqlBufUpdate, SQL_BUF_SIZE, 	    "delete from valias where alias='%s' and valias_line='%s' and domain='%s'", 	    alias, alias_line, domain );  pgres=PQexec( pgc, SqlBufUpdate );  if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    if(pgres) PQclear(pgres);    vcreate_valias_table();    pgres=PQexec( pgc, SqlBufUpdate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr,"vpgsql: sql error: %s\n", PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(-1);    }  }  if(pgres) PQclear(pgres);  return(0);}int valias_delete_domain( char *domain){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(err);  qnprintf( SqlBufUpdate, SQL_BUF_SIZE, 	    "delete from valias where domain='%s'", domain );  pgres=PQexec( pgc, SqlBufUpdate );  if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    if(pgres) PQclear(pgres);    vcreate_valias_table();    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, 	      "delete from valias where domain='%s'", domain );    pgres=PQexec( pgc, SqlBufUpdate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr,"vpgsql: sql error: %s\n", PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(-1);    }  }  if(pgres) PQclear(pgres);  return(0);}void vcreate_valias_table(){  PGresult *pgres;  char SqlBufCreate[SQL_BUF_SIZE];  vauth_create_table ("valias", VALIAS_TABLE_LAYOUT, 1);    snprintf( SqlBufCreate, SQL_BUF_SIZE,	"create index valias_idx on valias ( %s )", VALIAS_INDEX_LAYOUT );    pgres=PQexec( pgc, SqlBufCreate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      fprintf(stderr,"vpgsql:sql error[n.i]:%s\n", PQerrorMessage(pgc));      if( pgres ) PQclear(pgres);      return;    }    if( pgres ) PQclear(pgres);    return;}char *valias_select_all( char *alias, char *domain ){  PGresult *pgres;  int err;  if ( (err=vauth_open()) != 0 ) return(NULL);  qnprintf( SqlBufRead, SQL_BUF_SIZE, 	    "select alias, valias_line from valias where domain = '%s' order by alias", 	    domain );  if ( ! (pgres=PQexec(pgc, SqlBufRead))       || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {    if(pgres) PQclear(pgres);    vcreate_valias_table();    if ( ! (pgres=PQexec(pgc, SqlBufRead))         || PQresultStatus(pgres) != PGRES_TUPLES_OK ) {      fprintf(stderr,"vpgsql: sql error[o]: %s\n",              PQerrorMessage(pgc));      if (pgres) PQclear (pgres);      return(NULL);    }  }  if ( PQntuples(pgres) > 0 ) {    strcpy( alias, PQgetvalue( pgres, 0, 0 ) );    return( PQgetvalue( pgres, 0, 1 ) );  }  if(pgres) PQclear(pgres);  return(NULL);}char *valias_select_all_next(char *alias){  /* moved to last bit of valias_select_all */}#endif#ifdef ENABLE_PGSQL_LOGGINGint logpgsql(	int verror, char *TheUser, char *TheDomain, char *ThePass, 		char *TheName, char *IpAddr, char *LogLine) {  PGresult *pgres;  int err;  time_t mytime;  mytime = time(NULL);  if ( (err=vauth_open()) != 0 ) return(err);  /*  qnprintf( SqlBufUpdate, SQL_BUF_SIZE,	    "INSERT INTO vlog set userid='%s', passwd='%s', \        domain='%s', logon='%s', remoteip='%s', message='%s', \        error=%i, timestamp=%d", TheUser, ThePass, TheDomain,        TheName, IpAddr, LogLine, verror, (int)mytime);  */  qnprintf( SqlBufUpdate, SQL_BUF_SIZE,  "INSERT INTO vlog (userid,passwd,domain,logon,remoteip,message,error,timestamp values('%s','%s','%s','%s','%s','%s',%i,%d", 	    TheUser, ThePass, TheDomain, TheName, 	    IpAddr, LogLine, verror, (int)mytime);  pgres=PQexec( pgc, SqlBufUpdate );  if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {    if( pgres ) PQclear(pgres);    vcreate_vlog_table();  qnprintf( SqlBufUpdate, SQL_BUF_SIZE,  "INSERT INTO vlog (userid,passwd,domain,logon,remoteip,message,error,timestamp values('%s','%s','%s','%s','%s','%s',%i,%d", 	    TheUser, ThePass, TheDomain, TheName, 	    IpAddr, LogLine, verror, (int)mytime);    pgres=PQexec( pgc, SqlBufUpdate );    if( !pgres || PQresultStatus(pgres)!=PGRES_COMMAND_OK ) {      if( pgres ) PQclear(pgres);      fprintf(stderr,"error inserting into lastauth table\n");    }  }  if( pgres ) PQclear(pgres);  return(0);}void vcreate_vlog_table(){  vauth_create_table ("vlog", VLOG_TABLE_LAYOUT, 1);  return;}#endifint vauth_crypt(char *user,char *domain,char *clear_pass,struct vqpasswd *vpw){	  if ( vpw == NULL ) return(-1);	    return(strcmp(crypt(clear_pass,vpw->pw_passwd),vpw->pw_passwd));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -