Subversion Repositories wimsdev

Rev

Rev 12474 | Rev 18510 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 12474 Rev 18509
Line 47... Line 47...
47
    /* remove idle session. */
47
    /* remove idle session. */
48
  else {
48
  else {
49
    struct stat fst;
49
    struct stat fst;
50
    char fbuf[4096],cbuf[MAX_LINELEN+1];
50
    char fbuf[4096],cbuf[MAX_LINELEN+1];
51
    char *pp;
51
    char *pp;
-
 
52
    /* remove session inactive for more than idle_time seconds */
52
    if(session_stat.st_mtime<nowtime-idle_time ||
53
    if(session_stat.st_mtime<nowtime-idle_time ||
53
        session_stat.st_mtime>nowtime+anti_time) {
54
        session_stat.st_mtime>nowtime+anti_time) {
54
      remove:
55
      remove:
55
      if(remove_tree(session_name)!=0) {
56
      if(remove_tree(session_name)!=0) {
56
        if(strstr(session_name,"chroot")!=NULL) {
57
        if(strstr(session_name,"chroot")!=NULL) {
Line 91... Line 92...
91
               fst.st_mtime>=nowtime+anti_time) remove(dbuf);
92
               fst.st_mtime>=nowtime+anti_time) remove(dbuf);
92
      }
93
      }
93
      closedir(s2D);
94
      closedir(s2D);
94
      continue;
95
      continue;
95
    }
96
    }
-
 
97
    /* keep sessions with _ in name unless hardcheck */
96
    if(!hardcheck || strchr(session_name,'_')!=NULL) continue;
98
    if(!hardcheck || strchr(session_name,'_')!=NULL) continue;
-
 
99
    /* keep very new sessions (inactive for less than idle_time3 seconds) */
97
    if(session_stat.st_mtime>=nowtime-idle_time3 &&
100
    if(session_stat.st_mtime>=nowtime-idle_time3 &&
98
       session_stat.st_mtime<nowtime+anti_time) continue;
101
       session_stat.st_mtime<nowtime+anti_time) continue;
-
 
102
    /* for sessions inactive for more than idle_time3 seconds,
-
 
103
       keep session if var.stat file exists */
99
    snprintf(fbuf,sizeof(fbuf),"%s/var.stat",session_name);
104
    snprintf(fbuf,sizeof(fbuf),"%s/var.stat",session_name);
100
    if(stat(fbuf,&fst)==0) continue;
105
    if(stat(fbuf,&fst)==0) continue;
-
 
106
    /* sessions with no var.stat file, chech var file */
101
    wlogdaccessfile(cbuf,"r","%s/var",session_name);
107
    wlogdaccessfile(cbuf,"r","%s/var",session_name);
102
    if(cbuf[0]==0) goto remove;      /* no var file */
108
    if(cbuf[0]==0) goto remove;      /* no var file, remove */
-
 
109
    /* keep manager sessions */
103
    pp=strstr(cbuf,"\nw_wims_ismanager=");
110
    pp=strstr(cbuf,"\nw_wims_ismanager=");
104
    if(pp!=NULL) {
111
    if(pp!=NULL) {
105
      pp+=strlen("\nw_wims_ismanager=");
112
      pp+=strlen("\nw_wims_ismanager=");
106
      if(*pp>'0' && *pp<='9') continue;
113
      if(*pp>'0' && *pp<='9') continue;
107
    }
114
    }
-
 
115
    /* remove session inactive for more than idle_time2 seconds */
108
    if(session_stat.st_mtime<nowtime-idle_time2 ||
116
    if(session_stat.st_mtime<nowtime-idle_time2 ||
109
        session_stat.st_mtime>nowtime+anti_time) goto remove;
117
        session_stat.st_mtime>nowtime+anti_time) goto remove;
-
 
118
    /* remove unused sessions */
110
    if(session_stat.st_mtime<nowtime-idle_time3 &&
119
    if(session_stat.st_mtime<nowtime-idle_time3 &&
111
        strstr(cbuf,"\nwims_new_session=yes\n")!=NULL) goto remove;
120
        strstr(cbuf,"\nwims_new_session=yes\n")!=NULL) goto remove;
112
         /* popup session: 50 sec only. */
121
         /* remove popup session: 50 sec only. */
113
    if(session_stat.st_mtime<nowtime-50 &&
122
    if(session_stat.st_mtime<nowtime-50 &&
114
        strstr(cbuf,"\nw_wims_mode=popup\n")!=NULL) goto remove;
123
        strstr(cbuf,"\nw_wims_mode=popup\n")!=NULL) goto remove;
115
    }
124
    }
116
  }
125
  }
117
  closedir(sdir_base);
126
  closedir(sdir_base);