A cheat detection system for student assignments. Built as a Web API to compare repository content with a set of repositories.
- Edit the app configurations in
shadow_clone_api.shadow_clone_api.py.- Pick either
config.ProdConfigorconfig.DevConfig. - Edit these two in
config.pyfile. - Provide environment variables in
.envfile as shown in.env.sample.
- Pick either
- Use the command
flask runto start the server.
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"],
}- 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
- 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