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

📄 voracle.pc

📁 相当优秀的 UNIX 进程管理工具
💻 PC
📖 第 1 页 / 共 3 页
字号:
#ifdef ENABLE_AUTH_LOGGING    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,         "delete from lastauth where pw_domain = '%s'", domain );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;#endif    vdel_limits(domain);    return(0);}int vauth_deluser( char *user, char *domain ){ char *tmpstr; int err = 0;        if ( (err=vauth_open_update()) != 0 ) return(err);    vset_default_domain( domain );#ifndef MANY_DOMAINS    if ( domain == NULL || domain[0] == 0 ) {        tmpstr = ORACLE_LARGE_USERS_TABLE;    } else {        tmpstr = vauth_munch_domain( domain );    }#else    tmpstr = ORACLE_DEFAULT_TABLE;#endif    qnprintf( SqlBufUpdate,  SQL_BUF_SIZE, DELETE_USER, tmpstr, user#ifdef MANY_DOMAINS, domain#endif );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;#ifdef ENABLE_AUTH_LOGGING    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,         "delete from lastauth where pw_user = '%s' and pw_domain = '%s'",         user, domain );    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;#endif    return(err);}int vauth_setquota( char *username, char *domain, char *quota){ char *tmpstr; int err;    if ( strlen(username) > MAX_PW_NAME ) return(VA_USER_NAME_TOO_LONG);#ifdef USERS_BIG_DIR    if ( strlen(username) == 1 ) return(VA_ILLEGAL_USERNAME);#endif    if ( strlen(domain) > MAX_PW_DOMAIN ) return(VA_DOMAIN_NAME_TOO_LONG);    if ( strlen(quota) > MAX_PW_QUOTA )    return(VA_QUOTA_TOO_LONG);        if ( (err=vauth_open_update()) != 0 ) return(err);    vset_default_domain( domain );#ifndef MANY_DOMAINS    tmpstr = vauth_munch_domain( domain );#else    tmpstr = ORACLE_DEFAULT_TABLE; #endif    qnprintf( SqlBufUpdate, SQL_BUF_SIZE, SETQUOTA, tmpstr, quota, username#ifdef MANY_DOMAINS, domain#endif);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}struct vqpasswd *vauth_getall(char *domain, int first, int sortit){ char *domstr = NULL; static struct vqpasswd vpw; static int more = 0; int err;    vset_default_domain( domain );#ifdef MANY_DOMAINS    domstr = ORACLE_DEFAULT_TABLE; #else    domstr = vauth_munch_domain( domain );#endif    if ( first == 1 ) {        if ( (err=vauth_open_update()) != 0 ) return(NULL);        qnprintf(SqlBufRead,  SQL_BUF_SIZE, GETALL, domstr#ifdef MANY_DOMAINS            ,domain#endif            );        if ( sortit == 1 ) {            strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE);        }/*        if (res_read!=NULL) mysql_free_result(res_read_getall);        res_read = NULL;        if (mysql_query(&mysql_read_getall,SqlBufRead)) {            printf("vmysql: sql error[5]: %s\n", mysql_error(&mysql_update));            return(NULL);        }        if (!(res_read_getall=mysql_store_result(&mysql_read_getall))) {            printf("vsql_getpw: store result failed 2\n");            return(NULL);        }*/    } else if ( more == 0 ) {        return(NULL);    }    memset(IUser, 0, sizeof(IUser));    memset(IPass, 0, sizeof(IPass));    memset(IGecos, 0, sizeof(IGecos));    memset(IDir, 0, sizeof(IDir));    memset(IShell, 0, sizeof(IShell));    memset(IClearPass, 0, sizeof(IClearPass));    vpw.pw_name   = IUser;    vpw.pw_passwd = IPass;    vpw.pw_gecos  = IGecos;    vpw.pw_dir    = IDir;    vpw.pw_shell  = IShell;    vpw.pw_clear_passwd  = IClearPass;    /*    if ((row_getall = mysql_fetch_row(res_read_getall)) != NULL) {        strncpy(vpw.pw_name,row_getall[0],SMALL_BUFF);        if (row_getall[1]!=0) strncpy(vpw.pw_passwd,row_getall[1],SMALL_BUFF);        if (row_getall[2]!=0) vpw.pw_uid = atoi(row_getall[2]);        if (row_getall[3]!=0) vpw.pw_gid = atoi(row_getall[3]);        if (row_getall[4]!=0) strncpy(vpw.pw_gecos,row_getall[4],SMALL_BUFF);        if (row_getall[5]!=0) strncpy(vpw.pw_dir,row_getall[5],SMALL_BUFF);        if (row_getall[6]!=0) {            strncpy(vpw.pw_shell, row_getall[6],SMALL_BUFF);        }#ifdef CLEAR_PASS        if (row_getall[7]!=0) {            strncpy(vpw.pw_clear_passwd, row_getall[7],SMALL_BUFF);        }#endif        more = 1;        return(&vpw);    }    more = 0;    mysql_free_result(res_read_getall);    res_read_getall = NULL;*/    return(NULL);}void vauth_end_getall(){/*    if ( res_read_getall != NULL ) {        mysql_free_result(res_read_getall);    }    res_read_getall = NULL;*/}char *vauth_munch_domain( char *domain ){ int i; static char tmpbuf[50];    if ( domain == NULL || domain[0] == 0 ) return(domain);    for(i=0;domain[i]!=0;++i){        tmpbuf[i] = domain[i];        if ( domain[i] == '.' || domain[i] == '-' ) {            tmpbuf[i] = ORACLE_DOT_CHAR;        }    }    tmpbuf[i] = 0;     return(tmpbuf);}int vauth_setpw( struct vqpasswd *inpw, char *domain ){ char *tmpstr; uid_t myuid; uid_t uid; gid_t gid; int err;    err = vcheck_vqpw(inpw, domain);    if ( err != 0 ) return(err);    vget_assign(domain,NULL,156,&uid,&gid);    myuid = geteuid();    if ( myuid != 0 && myuid != uid ) {        return(VA_BAD_UID);    }    if ( (err=vauth_open_update()) != 0 ) return(err);    vset_default_domain( domain );#ifndef MANY_DOMAINS    tmpstr = vauth_munch_domain( domain );#else    tmpstr = ORACLE_DEFAULT_TABLE; #endif    qnprintf( SqlBufUpdate,SQL_BUF_SIZE,SETPW,            tmpstr,             inpw->pw_passwd,            inpw->pw_uid,            inpw->pw_gid,             inpw->pw_gecos,            inpw->pw_dir,             inpw->pw_shell, #ifdef CLEAR_PASS            inpw->pw_clear_passwd,#endif            inpw->pw_name#ifdef MANY_DOMAINS            ,domain#endif            );/*printf("add user: %s\n", SqlBufUpdate);*/    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;#ifdef SQWEBMAIL_PASS    vsqwebmail_pass( inpw->pw_dir, inpw->pw_passwd, uid, gid);#endif    return(0);}#ifdef POP_AUTH_OPEN_RELAYvoid vopen_smtp_relay(){ char *ipaddr; time_t mytime; int err;    mytime = time(NULL);    ipaddr = getenv("TCPREMOTEIP");    if ( ipaddr == NULL ) {        return;    }    if ( ipaddr != NULL &&  ipaddr[0] == ':') {        ipaddr +=2;        while(*ipaddr!=':') ++ipaddr;        ++ipaddr;    }    if ( (err=vauth_open_update()) != 0 ) return;    qnprintf( SqlBufUpdate, SQL_BUF_SIZE,"insert into relay ( ip_addr, timestamp ) values ( '%s', %d )",            ipaddr, (int)mytime);    /*fprintf(stderr, "relay: %s\n", SqlBufUpdate);*/    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}void vupdate_rules(int fdm){    if (vauth_open_update() != 0) return;    sprintf(SqlBufUpdate, "select ip_addr from relay");    EXEC SQL PREPARE SF FROM :SqlBufUpdate;    EXEC SQL DECLARE CF CURSOR FOR SF;    EXEC SQL OPEN CF;    for(;;) {        EXEC SQL FETCH CF INTO :Vip_addr;        if (sqlca.sqlcode == 1403) break;        sprintf(SqlBufUpdate, "%s:allow,RELAYCLIENT=\"\"\n", Vip_addr);        write(fdm,SqlBufUpdate, strlen(SqlBufUpdate));    }}void vclear_open_smtp(time_t clear_minutes, time_t mytime){ time_t delete_time; int err;        if ( (err=vauth_open_update()) != 0 ) return;     delete_time = mytime - clear_minutes;    snprintf( SqlBufUpdate, SQL_BUF_SIZE, "delete from relay where timestamp <= %d",         (int)delete_time);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;}void vcreate_relay_table(){    if (vauth_open_update() != 0) return;    snprintf( SqlBufCreate, SQL_BUF_SIZE, "create table relay ( %s )",RELAY_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}#endifint vmkpasswd( char *domain ){    return(0);}void vclose(){    if (update_open == 1 ) {        update_open = 0;        EXEC SQL ROLLBACK RELEASE;    }}#ifdef IP_ALIAS_DOMAINSvoid vcreate_ip_map_table(){    if ( vauth_open_update() != 0 ) return;    snprintf(SqlBufCreate, SQL_BUF_SIZE, "create table ip_alias_map ( %s )",       IP_ALIAS_TABLE_LAYOUT);    EXEC SQL PREPARE S FROM :SqlBufCreate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return;}int vget_ip_map( char *ip, char *domain, int domain_size){ int ret = -1;    if ( ip == NULL || strlen(ip) <= 0 ) return(-1);    if ( domain == NULL ) return(-2);    if ( vauth_open_update() != 0 ) return(-3);    qnprintf(SqlBufRead, SQL_BUF_SIZE, "select domain from ip_alias_map where ip_addr = '%s'",        ip);    if (mysql_query(&mysql_read,SqlBufRead)) {        return(-1);    }/*    if (!(res_read = mysql_store_result(&mysql_read))) {        printf("vsql_getpw: store result failed 4\n");        return(-4);    }    while((row = mysql_fetch_row(res_read))) {        ret = 0;        strncpy(domain, row[0], domain_size);    }    mysql_free_result(res_read);    res_update = mysql_store_result(&mysql_read);*/    return(ret);}int vadd_ip_map( char *ip, char *domain) {    if ( ip == NULL || strlen(ip) <= 0 ) return(-1);    if ( domain == NULL || strlen(domain) <= 0 ) return(-1);    if ( vauth_open_update() != 0 ) return(-1);    qnprintf(SqlBufUpdate,SQL_BUF_SIZE,        "update ip_alias_map set ip_addr='%s', domain='%s' ",      ip, domain);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}int vdel_ip_map( char *ip, char *domain) {    if ( ip == NULL || strlen(ip) <= 0 ) return(-1);    if ( domain == NULL || strlen(domain) <= 0 ) return(-1);    if ( vauth_open_update() != 0 ) return(-1);    qnprintf( SqlBufUpdate,SQL_BUF_SIZE,          "delete from ip_alias_map where ip_addr = '%s' and domain = '%s'",            ip, domain);    EXEC SQL PREPARE S FROM :SqlBufUpdate;    EXEC SQL EXECUTE S;    EXEC SQL COMMIT;    return(0);}int vshow_ip_map( int first, char *ip, char *domain ){ static int more = 0;    if ( ip == NULL ) return(-1);    if ( domain == NULL ) return(-1);    if ( vauth_open_update() != 0 ) return(-1);    if ( first == 1 ) {        snprintf(SqlBufRead,SQL_BUF_SIZE,             "select ip_addr, domain from ip_alias_map"); /*        if (res_read!=NULL) mysql_free_result(res_read);        res_read = NULL;        if (mysql_query(&mysql_read,SqlBufRead)) {!error!!        }        if (!(res_read = mysql_store_result(&mysql_read))) {            printf("vsql_getpw: store result failed 5\n");            return(0);        }*/    } else if ( more == 0 ) {        return(0);    }/*    if ((row = mysql_fetch_row(res_read)) != NULL) {        strncpy(ip, row[0], 18);         strncpy(domain, row[1], 156);         more = 1;        return(1);    }    more = 0;    mysql_free_result(res_read);    res_read = NULL;*/    return(0);}#endifint vread_dir_control(vdir_type *vdir, char *domain, uid_t uid, gid_t gid){ int found = 0; int i;    if ( vauth_open_update() != 0 ) return(-1);    qnprintf(SqlBufRead, SQL_BUF_SIZE,         "select %s from dir_control where domain = '%s'",         DIR_CONTROL_SELECT, domain );    /*printf("read dir control: %s\n", SqlBufRead);*/    EXEC SQL PREPARE SE FROM :SqlBufRead;    EXEC SQL DECLARE CE CURSOR FOR SE;    EXEC SQL OPEN CE;    found = 0;    for(;;) {        EXEC SQL FETCH CE INTO :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;        if (sqlca.sqlcode == 1403) break;        found = 1;        vdir->cur_users = cur_users;        vdir->level_cur = level_cur;        vdir->level_max = level_max;        vdir->level_start[0] = level_start0;        vdir->level_start[1] = level_start1;        vdir->level_start[2] = level_start2;        vdir->level_end[0] = level_end0;        vdir->level_end[1] = level_end1;        vdir->level_end[2] = level_end2;        vdir->level_mod[0] = level_mod0;        vdir->level_mod[1] = level_mod1;        vdir->level_mod[2] = level_mod2;

⌨️ 快捷键说明

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