diff options
Diffstat (limited to 'sysutils/wminet/files/patch-ab')
-rw-r--r-- | sysutils/wminet/files/patch-ab | 484 |
1 files changed, 0 insertions, 484 deletions
diff --git a/sysutils/wminet/files/patch-ab b/sysutils/wminet/files/patch-ab deleted file mode 100644 index 02b1f2b481b4..000000000000 --- a/sysutils/wminet/files/patch-ab +++ /dev/null @@ -1,484 +0,0 @@ ---- wminet.c -+++ wminet.c -@@ -10,6 +10,8 @@ - - ProFTPD support by Mike Kershaw aka Dragorn (dragorn@melchior.nerv-un.ml.org) - ProFTPD support was made 64bit clean by Martijn Pieterse (pieterse@xs4all.nl) -+ -+ FreeBSD port by Stephen Kiernan (sk-ports@vegamuse.org) - - see http://windowmaker.mezaway.org for more awesome wm dock apps :) - -@@ -23,6 +25,11 @@ - #include <fcntl.h> - #include <unistd.h> - #include <ctype.h> -+#ifdef __FreeBSD__ -+#include <limits.h> -+#include <kvm.h> -+#include <netdb.h> -+#endif /* __FreeBSD__ */ - - #include <sys/wait.h> - #include <sys/stat.h> -@@ -31,7 +38,29 @@ - #include <sys/ioctl.h> - #include <sys/socket.h> - -+#ifdef __FreeBSD__ -+#include <sys/socketvar.h> -+#include <sys/sysctl.h> -+ -+#include <net/route.h> -+#include <netinet/in.h> -+#include <netinet/in_systm.h> -+#include <netinet/ip.h> -+#include <netinet/in_pcb.h> -+#include <netinet/ip_var.h> -+#include <netinet/tcp.h> -+#include <netinet/tcp_fsm.h> -+#include <netinet/tcp_timer.h> -+#include <netinet/tcp_var.h> -+ -+#include <arpa/inet.h> -+#endif /* __FreeBSD__ */ -+ -+#if __FreeBSD_version >= 900007 -+#include <utmpx.h> -+#else - #include <utmp.h> -+#endif - #include <dirent.h> - - #include <X11/Xlib.h> -@@ -57,6 +86,10 @@ - // Lame work-around... Sigh... when will they standardize the headers!?!? - #define TCP_ESTABLISHED 1 - -+#ifndef DEFAULT_WMINETRC -+#define DEFAULT_WMINETRC "/etc/wminetrc" -+#endif /* DEFAULT_WMINETRC */ -+ - extern char **environ; - - char *ProgName; -@@ -101,6 +134,19 @@ - - char uconfig_file[256]; - -+#if __FreeBSD_version >= 900007 -+#define utmp utmpx -+#define setutent setutxent -+#define getutent getutxent -+#define endutent endutxent -+#define ut_name ut_user -+#else -+struct utmp *_wminet_getutent(FILE *); -+#define setutent() { FILE *_wminet__ufp = fopen(_PATH_UTMP, "r") -+#define getutent() _wminet_getutent(_wminet__ufp) -+#define endutent() fclose(_wminet__ufp); } -+#endif -+ - void usage(void); - void printversion(void); - void BlitString(char *name, int x, int y); -@@ -109,10 +155,22 @@ - void wminet_routine(int, char **); - int PortWatch( short port ); - int ReadConfigInt(FILE *fp, char *setting, int *value); --int ReadConfigString(FILE *fp, char *setting, char *value); -+int ReadConfigString(FILE *fp, char *setting, char *value, int len); - int Read_Config_File( char *filename ); - - -+#if __FreeBSD_version < 900007 -+inline -+struct utmp *_wminet_getutent( FILE *fp ) -+{ -+ static struct utmp usr; -+ if( fread((char *)&usr, sizeof(usr), 1, fp) == 1 ) -+ return &usr; -+ else -+ return NULL; -+} -+#endif -+ - int main(int argc, char *argv[]) { - - int i; -@@ -149,7 +207,7 @@ - case 'c' : - if (argc > (i+1)) - { -- strcpy(uconfig_file, argv[i+1]); -+ strncpy(uconfig_file, argv[i+1], 256); - i++; - } - break; -@@ -214,12 +272,12 @@ - } - else - { -- sprintf(config_file, "%s/.wminetrc", getenv("HOME")); -+ snprintf(config_file, 256, "%s/.wminetrc", getenv("HOME")); - - if (!Read_Config_File(config_file)) - { - // Fall back to /etc/wminetrc -- sprintf(config_file, "/etc/wminetrc"); -+ snprintf(config_file, 256, DEFAULT_WMINETRC); - - Read_Config_File(config_file); - } -@@ -240,13 +298,13 @@ - if (use_proftpd) - { - if (strstr(dent->d_name, "proftpd-") != NULL) -- strcpy(ftpclasses[0], dent->d_name); -+ strncpy(ftpclasses[0], dent->d_name, 64); - } - else - { - if (strstr(dent->d_name, "ftp.pids-") != NULL) - { -- strcpy(ftpclasses[numftpclasses++], dent->d_name); -+ strncpy(ftpclasses[numftpclasses++], dent->d_name, 64); - //printf("ftppidfile: %s\n", dent->d_name); - } - } -@@ -422,7 +480,6 @@ - char seps[]={"/"}; - char sep2[]={":"}; - char sep3[]={" "}; -- - #ifdef HTTP_MONITOR_PROC - DIR *dir; - struct dirent *dent; -@@ -439,8 +496,11 @@ - setutent(); - while ((ut = getutent())) - { -- if ((ut->ut_type == USER_PROCESS) && -- (ut->ut_name[0] != '\0')) -+#if __FreeBSD_version >= 900007 -+ if (ut->ut_type == USER_PROCESS) -+#else -+ if (ut->ut_line[0] != '\0' && ut->ut_name[0] != '\0') -+#endif - { - nUsers++; - } -@@ -459,7 +519,7 @@ - logrun_t runent; - logrun_header_t head; - -- sprintf(buf, "%s/%s", ftp_pid_path, ftpclasses[0]); -+ snprintf(buf, 1024, "%s/%s", ftp_pid_path, ftpclasses[0]); - - if (( fd = open(buf, O_RDONLY, 0644)) == -1) - { -@@ -486,7 +546,7 @@ - } else { - for (i=0; i!= numftpclasses; i++) - { -- sprintf(buf, "%s/%s", ftp_pid_path, ftpclasses[i]); -+ snprintf(buf, 1024, "%s/%s", ftp_pid_path, ftpclasses[i]); - //printf("opening '%s'\n", buf); - fp = fopen(buf, "r"); - if (fp) -@@ -508,11 +568,10 @@ - // httpd processes - nHttp = 0; - --#ifdef HTTP_MONITOR_PROC -+#if defined(HTTP_MONITOR_PROC) && !defined(__FreeBSD__) - - if ( monitor_http ) - { -- - dir = opendir("/proc"); - if (dir) - { -@@ -520,7 +579,7 @@ - { - if (!isalpha(dent->d_name[0])) - { -- sprintf(buf, "/proc/%s/stat", dent->d_name); -+ snprintf(buf, 1024, "/proc/%s/stat", dent->d_name); - //printf("opening '%s'\n", buf); - fp=fopen(buf, "r"); - if (fp) -@@ -544,41 +603,7 @@ - #ifdef HTTP_MONITOR_NET - - if ( monitor_http ) -- { -- -- fp = fopen("/proc/net/tcp", "r"); -- if (fp) -- { -- fgets(buf, 512, fp); // get rid of text header -- -- while ( (fgets(buf, 512, fp)) ) -- { -- tok = strtok(buf, sep2); -- tok = strtok(NULL, sep2); -- tok = strtok(NULL, sep2); -- -- tok[4]=0; -- tok1 = strtok(NULL, sep2); -- tok1 += 5; -- tok1[2] = 0; -- -- // printf("port: %i\n", strtol(tok, NULL, 16)); -- // printf("state: %i\n", strtol(tok1, NULL, 16)); -- -- i = strtol(tok, NULL, 16); -- j = strtol(tok1, NULL, 16); -- -- // should make this configurable -- if (( i == 80 || i == 8080) && (j == TCP_ESTABLISHED)) -- { -- nHttp++; -- } -- -- } -- -- fclose(fp); -- } -- } -+ nHttp = PortWatch( 80 ) + PortWatch( 8080 ); - #endif - - -@@ -587,7 +612,11 @@ - - if ( monitor_nfs ) - { -+#ifdef __FreeBSD__ -+ fp = popen("/usr/bin/showmount -a", "r"); -+#else - fp = popen("/usr/sbin/showmount -a", "r"); -+#endif /* __FreeBSD__ */ - if (fp) - { - while ( (fgets(buf, 128, fp)) ) -@@ -604,9 +633,46 @@ - // Total Processes - nProc = 0; - -+#if defined(__FreeBSD__) && defined(HTTP_MONITOR_PROC) -+ if( monitor_proc || monitor_http ) -+#else - if ( monitor_proc ) -+#endif /* __FreeBSD__ && HTTP_MONITOR_PROC */ - { -- -+#ifdef __FreeBSD__ -+ char errbuf[_POSIX2_LINE_MAX]; -+ kvm_t *kd = kvm_openfiles( NULL, NULL, NULL, O_RDONLY, errbuf ); -+ if( kd == 0 ) -+ fprintf( stderr, "%s", errbuf ); -+ else -+ { -+ int procs; -+ -+#ifdef HTTP_MONITOR_PROC -+ struct kinfo_proc *kinfo = -+#endif /* HTTP_MONITOR_PROC */ -+ kvm_getprocs(kd,KERN_PROC_ALL,0,&procs); -+ -+#ifdef HTTP_MONITOR_PROC -+ if( monitor_http ) -+ { -+ int i; -+ for( i = 0; i < procs; i++ ) -+ { -+ if( !strncmp( KI_PROC(&kinfo[i])->p_comm, "(httpd)", 7 ) ) -+ { -+ nHttp++; -+ } -+ } -+ } -+#endif /* HTTP_MONITOR_PROC */ -+ -+ kvm_close( kd ); -+ -+ if( monitor_proc ) -+ nProc = procs; -+ } -+#else - fp = fopen("/proc/loadavg", "r"); - if (fp) - { -@@ -617,6 +683,7 @@ - - fclose(fp); - } -+#endif /* __FreeBSD__ */ - } - - // lpd -@@ -654,14 +721,61 @@ - - int PortWatch( short port ) - { -+ -+ int count=0; -+ -+#ifdef __FreeBSD__ -+ struct protoent *p; -+ -+ setprotoent(1); -+ setservent(1); -+ while((p = getprotoent())) -+ { -+ if( !strcmp( p->p_name, "tcp" ) ) -+ { -+ int len = 0; -+ if( sysctlbyname( "net.inet.tcp.pcblist", 0, &len, 0, 0 ) >= 0 ) -+ { -+ char *buf = malloc(len); -+ if( buf ) -+ { -+ if( sysctlbyname("net.inet.tcp.pcblist", buf, &len, 0, 0) >= 0 ) -+ { -+ struct xinpgen *xig, *oxig; -+ -+ oxig = xig = (struct xinpgen *)buf; -+ for( xig = (struct xinpgen *)((char *)xig + xig->xig_len); -+ xig->xig_len > sizeof(struct xinpgen); -+ xig = (struct xinpgen *)((char *)xig + xig->xig_len)) -+ { -+ struct tcpcb *tp = &((struct xtcpcb *)xig)->xt_tp; -+ struct inpcb *inp = &((struct xtcpcb *)xig)->xt_inp; -+ struct xsocket *so = &((struct xtcpcb *)xig)->xt_socket; -+ -+ if( ( so->xso_protocol != IPPROTO_TCP ) || -+ ( inp->inp_gencnt > oxig->xig_gen ) || -+ ( inet_lnaof(inp->inp_laddr) == INADDR_ANY ) ) -+ continue; -+ -+ if( ( ntohs((u_short)inp->inp_lport) == port ) && -+ ( tp->t_state == TCPS_ESTABLISHED ) ) -+ { -+ count++; -+ } -+ } -+ } -+ free(buf); -+ } -+ } -+ } -+ } -+#else - FILE *fp; - char buf[1024]; - char *tok,*tok1; - int i,j; - char sep2[]={":"}; - -- int count=0; -- - fp = fopen("/proc/net/tcp", "r"); - if (fp) - { -@@ -693,6 +807,7 @@ - - fclose(fp); - } -+#endif /* __FreeBSD__ */ - - return count; - } -@@ -745,14 +860,14 @@ - newx -= CHAR_WIDTH; - } - -- sprintf(buf, "%02i", num); -+ snprintf(buf, 1024, "%02i", num); - - BlitString(buf, newx, y); - } - - - // ReadConfigSetting --int ReadConfigString(FILE *fp, char *setting, char *value) -+int ReadConfigString(FILE *fp, char *setting, char *value, int vallen) - { - char str[1024]; - char buf[1024]; -@@ -767,7 +882,7 @@ - return 0; - } - -- sprintf(str, "%s=", setting); -+ snprintf(str, 1024, "%s=", setting); - slen = strlen(str); - - fseek(fp, 0, SEEK_SET); -@@ -799,7 +914,7 @@ - if ( buf[i] == '=' ) - { - p=buf+i+1; -- strcpy(value, p); -+ strncpy(value, p, vallen); - return 1; - } - } -@@ -814,7 +929,7 @@ - { - char buf[1024]; - -- if (ReadConfigString(fp, setting, (char *) &buf)) -+ if (ReadConfigString(fp, setting, (char *) &buf, 1024)) - { - *value = atoi(buf); - return 1; -@@ -831,11 +946,11 @@ - if (fp) - { - ReadConfigInt(fp, "interval", &loopinterval); -- ReadConfigString(fp, "action1", action1); -- ReadConfigString(fp, "action2", action2); -- ReadConfigString(fp, "action3", action3); -- ReadConfigString(fp, "action4", action4); -- ReadConfigString(fp, "action5", action5); -+ ReadConfigString(fp, "action1", action1, 256); -+ ReadConfigString(fp, "action2", action2, 256); -+ ReadConfigString(fp, "action3", action3, 256); -+ ReadConfigString(fp, "action4", action4, 256); -+ ReadConfigString(fp, "action5", action5, 256); - ReadConfigInt(fp, "monitor_proc", &monitor_proc); - ReadConfigInt(fp, "monitor_users", &monitor_users); - ReadConfigInt(fp, "monitor_ftp", &monitor_ftp); -@@ -843,23 +958,23 @@ - ReadConfigInt(fp, "monitor_nfs", &monitor_nfs); - ReadConfigInt(fp, "monitor_lpd", &monitor_lpd); - ReadConfigInt(fp, "use_proftpd", &use_proftpd); -- ReadConfigString(fp, "ftp_pid_path", ftp_pid_path); -+ ReadConfigString(fp, "ftp_pid_path", ftp_pid_path, 256); - - ReadConfigInt(fp, "portwatch1.pos", &portwatch[1].pos); - ReadConfigInt(fp, "portwatch1.port", &portwatch[1].port); -- ReadConfigString(fp, "portwatch1.label", portwatch[1].label); -+ ReadConfigString(fp, "portwatch1.label", portwatch[1].label, 10); - ReadConfigInt(fp, "portwatch2.pos", &portwatch[2].pos); - ReadConfigInt(fp, "portwatch2.port", &portwatch[2].port); -- ReadConfigString(fp, "portwatch2.label", portwatch[2].label); -+ ReadConfigString(fp, "portwatch2.label", portwatch[2].label, 10); - ReadConfigInt(fp, "portwatch3.pos", &portwatch[3].pos); - ReadConfigInt(fp, "portwatch3.port", &portwatch[3].port); -- ReadConfigString(fp, "portwatch3.label", portwatch[3].label); -+ ReadConfigString(fp, "portwatch3.label", portwatch[3].label, 10); - ReadConfigInt(fp, "portwatch4.pos", &portwatch[4].pos); - ReadConfigInt(fp, "portwatch4.port", &portwatch[4].port); -- ReadConfigString(fp, "portwatch4.label", portwatch[4].label); -+ ReadConfigString(fp, "portwatch4.label", portwatch[4].label, 10); - ReadConfigInt(fp, "portwatch5.pos", &portwatch[5].pos); - ReadConfigInt(fp, "portwatch5.port", &portwatch[5].port); -- ReadConfigString(fp, "portwatch5.label", portwatch[5].label); -+ ReadConfigString(fp, "portwatch5.label", portwatch[5].label, 10); - - fclose(fp); - return 1; |