/Online-Judge

Online Judge for testing programming ability in C, C++, Java and Python.

Primary LanguageJavaScript

Online-Judge

Tools used

  • Programming languages: Java, JavaScript, C and Linux Shell Script (bash)
  • Frameworks / Libraries: Bootstrap, Jquery, Ace Editor, Ckeditor, Java Mailer(spring), Google GSON, Java Encoder OWASP, Apache Validator, Apache Commons File Upload and MySQL JDBC Connector
  • Server: Tomcat 9
  • Database: MySQL 5.7
  • Host OS: Ubuntu 18.04 LTS
  • Sandboxing: Chroot based on Ubuntu 18.04 LTS
  • Compilers: GCC 7.3.0, G++ 7.3.0, JDK 11(Oracle) and Python 3
  • Additional libraries: libseccomp-dev and software-properties-common

Edits required

  • Edit website/src/auth/Mailer.java using your email and password after subscribing for google mail service.
  • Edit website/src/link/Link.java using your database credentials.
  • Replace path-to-workspace in web.xml with a suitable path such as home/username/Desktop.

Login id

Demo video

Deployment

  • Install JDK, Tomcat Server, MYSQL.
  • Setup chroot based on Ubuntu 18.04 LTS with all the compilers and addtitional libraries installed inside it.
  • Path of chroot should be "/cryptic_security/jail".
  • Place the "liboj" folder at "/" without the source folders and readme files.
  • Adjust the permissions of all the files in the "liboj" folder.
  • Binary files in "liboj/bin" folder are setuid wrappers, so, set the permissions accordingly.
  • Place the "java_policy" file(available in source folder of judge) inside the "/etc" folder of chroot os.
  • Import the database using the "database.sql" file in database folder.
  • Deploy the website on Tomcat Server.

Bugs

Some of the known bugs are:

  • JQuery AJAX and prepend functions fail on Google Chrome but works on Firefox, Edge and other popular browsers.
  • Judge fails for first few program run initially when server is started but starts working smoothly after 2 failed attempts.