Description:
add numpy to installer and fix box64 to acknowldge more syscall
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r225:d275da5f0fc5 - - 2 files changed: 13 inserted, 1 deleted
@@ -1,66 +1,66 | |||||
|
1 | #!/bin/sh |
|
1 | #!/bin/sh |
|
2 |
|
2 | ||
|
3 | echo "This script will install and configure Cafe grader." |
|
3 | echo "This script will install and configure Cafe grader." |
|
4 |
|
4 | ||
|
5 | RUBY_VERSION=2.1.2 |
|
5 | RUBY_VERSION=2.1.2 |
|
6 | echo "This will install Ruby $RUBY_VERSION under RVM" |
|
6 | echo "This will install Ruby $RUBY_VERSION under RVM" |
|
7 |
|
7 | ||
|
8 | echo "Installing required apts" |
|
8 | echo "Installing required apts" |
|
9 |
|
9 | ||
|
10 | sudo apt-get update |
|
10 | sudo apt-get update |
|
11 | sudo apt-get install mysql-server mysql-client \ |
|
11 | sudo apt-get install mysql-server mysql-client \ |
|
12 | g++ gcc apache2 libmysqlclient20 build-essential \ |
|
12 | g++ gcc apache2 libmysqlclient20 build-essential \ |
|
13 | git-core openssl libreadline6 libreadline6-dev \ |
|
13 | git-core openssl libreadline6 libreadline6-dev \ |
|
14 | zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \ |
|
14 | zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \ |
|
15 | sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \ |
|
15 | sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \ |
|
16 | ncurses-dev automake libtool bison subversion \ |
|
16 | ncurses-dev automake libtool bison subversion \ |
|
17 | pkg-config curl nodejs unzip pyflakes ruby default-jdk \ |
|
17 | pkg-config curl nodejs unzip pyflakes ruby default-jdk \ |
|
18 | - libmysqld-dev mercurial python-setuptools python-dev |
|
18 | + libmysqld-dev mercurial python-setuptools python-dev python3-numpy |
|
19 |
|
19 | ||
|
20 | echo "Installing RVM" |
|
20 | echo "Installing RVM" |
|
21 | curl -k -L https://get.rvm.io | bash -s stable |
|
21 | curl -k -L https://get.rvm.io | bash -s stable |
|
22 | source ~/.rvm/scripts/rvm |
|
22 | source ~/.rvm/scripts/rvm |
|
23 |
|
23 | ||
|
24 | echo "Installing Ruby $RUBY_VERSION in RVM" |
|
24 | echo "Installing Ruby $RUBY_VERSION in RVM" |
|
25 |
|
25 | ||
|
26 | rvm install $RUBY_VERSION |
|
26 | rvm install $RUBY_VERSION |
|
27 | rvm use $RUBY_VERSION |
|
27 | rvm use $RUBY_VERSION |
|
28 |
|
28 | ||
|
29 | echo "Fetching Cafe Grader from Git repositories" |
|
29 | echo "Fetching Cafe Grader from Git repositories" |
|
30 |
|
30 | ||
|
31 | echo "Fetching web interface" |
|
31 | echo "Fetching web interface" |
|
32 |
|
32 | ||
|
33 | mkdir cafe_grader |
|
33 | mkdir cafe_grader |
|
34 | cd cafe_grader |
|
34 | cd cafe_grader |
|
35 | git clone -q git://github.com/jittat/cafe-grader-web.git web |
|
35 | git clone -q git://github.com/jittat/cafe-grader-web.git web |
|
36 |
|
36 | ||
|
37 | echo "Configuring rails app" |
|
37 | echo "Configuring rails app" |
|
38 |
|
38 | ||
|
39 | cp web/config/application.rb.SAMPLE web/config/application.rb |
|
39 | cp web/config/application.rb.SAMPLE web/config/application.rb |
|
40 | cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb |
|
40 | cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb |
|
41 |
|
41 | ||
|
42 | #replace UTC in application.rb with the system timezone |
|
42 | #replace UTC in application.rb with the system timezone |
|
43 | timezone='UTC' |
|
43 | timezone='UTC' |
|
44 | if [ -f '/etc/timezone' ]; then |
|
44 | if [ -f '/etc/timezone' ]; then |
|
45 | timezone=\"`cat /etc/timezone`\" |
|
45 | timezone=\"`cat /etc/timezone`\" |
|
46 | else |
|
46 | else |
|
47 | if [ -f '/etc/sysconfig/clock' ]; then |
|
47 | if [ -f '/etc/sysconfig/clock' ]; then |
|
48 | timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'` |
|
48 | timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'` |
|
49 | fi |
|
49 | fi |
|
50 | fi |
|
50 | fi |
|
51 | replace="s!'UTC'!$timezone!g" |
|
51 | replace="s!'UTC'!$timezone!g" |
|
52 | sed -i $replace web/config/application.rb |
|
52 | sed -i $replace web/config/application.rb |
|
53 |
|
53 | ||
|
54 | echo "At this point we will need MySQL user and database." |
|
54 | echo "At this point we will need MySQL user and database." |
|
55 | echo "Have you created MySQL user and database for Cafe grader? (Y/N) " |
|
55 | echo "Have you created MySQL user and database for Cafe grader? (Y/N) " |
|
56 | read ch |
|
56 | read ch |
|
57 |
|
57 | ||
|
58 | if [ "$ch" = "n" -o "$ch" = "N" ] |
|
58 | if [ "$ch" = "n" -o "$ch" = "N" ] |
|
59 | then |
|
59 | then |
|
60 | echo "Please open another terminal and create the user and database for Cafe grader." |
|
60 | echo "Please open another terminal and create the user and database for Cafe grader." |
|
61 | echo "Don't forget to grant access to that database for the user." |
|
61 | echo "Don't forget to grant access to that database for the user." |
|
62 | echo "Please have username, password, and database name ready before continue." |
|
62 | echo "Please have username, password, and database name ready before continue." |
|
63 | echo |
|
63 | echo |
|
64 | echo "The following are instructions:" |
|
64 | echo "The following are instructions:" |
|
65 | echo "1. Run mysql:" |
|
65 | echo "1. Run mysql:" |
|
66 | echo |
|
66 | echo |
@@ -558,96 +558,108 | |||||
|
558 | /* 266 */ [ __NR_symlinkat ] = "symlinkat", |
|
558 | /* 266 */ [ __NR_symlinkat ] = "symlinkat", |
|
559 | /* 267 */ [ __NR_readlinkat ] = "readlinkat", |
|
559 | /* 267 */ [ __NR_readlinkat ] = "readlinkat", |
|
560 | /* 268 */ [ __NR_fchmodat ] = "fchmodat", |
|
560 | /* 268 */ [ __NR_fchmodat ] = "fchmodat", |
|
561 | /* 269 */ [ __NR_faccessat ] = "faccessat", |
|
561 | /* 269 */ [ __NR_faccessat ] = "faccessat", |
|
562 | /* 270 */ [ __NR_pselect6 ] = "pselect6", |
|
562 | /* 270 */ [ __NR_pselect6 ] = "pselect6", |
|
563 | /* 271 */ [ __NR_ppoll ] = "ppoll", |
|
563 | /* 271 */ [ __NR_ppoll ] = "ppoll", |
|
564 | /* 272 */ [ __NR_unshare ] = "unshare", |
|
564 | /* 272 */ [ __NR_unshare ] = "unshare", |
|
565 | /* 273 */ [ __NR_set_robust_list ] = "set_robust_list", |
|
565 | /* 273 */ [ __NR_set_robust_list ] = "set_robust_list", |
|
566 | /* 274 */ [ __NR_get_robust_list ] = "get_robust_list", |
|
566 | /* 274 */ [ __NR_get_robust_list ] = "get_robust_list", |
|
567 | /* 275 */ [ __NR_splice ] = "splice", |
|
567 | /* 275 */ [ __NR_splice ] = "splice", |
|
568 | /* 276 */ [ __NR_tee ] = "tee", |
|
568 | /* 276 */ [ __NR_tee ] = "tee", |
|
569 | /* 277 */ [ __NR_sync_file_range ] = "sync_file_range", |
|
569 | /* 277 */ [ __NR_sync_file_range ] = "sync_file_range", |
|
570 | /* 278 */ [ __NR_vmsplice ] = "vmsplice", |
|
570 | /* 278 */ [ __NR_vmsplice ] = "vmsplice", |
|
571 | /* 279 */ [ __NR_move_pages ] = "move_pages", |
|
571 | /* 279 */ [ __NR_move_pages ] = "move_pages", |
|
572 | /* 280 */ [ __NR_utimensat ] = "utimensat", |
|
572 | /* 280 */ [ __NR_utimensat ] = "utimensat", |
|
573 | /* 281 */ [ __NR_epoll_pwait ] = "epoll_pwait", |
|
573 | /* 281 */ [ __NR_epoll_pwait ] = "epoll_pwait", |
|
574 | /* 282 */ [ __NR_signalfd ] = "signalfd", |
|
574 | /* 282 */ [ __NR_signalfd ] = "signalfd", |
|
575 | /* 283 */ [ __NR_timerfd_create ] = "timerfd_create", |
|
575 | /* 283 */ [ __NR_timerfd_create ] = "timerfd_create", |
|
576 | /* 284 */ [ __NR_eventfd ] = "eventfd", |
|
576 | /* 284 */ [ __NR_eventfd ] = "eventfd", |
|
577 | /* 285 */ [ __NR_fallocate ] = "fallocate", |
|
577 | /* 285 */ [ __NR_fallocate ] = "fallocate", |
|
578 | /* 286 */ [ __NR_timerfd_settime ] = "timerfd_settime", |
|
578 | /* 286 */ [ __NR_timerfd_settime ] = "timerfd_settime", |
|
579 | /* 287 */ [ __NR_timerfd_gettime ] = "timerfd_gettime", |
|
579 | /* 287 */ [ __NR_timerfd_gettime ] = "timerfd_gettime", |
|
580 | /* 288 */ [ __NR_accept4 ] = "accept4", |
|
580 | /* 288 */ [ __NR_accept4 ] = "accept4", |
|
581 | /* 289 */ [ __NR_signalfd4 ] = "signalfd4", |
|
581 | /* 289 */ [ __NR_signalfd4 ] = "signalfd4", |
|
582 | /* 290 */ [ __NR_eventfd2 ] = "eventfd2", |
|
582 | /* 290 */ [ __NR_eventfd2 ] = "eventfd2", |
|
583 | /* 291 */ [ __NR_epoll_create1 ] = "epoll_create1", |
|
583 | /* 291 */ [ __NR_epoll_create1 ] = "epoll_create1", |
|
584 | /* 292 */ [ __NR_dup3 ] = "dup3", |
|
584 | /* 292 */ [ __NR_dup3 ] = "dup3", |
|
585 | /* 293 */ [ __NR_pipe2 ] = "pipe2", |
|
585 | /* 293 */ [ __NR_pipe2 ] = "pipe2", |
|
586 | /* 294 */ [ __NR_inotify_init1 ] = "inotify_init1", |
|
586 | /* 294 */ [ __NR_inotify_init1 ] = "inotify_init1", |
|
587 | /* 295 */ [ __NR_preadv ] = "preadv", |
|
587 | /* 295 */ [ __NR_preadv ] = "preadv", |
|
588 | /* 296 */ [ __NR_pwritev ] = "pwritev", |
|
588 | /* 296 */ [ __NR_pwritev ] = "pwritev", |
|
589 | /* 297 */ [ __NR_rt_tgsigqueueinfo ] = "rt_tgsigqueueinfo", |
|
589 | /* 297 */ [ __NR_rt_tgsigqueueinfo ] = "rt_tgsigqueueinfo", |
|
590 | /* 298 */ [ __NR_perf_event_open ] = "perf_event_open", |
|
590 | /* 298 */ [ __NR_perf_event_open ] = "perf_event_open", |
|
591 | /* 299 */ [ __NR_recvmmsg ] = "recvmmsg", |
|
591 | /* 299 */ [ __NR_recvmmsg ] = "recvmmsg", |
|
592 | /* 300 */ [ __NR_fanotify_init ] = "fanotify_init", |
|
592 | /* 300 */ [ __NR_fanotify_init ] = "fanotify_init", |
|
593 | /* 301 */ [ __NR_fanotify_mark ] = "fanotify_mark", |
|
593 | /* 301 */ [ __NR_fanotify_mark ] = "fanotify_mark", |
|
594 | /* 302 */ [ __NR_prlimit64 ] = "prlimit64", |
|
594 | /* 302 */ [ __NR_prlimit64 ] = "prlimit64", |
|
595 | /* 303 */ [ __NR_name_to_handle_at ] = "name_to_handle_at", |
|
595 | /* 303 */ [ __NR_name_to_handle_at ] = "name_to_handle_at", |
|
596 | /* 304 */ [ __NR_open_by_handle_at ] = "open_by_handle_at", |
|
596 | /* 304 */ [ __NR_open_by_handle_at ] = "open_by_handle_at", |
|
597 | /* 305 */ [ __NR_clock_adjtime ] = "clock_adjtime", |
|
597 | /* 305 */ [ __NR_clock_adjtime ] = "clock_adjtime", |
|
598 | /* 306 */ [ __NR_syncfs ] = "syncfs", |
|
598 | /* 306 */ [ __NR_syncfs ] = "syncfs", |
|
599 | /* 307 */ [ __NR_sendmmsg ] = "sendmmsg", |
|
599 | /* 307 */ [ __NR_sendmmsg ] = "sendmmsg", |
|
600 | /* 308 */ [ __NR_setns ] = "setns", |
|
600 | /* 308 */ [ __NR_setns ] = "setns", |
|
601 | /* 309 */ [ __NR_getcpu ] = "getcpu", |
|
601 | /* 309 */ [ __NR_getcpu ] = "getcpu", |
|
602 | /* 310 */ [ __NR_process_vm_readv ] = "process_vm_readv", |
|
602 | /* 310 */ [ __NR_process_vm_readv ] = "process_vm_readv", |
|
603 | /* 311 */ [ __NR_process_vm_writev ] = "process_vm_writev", |
|
603 | /* 311 */ [ __NR_process_vm_writev ] = "process_vm_writev", |
|
604 | /* 312 */ [ __NR_kcmp ] = "kcmp", |
|
604 | /* 312 */ [ __NR_kcmp ] = "kcmp", |
|
605 | /* 313 */ [ __NR_finit_module ] = "finit_module", |
|
605 | /* 313 */ [ __NR_finit_module ] = "finit_module", |
|
|
606 | + /* 314 */ [ __NR_sched_setattr ] = "sched_setattr", | ||
|
|
607 | + /* 315 */ [ __NR_sched_getattr ] = "sched_getattr", | ||
|
|
608 | + /* 316 */ [ __NR_renameat2 ] = "renameat2", | ||
|
|
609 | + /* 317 */ [ __NR_seccomp ] = "seccomp", | ||
|
|
610 | + /* 318 */ [ __NR_getrandom ] = "getrandom", | ||
|
|
611 | + /* 319 */ [ __NR_memfd_create ] = "memfd_create", | ||
|
|
612 | + /* 320 */ [ __NR_kexec_file_load ] = "kexec_file_load", | ||
|
|
613 | + /* 321 */ [ __NR_bpf ] = "bpf", | ||
|
|
614 | + /* 322 */ [ __NR_execveat ] = "execveat", | ||
|
|
615 | + /* 323 */ [ __NR_userfaultfd ] = "userfaultfd", | ||
|
|
616 | + /* 324 */ [ __NR_membarrier ] = "membarrier", | ||
|
|
617 | + /* 325 */ [ __NR_mlock2 ] = "mlock2", | ||
|
606 | }; |
|
618 | }; |
|
607 | #define NUM_SYSCALLS ARRAY_SIZE(syscall_names) |
|
619 | #define NUM_SYSCALLS ARRAY_SIZE(syscall_names) |
|
608 | #define NUM_ACTIONS (NUM_SYSCALLS+64) |
|
620 | #define NUM_ACTIONS (NUM_SYSCALLS+64) |
|
609 |
|
621 | ||
|
610 | enum action { |
|
622 | enum action { |
|
611 | A_DEFAULT, // Use the default action |
|
623 | A_DEFAULT, // Use the default action |
|
612 | A_NO, // Always forbid |
|
624 | A_NO, // Always forbid |
|
613 | A_YES, // Always permit |
|
625 | A_YES, // Always permit |
|
614 | A_FILENAME, // Permit if arg1 is a known filename |
|
626 | A_FILENAME, // Permit if arg1 is a known filename |
|
615 | A_ACTION_MASK = 15, |
|
627 | A_ACTION_MASK = 15, |
|
616 | A_NO_RETVAL = 32, // Does not return a value |
|
628 | A_NO_RETVAL = 32, // Does not return a value |
|
617 | A_SAMPLE_MEM = 64, // Sample memory usage before the syscall |
|
629 | A_SAMPLE_MEM = 64, // Sample memory usage before the syscall |
|
618 | A_LIBERAL = 128, // Valid only in liberal mode |
|
630 | A_LIBERAL = 128, // Valid only in liberal mode |
|
619 | // Must fit in a unsigned char |
|
631 | // Must fit in a unsigned char |
|
620 | }; |
|
632 | }; |
|
621 |
|
633 | ||
|
622 | static unsigned char syscall_action[NUM_ACTIONS] = { |
|
634 | static unsigned char syscall_action[NUM_ACTIONS] = { |
|
623 | #define S(x) [__NR_##x] |
|
635 | #define S(x) [__NR_##x] |
|
624 |
|
636 | ||
|
625 | // Syscalls permitted for specific file names |
|
637 | // Syscalls permitted for specific file names |
|
626 | S(open) = A_FILENAME, |
|
638 | S(open) = A_FILENAME, |
|
627 | S(creat) = A_FILENAME, |
|
639 | S(creat) = A_FILENAME, |
|
628 | S(unlink) = A_FILENAME, |
|
640 | S(unlink) = A_FILENAME, |
|
629 | S(access) = A_FILENAME, |
|
641 | S(access) = A_FILENAME, |
|
630 | S(truncate) = A_FILENAME, |
|
642 | S(truncate) = A_FILENAME, |
|
631 | S(stat) = A_FILENAME, |
|
643 | S(stat) = A_FILENAME, |
|
632 | S(lstat) = A_FILENAME, |
|
644 | S(lstat) = A_FILENAME, |
|
633 | S(readlink) = A_FILENAME, |
|
645 | S(readlink) = A_FILENAME, |
|
634 | #ifndef CONFIG_BOX_USER_AMD64 |
|
646 | #ifndef CONFIG_BOX_USER_AMD64 |
|
635 | S(oldstat) = A_FILENAME, |
|
647 | S(oldstat) = A_FILENAME, |
|
636 | S(oldlstat) = A_FILENAME, |
|
648 | S(oldlstat) = A_FILENAME, |
|
637 | S(truncate64) = A_FILENAME, |
|
649 | S(truncate64) = A_FILENAME, |
|
638 | S(stat64) = A_FILENAME, |
|
650 | S(stat64) = A_FILENAME, |
|
639 | S(lstat64) = A_FILENAME, |
|
651 | S(lstat64) = A_FILENAME, |
|
640 | #endif |
|
652 | #endif |
|
641 |
|
653 | ||
|
642 | // Syscalls permitted always |
|
654 | // Syscalls permitted always |
|
643 | S(exit) = A_YES | A_SAMPLE_MEM, |
|
655 | S(exit) = A_YES | A_SAMPLE_MEM, |
|
644 | S(read) = A_YES, |
|
656 | S(read) = A_YES, |
|
645 | S(write) = A_YES, |
|
657 | S(write) = A_YES, |
|
646 | S(close) = A_YES, |
|
658 | S(close) = A_YES, |
|
647 | S(lseek) = A_YES, |
|
659 | S(lseek) = A_YES, |
|
648 | S(getpid) = A_YES, |
|
660 | S(getpid) = A_YES, |
|
649 | S(getuid) = A_YES, |
|
661 | S(getuid) = A_YES, |
|
650 | S(dup) = A_YES, |
|
662 | S(dup) = A_YES, |
|
651 | S(brk) = A_YES, |
|
663 | S(brk) = A_YES, |
|
652 | S(getgid) = A_YES, |
|
664 | S(getgid) = A_YES, |
|
653 | S(geteuid) = A_YES, |
|
665 | S(geteuid) = A_YES, |
You need to be logged in to leave comments.
Login now