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

📄 voracle.pc

📁 相当优秀的 UNIX 进程管理工具
💻 PC
📖 第 1 页 / 共 3 页
字号:
        vdir->level_index[0] = level_index0;        vdir->level_index[1] = level_index1;        vdir->level_index[2] = level_index2;	fix_name(the_dir);        strncpy(vdir->the_dir, the_dir, MAX_DIR_NAME);    }    EXEC SQL CLOSE CE;    EXEC SQL COMMIT;    if ( found == 0 ) {        vcreate_dir_control(domain);        vdir->cur_users = 0;        for(i=0;i<MAX_DIR_LEVELS;++i){            vdir->level_start[i] = 0;            vdir->level_end[i] = MAX_DIR_LIST-1;            vdir->level_index[i] = 0;        }        vdir->level_mod[0] = 0;        vdir->level_mod[1] = 2;        vdir->level_mod[2] = 4;        vdir->level_cur = 0;        vdir->level_max = MAX_DIR_LEVELS;        vdir->the_dir[0] = 0;    }    return(0);}int vwrite_dir_control(vdir_type *vdir, char *domain, uid_t uid, gid_t gid){    if ( vauth_open_update() != 0 ) return(-1);        sprintf(SqlBufUpdate, "update dir_control \set cur_users = %ld, \level_cur = %d , level_max = %d , \level_start0 = %d , level_start1 = %d , level_start2 = %d , \level_end0 = %d , level_end1 = %d , level_end2 = %d , \level_mod0 = %d , level_mod1 = %d , level_mod2 = %d , \level_index0 = %d , level_index1 = %d , level_index2 = %d , \the_dir = '%s' where domain = '%s'\n",        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, domain);/*printf("write dir control: %s\n", SqlBufUpdate);*/    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}void vcreate_dir_control(char *domain){    if ( vauth_open_update() != 0 ) return;    snprintf(SqlBufCreate, SQL_BUF_SIZE, "create table dir_control ( %s )",         DIR_CONTROL_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    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);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;}int vdel_dir_control(char *domain){ int err;    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf(SqlBufUpdate, SQL_BUF_SIZE,         "delete from dir_control where domain = '%s'",         domain);     EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}#ifdef ENABLE_AUTH_LOGGINGint vset_lastauth(char *user, char *domain, char *remoteip ){ int err;    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,"update lastauth set pw_user='%s', pw_domain='%s', \remote_ip='%s', timestamp=%lu", user, domain, remoteip, time(NULL)); fprintf(stderr, "auth log: %s\n", SqlBufUpdate);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}time_t vget_lastauth(struct vqpasswd *pw, char *domain){ int err; time_t mytime;    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf( SqlBufUpdate,  SQL_BUF_SIZE,    "select timestamp from lastauth where pw_user='%s' and pw_domain='%s'",         pw->pw_name, domain);    EXEC SQL PREPARE SD FROM :SqlBufUpdate;    EXEC SQL DECLARE CD CURSOR FOR SD;    EXEC SQL OPEN CD;    Vauthtime = 0;    EXEC SQL FETCH CD INTO :Vauthtime;    EXEC SQL CLOSE CD;    EXEC SQL COMMIT;    mytime = Vauthtime;    return(mytime);}char *vget_lastauthip(struct vqpasswd *pw, char *domain){int err;    if ( (err=vauth_open_update()) != 0 ) return("");    memset(Vip_addr,0,sizeof(Vip_addr));    sprintf( SqlBufUpdate,        "select remote_ip from lastauth where pw_user='%s' and pw_domain='%s'",        pw->pw_name, domain);    EXEC SQL PREPARE SX FROM :SqlBufUpdate;    EXEC SQL DECLARE CX CURSOR FOR SX;    EXEC SQL OPEN CX;    EXEC SQL FETCH CX INTO :Vip_addr;    EXEC SQL CLOSE CX;    EXEC SQL COMMIT;    fix_name(Vip_addr);    return(Vip_addr);}void vcreate_lastauth_table(){    if ( vauth_open_update() != 0 ) return;    snprintf( SqlBufCreate, SQL_BUF_SIZE, "create table lastauth ( %s )",         LASTAUTH_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}#endif /* ENABLE_AUTH_LOGGING */#ifdef VALIASchar *valias_select( char *alias, char *domain ){ int err;    /* if we can not connect, set the verrori value */    if ( (err=vauth_open_update()) != 0 ) {      return(NULL);    }    qnprintf( SqlBufRead, SQL_BUF_SIZE, "select valias_line from valias \where alias = '%s' and domain = '%s'", alias, domain );    EXEC SQL PREPARE SC FROM :SqlBufRead;    EXEC SQL DECLARE CC CURSOR FOR SC;    EXEC SQL OPEN CC;    return(valias_select_next());}char *valias_select_next(){    for(;;) {        EXEC SQL FETCH CC INTO :Vpw_alias_line;        if (sqlca.sqlcode != 0) break;        Vpw_alias_line.arr[Vpw_alias_line.len] = '\0';        return(Vpw_alias_line.arr);    }    EXEC SQL CLOSE CC;    EXEC SQL COMMIT;    return(NULL);}int valias_insert( char *alias, char *domain, char *alias_line){ int err;    if ( (err=vauth_open_update()) != 0 ) return(err);    while(*alias_line==' ' && *alias_line!=0) ++alias_line;    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, "insert into valias \( alias, domain, valias_line ) values ( '%s', '%s', '%s')",        alias, domain, alias_line );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}int valias_remove( char *alias, char *domain, char *alias_line){ int err;    if ( (err=vauth_open_update()) != 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 );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}int valias_delete( char *alias, char *domain){ int err;    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,         "delete from valias where alias = '%s' \and domain = '%s'", alias, domain );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}int valias_delete_domain( char *domain){ int err;    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,         "delete from valias where domain = '%s'",         domain );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}void vcreate_valias_table(){    if ( vauth_open_update() != 0 ) return;    snprintf( SqlBufCreate, SQL_BUF_SIZE, "create table valias ( %s )",         VALIAS_TABLE_LAYOUT );    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}char *valias_select_all( char *alias, char *domain ){ int err;    if ( (err=vauth_open_update()) != 0 ) return(NULL);    sprintf( SqlBufUpdate,        "select alias, valias_line from valias where domain = '%s' order by alias",        domain );    EXEC SQL PREPARE SB FROM :SqlBufUpdate;    EXEC SQL DECLARE CB CURSOR FOR SB;    EXEC SQL OPEN CB;    return(valias_select_all_next(alias));}char *valias_select_all_next(char *alias){    for(;;) {        EXEC SQL FETCH CB INTO :Vpw_alias, :Vpw_alias_line;        if (sqlca.sqlcode == 1403) break;        if (sqlca.sqlcode != 0 ) {          EXEC SQL CLOSE CB;          EXEC SQL COMMIT;          vcreate_valias_table();          return(NULL);        }        Vpw_alias_line.arr[Vpw_alias_line.len] = '\0';	fix_name(Vpw_alias);        strcpy(alias, Vpw_alias);        return(Vpw_alias_line.arr);    }    EXEC SQL CLOSE CB;    EXEC SQL COMMIT;    return(NULL);}#endif#ifdef ENABLE_ORACLE_LOGGINGint logmysql(int verror, char *TheUser, char *TheDomain, char *ThePass,   char *TheName, char *IpAddr, char *LogLine) { int err; time_t mytime;     mytime = time(NULL);    if ( (err=vauth_open_update()) != 0 ) return(err);    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,        "INSERT INTO vlog set user='%s', passwd='%s', \        domain='%s', logon='%s', remoteip='%s', message='%s', \        error=%i, timestamp=%d", TheUser, ThePass, TheDomain,        TheName, IpAddr, LogLine, verror, (int)mytime);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}void vcreate_vlog_table(){    if ( vauth_open_update() != 0 ) return;    snprintf( SqlBufCreate, SQL_BUF_SIZE, "CREATE TABLE vlog ( %s )",        VLOG_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}#endif#ifdef ENABLE_ORACLE_LIMITSvoid vcreate_limits_table(){    if ( vauth_open_update() != 0 ) return;    snprintf( SqlBufCreate, SQL_BUF_SIZE, "CREATE TABLE limits ( %s )",        LIMITS_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;}int vget_limits( char *domain, struct vlimits *limits ){    int err;    /* if we can not connect, set the verrori value */    if ( (err=vauth_open_update()) != 0 ) {      return(-1);    }    qnprintf( SqlBufRead, SQL_BUF_SIZE, "SELECT maxpopaccounts, maxaliases, "  "maxforwards, maxautoresponders, maxmailinglists, diskquota, "  "defaultquota, disablepop, disableimap, disabledialup, "  "disablepasswordchanging, disablewebmail, disablerelay \n"        "FROM limits \n"  "WHERE domain = '%s'", domain);/*    if (mysql_query(&mysql_read,SqlBufRead)) {        vcreate_limits_table();        if (mysql_query(&mysql_read,SqlBufRead)) {            fprintf(stderr, "vmysql: sql error[j]: %s\n", mysql_error(&mysql_read));            return(-1);        }    }    if (!(res_read = mysql_store_result(&mysql_read))) {  fprintf(stderr, "vmysql: store result failed\n");  return -1;    }    if (mysql_num_rows(res_read) == 0) {  fprintf(stderr, "vnysql: can't find limits for domain '%s'\n", domain);  return -1;    }    if ((row = mysql_fetch_row(res_read)) != NULL) {      limits->maxpopaccounts = atoi(row[0]);      limits->maxaliases = atoi(row[1]);      limits->maxforwards = atoi(row[2]);      limits->maxautoresponders = atoi(row[3]);      limits->maxmailinglists = atoi(row[4]);      limits->diskquota = atoi(row[5]);      limits->defaultquota = atoi(row[6]);      limits->disablepop = atoi(row[7]);      limits->disableimap = atoi(row[8]);      limits->disabledialup = atoi(row[9]);      limits->disablepasswordchanging = atoi(row[10]);      limits->disablewebmail = atoi(row[11]);      limits->disablerelay = atoi(row[12]);    }    mysql_free_result(res_read);*/    return 0;}int vdel_limits( char *domain ){    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, "DELETE FROM limits WHERE domain = '%s'",        domain);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return 0;}int vset_limits( char *domain, struct vlimits *limits ){    int err;    /* if we can not connect, set the verrori value */    if ( (err=vauth_open_update()) != 0 ) {      return(-1);    }    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, "REPLACE INTO limits ( "  "domain, maxpopaccounts, maxaliases, "  "maxforwards, maxautoresponders, maxmailinglists, diskquota, "  "defaultquota, disablepop, disableimap, disabledialup, "  "disablepasswordchanging, disablewebmail, disablerelay ) \n"        "VALUES \n"  "('%s', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",  domain,        limits->maxpopaccounts,        limits->maxaliases,        limits->maxforwards,        limits->maxautoresponders,        limits->maxmailinglists,        limits->diskquota,        limits->defaultquota,        limits->disablepop,        limits->disableimap,        limits->disabledialup,        limits->disablepasswordchanging,        limits->disablewebmail,        limits->disablerelay);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return 0;}#endifvoid fix_name(char *name){ int i;  for(i=0;name[i]!=0;++i) {    if ( name[i] == ' ' ) {      name[i] = 0;     }  }}int 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 + -