Skip to content

Moha-AlHanbali/shadow-clone-public

Repository files navigation

Shadow Clone API

A cheat detection system for student assignments. Built as a Web API to compare repository content with a set of repositories.


Getting Started

  • Edit the app configurations in shadow_clone_api.shadow_clone_api.py.
    • Pick either config.ProdConfig or config.DevConfig.
    • Edit these two in config.py file.
    • Provide environment variables in .env file as shown in .env.sample.
  • Use the command flask run to start the server.

Request Samples

clone_schema = {
    "type": "object",
    "properties": {
        "MAX_THREADS": {"type": "number"},
        "SIMILARITY_THRESHOLD": {"type": "number"},
        "TESTS": {"type": "boolean"},
        "CHEATER_REPORT": {"type": "boolean"},
        "QUICK_MODE": {"type": "boolean"},
        "LEGACY": {"type": "boolean"},
        "EXCEL": {"type": "boolean"},
        "course": {"type": "string"},
        "owners": {"type": "array"},
        "repository": {"type": "string"},
        "cohort": {"type": "string"},
    },
    "required": [
        "MAX_THREADS",
        "SIMILARITY_THRESHOLD",
        "TESTS",
        "CHEATER_REPORT",
        "QUICK_MODE",
        "LEGACY",
        "EXCEL",
        "course",
        "owners",
        "repository",
        "cohort",
    ],
}

add_cohort_schema = {
    "type": "object",
    "properties": {
        "cohort": {"type": "string", "maxLength": 64},
        "course": {"type": "string", "maxLength": 12},
        "students": {"type": "array"},
    },
    "required": ["cohort", "course", "students"],
}

manage_cohort_schema = {
    "type": "object",
    "properties": {
        "id": {"type": "number"},
        "cohort": {"type": "string", "maxLength": 64},
        "course": {"type": "string", "maxLength": 12},
        "students": {"type": "array", "items": {"type": "object"}},
    },
    "required": ["id", "cohort", "course", "students"],
}

manage_student_schema = {
    "type": "object",
    "properties": {
        "id": {"type": "number"},
        "cohort": {"type": "string", "maxLength": 64},
        "students": {"type": "array", "items": {"type": "object"}},
    },
    "required": ["id", "cohort", "students"],
}

Goals

  • Read Parameters from Request
  • Handle errors and Exceptions
  • Validate all requests
  • Checking for limit rate
  • Can search for existing reports
  • Can Download all reports
  • Can remove all existing reports
  • Send process status
  • Stream Terminal Output
  • Separate download handler
  • Add detection logic
  • Fetch Cohorts data
  • Add Cohorts and Courses
  • Edit Cohorts and Courses
  • Delete Cohorts and Courses
  • Refine model interactions
  • Generate Daily Access Token
  • Generate Temporary Access Token
  • WebSocket Authentication
  • Manage CORS
  • Automatically provide user emails with Access Tokens
    • Setup mailing endpoint
    • Trigger mailing API on schedule
  • Create Temporary Front-End template
    • Allow Authentication Through Template
    • Allow Sending Data Through Template
    • Allow Streaming Data Through Template
    • Provide Proper Feedback Through Template
    • Minimal Sensitive Parameters Leak
  • Prepare for deployment
    • Add Docker files
    • Add Heroku files
    • Add Production Server
  • Implement Account Authentication
    • Email Server
    • Account model
    • Account creation
    • Account Password reset
    • Session Token
  • Structured/Free Query mode

Troubleshooting

  • Check Github Token Expiry
  • Check JWT (Expiry/Match Secret)
  • Check Emails Auth Trigger Engine
  • Check Emails Auth Trigger JWT
  • Check Email Account Tokens and Credentials
  • Check OAuth info and redirect URIs
  • Check Websocket Secure state
  • Check Websocket (URL)s

About

A cheat detection system for student assignments. Built as a Web API to compare repository content with a set of repositories.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors