summaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* *: Further restructuringRunxi Yu12 days11-7/+66
* *.go: Move to backendRunxi Yu12 days18-2/+4
* iadocs: Update IA documentationRunxi Yu12 days10-44/+279
* docs: max-width: 50rem;Runxi Yu12 days1-1/+1
* docs/admin: Document database setupRunxi Yu12 days1-1/+10
* docs/admin: Update protocol informationRunxi Yu12 days1-3/+2
* iadocs: Cover page updateRunxi Yu12 days1-5/+5
* {,u}sem.go, ws*.go: Restructure filesRunxi Yu12 days5-235/+319
* {config,main}.go: Enhance configuration file processingRunxi Yu12 days2-8/+124
* bench.go: ReformatRunxi Yu12 days1-2/+2
* bench.go: Separate connection stage from selection stagev0.1.3Runxi Yu12 days1-2/+10
* bench.go: More realistic benchmark for one course onlyRunxi Yu12 days1-9/+18
* Makefile: BSD Make also supports wildcards in targetsRunxi Yu12 days1-1/+1
* Makefile: Add sem.go to source file listRunxi Yu12 days1-1/+1
* {config,ws}.go, cca.scfg.example: Add perf.course_update_intervalRunxi Yu12 days3-6/+14
* {courses,wsm}.go: Use in-memory structure to fetch cgroup, not SQLRunxi Yu12 days2-26/+18
* {config,ws}.go, cca.scfg.example: Remove chanPool/SendQRunxi Yu12 days3-59/+0
* ws.go: &usemT{} //exhaustruct:ignoreRunxi Yu12 days1-1/+1
* ws.go: Check error of populateUserCourseGroupsRunxi Yu12 days1-1/+4
* wsm.go: Omit comparison to bool constantRunxi Yu12 days1-1/+1
* wsm.go: Report error when course doesn't existRunxi Yu12 days1-0/+8
* {courses,sem,ws,wsm}.go: Second step towards an efficient state propagatorRunxi Yu12 days4-16/+24
* {courses,sem,ws}.go: First step towards an efficient state propagatorRunxi Yu12 days3-6/+110
* go.sum: go mod tidy (removing old checksums)Runxi Yu12 days1-6/+0
* ws.go: Index chanPool by userID, rather than session cookieRunxi Yu12 days1-5/+2
* {main,utils,ws}.go: Initialize cancelPool directly tooRunxi Yu12 days3-25/+1
* Bump dependenciesRunxi Yu12 days2-3/+9
* {main,ws}.go: Initialize chanPool directly instead of setupChanPool()Runxi Yu12 days2-22/+1
* courses.go: ReformatRunxi Yu12 days1-1/+1
* {courses,wsm}.go: Add getCourseByIDRunxi Yu12 days2-10/+8
* {courses,wsm}.go: Add (*courseT).decrementSelectedAndPropagateRunxi Yu12 days2-24/+15
* {courses,ws,wsm}.go: Update userCourseGroups during choose/unchooseRunxi Yu12 days3-12/+51
* config.go: Emit warning when fake auth is enabledRunxi Yu12 days1-0/+2
* bench.go: Don't close request bodyRunxi Yu12 days1-6/+0
* {courses,ws}.go: Populate userCourseGroups in a separate functionRunxi Yu12 days2-32/+35
* {courses,ws}.go: Populate userCourseGroups for each connectionRunxi Yu12 days2-5/+63
* courses.go, schema.sql: Validate course{Type,Group} in server, not SQLRunxi Yu12 days4-30/+45
* *.sql: New schema with ctypes and cgroupsRunxi Yu12 days3-18/+39
* drop.sql: New SQL script to drop all tablesRunxi Yu13 days1-0/+3
* auth.go: Improve display of OAuth 2.0 errorsRunxi Yu13 days1-4/+17
* config.go: Return errors instead of panicing on auth.fake issuesRunxi Yu13 days1-3/+11
* {config,main}.go, cca.scfg.example: Settable static pathRunxi Yu13 days3-13/+8
* staff.html: Initial staff pageRunxi Yu13 days1-0/+149
* student.html, *.js: {main->student}.jsRunxi Yu13 days2-1/+1
* student.html: {{ .user.Name }} instead of Home in titleRunxi Yu13 days1-1/+1
* bench.go, main.js: Use an HTTPS URLRunxi Yu13 days2-2/+2
* {config,main}.go, cca.scfg.example: Support TLSRunxi Yu13 days3-8/+65
* main.go, cca.scfg.example: Remove FastCGI supportRunxi Yu13 days2-9/+5
* bench.go: Use more realistic connection numbers for nowRunxi Yu13 days1-4/+4
* postgres_shell.sh: Delete as unnecessaryRunxi Yu13 days1-3/+0