示例#1
0
void netstats(void) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(0);	// include all processes
	
	printf("Displaying network statistics only for sandboxes using a new network namespace.\n");
	
	// print processes
	while (1) {
		// set pid table
		int i;
		int itv = 5; 	// 5 second  interval
		pid_read(0);	// todo: preserve the last calculation if any, so we don't have to do get_stats()

		// start rx/tx measurements
		for (i = 0; i < MAX_PIDS; i++) {
			if (pids[i].level == 1)
				get_stats(i);
		}
		
		// wait 5 seconds
		firemon_sleep(itv);
		
		// grab screen size
		struct winsize sz;
		int row = 24;
		int col = 80;
		if (!ioctl(0, TIOCGWINSZ, &sz)) {
			col = sz.ws_col;
			row = sz.ws_row;
		}
		
		// start printing
		firemon_clrscr();
		char *header = get_header();
		if (strlen(header) > col)
			header[col] = '\0';
		printf("%s\n", header);
		if (row > 0)
			row--;
		free(header);

		// start rx/tx measurements
		for (i = 0; i < MAX_PIDS; i++) {
			if (pids[i].level == 1) {
				get_stats(i);
				print_proc(i, itv, col);
			}
		}
	}
}
示例#2
0
文件: tree.c 项目: shifter/firejail
void tree(void) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(0);	// include all processes
	
	// print processes
	int i;
	for (i = 0; i < MAX_PIDS; i++) {
		if (pids[i].level == 1)
			pid_print_tree(i, 0, 0);
	}
}
示例#3
0
void list(void) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(0);	// include all processes
	
	// print processes
	int i;
	for (i = 0; i < max_pids; i++) {
		if (pids[i].level == 1)
			pid_print_list(i, 0);
	}
}
示例#4
0
文件: cpu.c 项目: shifter/firejail
void cpu(void) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(0);	// include all processes
	
	// print processes
	int i;
	for (i = 0; i < MAX_PIDS; i++) {
		if (pids[i].level == 1) {
			pid_print_list(i, 0);
			int child = find_child(i);
			if (child != -1)
				print_cpu(child);
		}
	}
}
示例#5
0
文件: cpu.c 项目: mahdi1234/firejail
void cpu(pid_t pid) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(pid);
	
	// print processes
	int i;
	for (i = 0; i < max_pids; i++) {
		if (pids[i].level == 1) {
			pid_print_list(i, 0);
			int child = find_child(i);
			if (child != -1)
				print_cpu(child);
		}
	}
}
示例#6
0
void seccomp(pid_t pid) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(pid);	// include all processes
	
	// print processes
	int i;
	for (i = 0; i < max_pids; i++) {
		if (pids[i].level == 1) {
			pid_print_list(i, 0);
			int child = find_child(i);
			if (child != -1)
				print_seccomp(child);
		}
	}
	printf("\n");
}
示例#7
0
文件: arp.c 项目: spnow/firejail
void arp(pid_t pid) {
	if (getuid() == 0)
		firemon_drop_privs();
	
	pid_read(pid);
	
	// print processes
	int i;
	for (i = 0; i < MAX_PIDS; i++) {
		if (pids[i].level == 1) {
			pid_print_list(i, 0);
			int child = find_child(i);
			if (child != -1) {
				char *fname;
				if (!asprintf(&fname, "/proc/%d/net/arp", child) == -1)
					errExit("asprintf");
				print_arp(fname);
				free(fname);
				printf("\n");
			}
		}
	}
}
示例#8
0
文件: top.c 项目: spnow/firejail
void top(void) {
	if (getuid() == 0)
		firemon_drop_privs();

	while (1) {
		// clear linked list
		head_clear();
		
		// set pid table
		int i;
		int itv = 5; // 5 second  interval
		pid_read(0);

		// start cpu measurements
		unsigned utime;
		unsigned stime;
		for (i = 0; i < MAX_PIDS; i++) {
			if (pids[i].level == 1)
				pid_store_cpu(i, 0, &utime, &stime);
		}
		
		// wait 5 seconds
		firemon_sleep(itv);
		
		// grab screen size
		struct winsize sz;
		int row = 24;
		int col = 80;
		if (!ioctl(0, TIOCGWINSZ, &sz)) {
			col = sz.ws_col;
			row = sz.ws_row;
		}

		// start printing
		firemon_clrscr();
		char *header = get_header();
		if (strlen(header) > col)
			header[col] = '\0';
		printf("%s\n", header);
		if (row > 0)
			row--;
		free(header);
		
		// find system uptime
		FILE *fp = fopen("/proc/uptime", "r");
		if (fp) {
			float f;
			int rv = fscanf(fp, "%f", &f);
			(void) rv;
			sysuptime = (unsigned long long) f;
			fclose(fp);
		}

		// print processes
		for (i = 0; i < MAX_PIDS; i++) {
			if (pids[i].level == 1) {
				float cpu = 0;
				int cnt = 0; // process count
				char *line = print_top(i, 0, &utime, &stime, itv, &cpu, &cnt);
				if (line)
					head_add(cpu, line);
			}
		}
		head_print(col, row);
	}
}