|
4039a394b5
|
sync: Extract function that import flags from importer
|
2019-07-10 13:09:08 +02:00 |
|
|
3f55845374
|
sync: Extract function that import files from importer
|
2019-07-06 04:08:29 +02:00 |
|
|
682598fdbb
|
sync: Extract function that builds a theme from importer
|
2019-07-06 03:28:44 +02:00 |
|
|
15d108497e
|
backend: check the team has access to the exercice/flag before doing the action
|
2019-02-06 03:40:49 +01:00 |
|
|
a35aa7be70
|
admin: add a new route to update team history coefficient
|
2019-02-06 03:40:49 +01:00 |
|
|
6a1f73c895
|
admin: include coefficient in history.json
|
2019-02-06 03:40:49 +01:00 |
|
|
60ec9704e3
|
admin: add exercice history.json
|
2019-02-06 03:40:49 +01:00 |
|
|
2381fb490b
|
libfic: fix checks in handling of team history deletiion
|
2019-02-06 03:40:49 +01:00 |
|
|
c4aa220b2c
|
frontend: don't reuse tries in public interface; use a separate field to store total tries count for an exercice; and display it in interface
|
2019-02-06 03:40:48 +01:00 |
|
|
e97cf884ce
|
libfic: add igncorecase flag to regexp related to ignorecase flag
|
2019-02-06 03:40:48 +01:00 |
|
|
db22c4af1b
|
frontend: polish public version checks
|
2019-02-06 03:40:48 +01:00 |
|
|
c9347f45e2
|
dashboard: fix solved number in summary table
|
2019-01-23 18:29:52 +01:00 |
|
|
3f7e217316
|
db: store file size as unsigned int
|
2019-01-22 08:49:44 +01:00 |
|
|
eee2cd6a2f
|
admin: add a button to edit the raw flag value instead of the checksum
|
2019-01-22 08:49:44 +01:00 |
|
|
48fcfec0d0
|
backend: use a new team field 'active', to avoid some team generation
|
2019-01-22 08:49:44 +01:00 |
|
|
f32e46c699
|
libfic: db: increase db boot time to 90 seconds
|
2019-01-22 08:49:44 +01:00 |
|
|
50a51ba628
|
libfic: Fix MCQ dependency on flag
|
2019-01-22 08:49:44 +01:00 |
|
|
7d9ad18f42
|
settings: new parameter to don't respect flag dependancies
|
2019-01-22 08:49:44 +01:00 |
|
|
cfb06009c9
|
Revert "db: cap the maximum number of simultaneous connections to the database"
This reverts commit 29ea78f0394a175100666894a15de056ce286b57.
|
2019-01-21 09:58:36 +01:00 |
|
|
6be7ba09a5
|
libfic: fix wipefiles: it didn't delete its dependencies
|
2019-01-21 09:58:36 +01:00 |
|
|
b6769086c2
|
frontend: treat MCQ justification as key flag, instead of special case
|
2019-01-21 09:58:36 +01:00 |
|
|
891b2ea6bf
|
libfic: fix a potential memory/SQL connection leak
|
2019-01-21 09:58:36 +01:00 |
|
|
4a4d0f634a
|
settings: add new coefficient for all exercices
|
2019-01-21 09:58:36 +01:00 |
|
|
8e6b8829ea
|
libfic: new way to handle exercice dependancies
|
2019-01-21 09:58:36 +01:00 |
|
|
c5f8288f39
|
settings: add coefficient to hint and wchoices
|
2019-01-21 09:58:36 +01:00 |
|
|
2623d9dd61
|
admin: new route to generate htpasswd corresponding to certificate in use by team
|
2019-01-21 09:58:36 +01:00 |
|
|
5d31ac6e04
|
libfic: implement more dependancies kind
|
2019-01-21 09:58:35 +01:00 |
|
|
1e183f60ee
|
libfic: extract validation_regexp execution
|
2019-01-21 09:58:35 +01:00 |
|
|
a66d6885e7
|
Refactor flags
Both QCM and Key are Flag
|
2019-01-21 09:58:35 +01:00 |
|
|
f3eabd74fc
|
admin: add wchoices in team_history.json
|
2019-01-21 03:08:06 +01:00 |
|
|
1b75547308
|
db: cap the maximum number of simultaneous connections to the database
|
2019-01-21 03:08:06 +01:00 |
|
|
aa3750bb68
|
dashboard: improve general design (mostly events related)
|
2019-01-21 03:08:06 +01:00 |
|
|
78b6211b94
|
include id_theme in Exercice struct
|
2019-01-21 03:08:06 +01:00 |
|
|
a1c94d582d
|
admin: score grid is a JSON to display scoring detail for a team
|
2019-01-21 03:08:05 +01:00 |
|
|
910ec94fd8
|
Add a new setting to don't count same responses in scores
|
2019-01-21 03:08:05 +01:00 |
|
|
8dc460b507
|
rank: count wchoices in score
|
2019-01-21 03:08:05 +01:00 |
|
|
2c5144aac0
|
fic: improve ranking query lisibility
|
2019-01-21 03:08:05 +01:00 |
|
|
74550f8907
|
rank: fix long running scoring error
|
2019-01-21 03:08:05 +01:00 |
|
|
dc4a4925e3
|
sync: refactor exercice synchronization
|
2019-01-21 03:08:05 +01:00 |
|
|
7f2ae673d0
|
sync: try to remove old exercice without any player try
|
2019-01-21 03:08:04 +01:00 |
|
|
c05609f85f
|
fic: fix exercice indicated as solved
|
2019-01-21 03:08:04 +01:00 |
|
|
0e36a850cf
|
Array flags can be non-ordered
|
2019-01-21 03:08:04 +01:00 |
|
|
dbf1985d25
|
Implement flag arrays
|
2019-01-21 03:08:04 +01:00 |
|
|
3ad7976e4b
|
libfic: simplify git usability of the reset list
|
2019-01-21 03:08:04 +01:00 |
|
|
476f0f553c
|
implement choices_cost
|
2019-01-21 03:08:04 +01:00 |
|
|
f9abdd23c6
|
Dependancy between flags
|
2019-01-21 03:08:04 +01:00 |
|
|
21697f01ca
|
New field for exercice to display a text after exercice validation
|
2019-01-21 03:08:04 +01:00 |
|
|
87471acf98
|
sync: import files in markdown, relative to theme/exercice dir
|
2019-01-21 03:08:04 +01:00 |
|
|
8c95782eff
|
Implement and display headlines in interface
|
2019-01-21 03:08:02 +01:00 |
|
|
614003a7cd
|
libfic: handle mcq in team history
|
2019-01-21 03:07:47 +01:00 |
|
|
c5b65289d3
|
Add new helper string related to justified MCQ flag
|
2019-01-21 03:07:47 +01:00 |
|
|
0f48b27a04
|
Avoid Atoi to avoid int convertion
|
2019-01-21 03:07:47 +01:00 |
|
|
d40922629b
|
Utilise a new field to send justifications instead of too complex guessing crap
|
2019-01-21 03:07:47 +01:00 |
|
|
69a866bbbf
|
frontend: when a justification is valid, check the MCQ box
|
2019-01-21 03:07:47 +01:00 |
|
|
3dcb233c3f
|
handle justified MCQ in interface and submission
|
2019-01-21 03:07:47 +01:00 |
|
|
01368dd6f4
|
frontend: expose UCQ choices
|
2019-01-21 03:07:47 +01:00 |
|
|
5c742834ea
|
frontend: public part now validate through blake2b.js flags and MCQs
|
2019-01-21 03:07:47 +01:00 |
|
|
8ac2776cca
|
Export help format string in my.json
|
2019-01-21 03:07:47 +01:00 |
|
|
195490484c
|
Change exported flags format in my.json
|
2019-01-21 03:07:47 +01:00 |
|
|
17ef0b0a32
|
libfic: fix hint deletion in team history
|
2019-01-21 03:07:47 +01:00 |
|
|
0effdbcf5e
|
Themes can have header image
|
2018-12-09 20:41:43 +01:00 |
|
|
d7553f0392
|
Handle justified MCQ in admin and sync part
|
2018-12-08 20:35:36 +01:00 |
|
|
488a032eba
|
Handle choices in UCQ (db, sync done)
|
2018-12-08 20:35:36 +01:00 |
|
|
333bb408e1
|
backend: save the checksum of each try, to be able to detect duplicates after
|
2018-12-08 20:35:36 +01:00 |
|
|
44d335bc9f
|
Add issue field for exercice, to be able to communicate about problem with exercice
|
2018-12-08 20:35:36 +01:00 |
|
|
f183985982
|
admin: Add exercice's tags: sync, api, interface done
|
2018-12-08 20:35:36 +01:00 |
|
|
ff56ec9fe3
|
libfic/flag: add validatorRegexp field
|
2018-12-08 20:35:32 +01:00 |
|
|
d21f3b0b83
|
Rename Exercice's Keys as Flags
|
2018-12-08 20:34:04 +01:00 |
|
|
f36e1c4e4d
|
Stores ignorecase property for flags
|
2018-12-08 20:33:39 +01:00 |
|
|
2a6fbd4e32
|
admin&sync: insert format helper in database
|
2018-12-08 20:32:33 +01:00 |
|
|
1e2a74f3ca
|
sync: add dependency on flag to download file
|
2018-12-08 03:23:08 +01:00 |
|
|
dcfb34c6fd
|
libfic: fix missing field retrieve in EFile
|
2018-12-08 03:23:08 +01:00 |
|
|
2a941a4fc7
|
db: support real UTF-8
https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434
|
2018-12-08 03:23:08 +01:00 |
|
|
20dfd99ec0
|
admin: new route to check file on disk
|
2018-12-08 03:23:08 +01:00 |
|
|
5b30788cff
|
libfic: Fix a nil dereference when checking size of not found files
|
2018-12-08 03:23:08 +01:00 |
|
|
9ab5738cff
|
admin/sync: theme's name is now part of the theme's dirname
|
2018-12-08 03:23:07 +01:00 |
|
|
cb02fa98dd
|
libfic: fix WipeMCQ which didn't work
|
2018-12-08 03:23:07 +01:00 |
|
|
d05c211a7c
|
sync/file: hide by default the whole calculated digest
This is to avoid direct copy/paste to DIGESTS.txt without real local calculation.
|
2018-12-08 03:23:07 +01:00 |
|
Thibaut
|
12cb4e95f4
|
libfic: update SQL modes to be compatible with lastest MySQL version
|
2018-06-05 13:37:03 +02:00 |
|
|
f70fb20a70
|
reset db: use transaction when turncating tables
|
2018-05-13 14:16:06 +02:00 |
|
|
dcb67fba63
|
Docs, docs, docs!
|
2018-05-13 14:15:07 +02:00 |
|
|
156a87abc0
|
admin/pki: use symlink instead of DB to associate certificate to team
|
2018-05-11 15:03:10 +02:00 |
|
|
bcc598ebd5
|
Write docs!
|
2018-05-11 15:03:09 +02:00 |
|
|
62aea5413e
|
use more official blake2b checksum
|
2018-05-11 05:27:51 +02:00 |
|
|
68e5c4cd2b
|
pki: improve serial number generation + fix team association
Replace math/rand by crypto/rand.
Fix big when associating certificate with leading zero: nginx prepend 0 wherehas we don't.
|
2018-05-11 05:27:51 +02:00 |
|
|
1e36eb8b2f
|
events.json: display 10 events instead of 6
|
2018-05-11 05:27:51 +02:00 |
|
|
91663f55af
|
my-public.json: prefer display overview instead of statement, if available
|
2018-05-11 05:27:51 +02:00 |
|
|
3c8f9e55b6
|
db: allow multiple identical events
|
2018-05-11 05:27:51 +02:00 |
|
|
627c28cd94
|
libfic: don't show useless decimals to gain
|
2018-05-11 05:27:50 +02:00 |
|
|
6d1ef0f51c
|
admin: new route to fill URLIds if they are not defined
|
2018-05-11 05:27:50 +02:00 |
|
|
8ae4d1c42f
|
libfic: remove trailing - at the end of some urlids
|
2018-05-11 05:27:50 +02:00 |
|
|
3f1f60030c
|
db: increase DB connection retries
|
2018-05-11 05:27:50 +02:00 |
|
|
c118035c33
|
Introducing new PKI management
|
2018-05-11 05:27:50 +02:00 |
|
|
992221a6da
|
Remove old PKI
|
2018-05-11 05:27:50 +02:00 |
|
|
e083da2f72
|
Remove team's initial_name, replaced by their ID
|
2018-05-11 05:27:50 +02:00 |
|
|
0c540a39eb
|
frontend: beautiful URLs
|
2018-01-26 12:02:32 +01:00 |
|
|
1eef71923a
|
admin: new interface to manage claims
|
2018-01-18 12:08:12 +01:00 |
|
|
3932bba83d
|
db: when DB is unreachable, retry 5 times before fatal return
|
2018-01-18 12:08:12 +01:00 |
|
|
e7d3e34c0b
|
libfic: explode theme file
|
2018-01-18 12:08:12 +01:00 |
|
|
beba0a615f
|
improve overall exercices interfaces
|
2018-01-18 12:08:12 +01:00 |
|
|
11d0fe8d1f
|
admin/sync: handle hint files download
|
2018-01-18 12:08:12 +01:00 |
|
|
2aa1d6eeca
|
libfic: fix bad hints displayed
|
2018-01-18 12:08:11 +01:00 |
|
|
9a1a64c41c
|
admin: complet API and interface with files checking page
|
2018-01-18 12:08:11 +01:00 |
|
|
184714aeeb
|
frontend: team registration
|
2018-01-18 12:08:11 +01:00 |
|
|
ea3f3b709d
|
admin/sync: import theme introductions
|
2018-01-18 12:08:10 +01:00 |
|
|
e9910fe827
|
admin: can delete team history item
|
2018-01-17 18:52:48 +01:00 |
|
|
a0737d91b9
|
libfic: force MySQL charset
|
2018-01-17 18:52:47 +01:00 |
|
|
4052969304
|
libfic/mcq: remove Kind, as we can only handle checkbox; another kind of record should be created to handle select/radio
|
2018-01-17 18:52:46 +01:00 |
|
|
e630bc3d75
|
Improve bootstrap 4 support
|
2018-01-17 18:52:46 +01:00 |
|
|
838918da66
|
Exercice: add overview field
This field is use as a high level description of the exercice. It will be
displayed on the public interface only: not to players.
|
2018-01-17 18:52:45 +01:00 |
|
|
830dacd6f5
|
Save MCQ diff
|
2018-01-17 18:52:45 +01:00 |
|
|
b079f7891c
|
admin: sync mcq/ucq
|
2018-01-17 18:52:45 +01:00 |
|
|
d6012dfffb
|
frontend: display MCQ in interface
|
2018-01-17 18:52:45 +01:00 |
|
|
6903c91df2
|
Able to check MCQ
|
2018-01-17 18:52:44 +01:00 |
|
|
c36cd202e8
|
libfic: start working on MCQ: structures done
|
2018-01-17 18:52:44 +01:00 |
|
|
9a9d5fcda4
|
libfic: Type key is now Label
|
2018-01-17 18:52:41 +01:00 |
|
|
ae7e1ede14
|
libfic: increase authors field size
|
2018-01-17 18:52:40 +01:00 |
|
|
38d7cb00b6
|
libfic: add function to get exercice by title
|
2018-01-17 18:52:40 +01:00 |
|
|
f97e114a81
|
libfic: add functions to wipe {files,hints,keys}
|
2018-01-17 18:52:40 +01:00 |
|
|
38a0f4c9b5
|
libfic: Add new row in exercices table, to store relative path to exercice
|
2018-01-17 18:52:40 +01:00 |
|
|
38606f28c7
|
libfic: new function to get theme by name
|
2018-01-17 18:52:39 +01:00 |
|
|
8f7de926d3
|
admin: Implement sychronization backends
We are now able, depending on configuration, to retrieve files from either WebDAV or local file system.
|
2018-01-17 18:52:39 +01:00 |
|
|
6237f7755a
|
Change Key.Value to Key.Checksum
|
2018-01-17 18:52:39 +01:00 |
|
|
b84fe87f48
|
New functions to get file by path
|
2018-01-17 18:52:39 +01:00 |
|
|
cd5a9d06ea
|
Define global default value at initialisation
|
2018-01-17 18:52:39 +01:00 |
|
|
e6e6e6c206
|
Use BLAKE2b checksum instead of SHA-1 and SHA-512
|
2018-01-17 18:52:38 +01:00 |
|
|
41400a8710
|
admin: add history route in API
|
2018-01-17 18:52:37 +01:00 |
|
|
17d983221d
|
libfic: split team removal in two requests
|
2018-01-17 18:52:36 +01:00 |
|
|
4a97b06520
|
Set SQL_MODES, waiting https://jira.mariadb.org/browse/MDEV-10426 to be solved
|
2018-01-17 18:52:35 +01:00 |
|
|
d0f588e47d
|
Generate DNS from env
|
2018-01-17 18:52:34 +01:00 |
|
|
4f6d4a82b0
|
db: add constraints to avoid multiple records of unique values
|
2018-01-17 18:52:32 +01:00 |
|
|
7597fcfe5b
|
admin: add button and route to reset some parts
|
2018-01-17 18:52:32 +01:00 |
|
|
7478051425
|
admin: interface to edit teams
|
2018-01-17 18:52:32 +01:00 |
|
|
cab95b7985
|
libfic: new function to retrieve exercices from a hint
|
2018-01-17 18:52:32 +01:00 |
|
|
4fe641a9f5
|
change the way themes are stored in stats
|
2018-01-17 18:52:31 +01:00 |
|
|
544bbb745c
|
admin: new route /members/
|
2018-01-17 18:52:31 +01:00 |
|
|
b8b1f14806
|
admin: restore function to add team and members
|
2018-01-17 18:52:31 +01:00 |
|
|
8e91e7edbe
|
admin: sanitize use of InitialName when needed
|
2018-01-17 18:52:30 +01:00 |
|
|
49933059f3
|
certificates: avoid error on noexec partition
|
2018-01-17 18:52:30 +01:00 |
|
|
b42016c74a
|
Coefficients transit and display on UI
|
2018-01-17 18:52:29 +01:00 |
|
|
21e4b04c19
|
frontend: dedicate a field in JSON to file hint
|
2018-01-17 18:52:29 +01:00 |
|
|
b772a22705
|
Hints can something else than text
|
2018-01-17 18:52:29 +01:00 |
|
|
9dd376ba22
|
libfic: refactor rank/points SQL query
|
2018-01-17 18:52:28 +01:00 |
|
|
91182b1877
|
admin: Improve CA API
|
2018-01-17 18:52:28 +01:00 |
|
|
1c879fe50e
|
squash! WIP: apply a coeff on given points
|
2018-01-17 18:52:14 +01:00 |
|
|
0cde350c5e
|
WIP: apply a coeff on given points
|
2018-01-17 18:51:54 +01:00 |
|
|
10fe40e4a8
|
Settings are now given through TEAMS/settings.json instead of been given through command line arguments
|
2018-01-17 18:51:54 +01:00 |
|
|
37310e41f5
|
New rank and score calculation
|
2018-01-17 18:51:54 +01:00 |
|
|
1bd403cd8c
|
Handle file import digest
|
2018-01-17 18:51:53 +01:00 |
|
|
c57b612205
|
Split team.go into multiple files
|
2018-01-17 18:51:53 +01:00 |
|
|
b6782962f1
|
[admin] Add events
|
2018-01-17 18:51:53 +01:00 |
|
|
2e718b22b6
|
Merge exercices API routes
|
2018-01-17 18:51:52 +01:00 |
|
|
d1c5a545d9
|
backend: can open hint
|
2018-01-17 18:51:51 +01:00 |
|
|
e76d055bdb
|
Partial resolution of exercices
|
2018-01-17 18:51:51 +01:00 |
|
|
25bf34e82c
|
Multiple hints
|
2018-01-17 18:51:50 +01:00 |
|
|
636ab65990
|
backend: new option that unlock all challenges
|
2017-11-25 15:01:01 +01:00 |
|
|
384b6cd212
|
themes: don't expect authors to be dirty
|
2017-11-25 15:01:01 +01:00 |
|
|
e0a1aeb053
|
admin: add ability to add files from local storage
|
2017-11-25 15:00:54 +01:00 |
|
|
017adfb2b1
|
[admin] statistic generation
|
2017-01-12 11:55:30 +01:00 |
|
|
5e74b3f7ce
|
[admin] Can retrieves tries rate
|
2017-01-12 11:55:29 +01:00 |
|
|
467641f4f2
|
Add initial_name field in DB
|
2016-10-13 19:56:29 +02:00 |
|
|
1c62f61bf0
|
Backend: extract file generation and team renaming in dedicated files
|
2016-10-13 19:56:27 +02:00 |
|
|
ee67788d59
|
Expect full downloadable file pathname (allow CDN)
|
2016-10-13 19:56:26 +02:00 |
|
|
da84a90b4f
|
Export VideoURI if they are defined
|
2016-10-13 19:56:25 +02:00 |
|
|
bd0deecc89
|
Team colors are uint32
|
2016-10-13 19:56:25 +02:00 |
|
|
e9f2b166a6
|
Fix submission replay possibility
|
2016-10-13 19:56:24 +02:00 |
|
|
a8031452f7
|
New scripts to get files
|
2016-10-13 19:56:23 +02:00 |
|
|
f3a15b00e9
|
Too much things
|
2016-02-01 16:07:41 +01:00 |
|
|
d35bdca3b1
|
Prepare tries rank
|
2016-01-25 03:08:42 +01:00 |
|
|
9b293b7d32
|
themes.json: add stat of tries count
|
2016-01-25 03:08:42 +01:00 |
|
|
e55804fecb
|
my.json: When solved=false, solved_number now contains tries count
|
2016-01-25 03:08:42 +01:00 |
|
|
85646fd2d7
|
Recall ThemeId in my.json exercices
|
2016-01-25 03:08:42 +01:00 |
|
|
9c1f6c4ab8
|
theme: new function for getting just the ID of the theme, not all the Theme
|
2016-01-25 03:08:42 +01:00 |
|
|
7f9581f578
|
Fix rank order...
|
2016-01-24 14:33:17 +01:00 |
|
|
136b436af5
|
Allow teams to change their name
|
2016-01-24 14:33:16 +01:00 |
|
|
e207e90c2e
|
my.json now contains team members, instead of teams.json
|
2016-01-24 14:33:16 +01:00 |
|
|
890d3e2fdf
|
Fix segv
|
2016-01-24 14:33:16 +01:00 |
|
|
fce5b26e5d
|
Points are given through my.json
|
2016-01-24 14:33:15 +01:00 |
|
|
fdeffbdefe
|
Last minute fixes
|
2016-01-23 14:12:03 +01:00 |
|
|
645f40f0c6
|
format
|
2016-01-23 13:19:28 +01:00 |
|
|
8788eea4f0
|
Use MySQL instead of SQLite
|
2016-01-23 13:17:24 +01:00 |
|
|
70b6b30067
|
backend: treat file found in directory discovered + handle multiple keys + generate my.json
|
2016-01-23 12:57:15 +01:00 |
|
|
c1746f3dc7
|
libfic: Can retrieve the Theme from an exercice
|
2016-01-23 12:57:15 +01:00 |
|
|
859dbc68cb
|
Add authors in themes
|
2016-01-23 12:57:15 +01:00 |
|
|
e628e7931c
|
Extract my.json generation
|
2016-01-23 12:57:15 +01:00 |
|
|
992dbfc67d
|
Bufferize file download (to avoid OOM)
|
2016-01-23 12:57:14 +01:00 |
|
|
52d23b8920
|
Fix typo
|
2016-01-23 12:57:14 +01:00 |
|
|
8465f442c6
|
Change HasSolved behaviour: now return last try if not solved
|
2016-01-23 12:57:11 +01:00 |
|
|
3aafb15f19
|
Add rank
|
2016-01-21 05:34:00 +01:00 |
|
|
5a8d2c36b7
|
Export themes.json
|
2016-01-21 05:34:00 +01:00 |
|
|
47610f0e2a
|
Export teams.json
|
2016-01-21 05:34:00 +01:00 |
|
|
664d78f913
|
Fix number of previous answered teams
|
2016-01-21 05:33:59 +01:00 |
|
|
69ad64715c
|
Import file from owncloud
|
2016-01-21 05:33:59 +01:00 |
|
|
ede5bb18b1
|
Add certificate generation and revokation
|
2016-01-21 05:33:59 +01:00 |
|
|
59ae11e68d
|
Add a color field for teams
|
2016-01-21 05:33:58 +01:00 |
|
|
381aefa597
|
HasSolved now returns a tuple (bool, Time, int)
|
2016-01-21 05:33:58 +01:00 |
|
|
c33c2b8e8a
|
Cache file size
|
2016-01-21 05:33:57 +01:00 |
|
|
c8d1575ee1
|
Add a function to get all exercices
|
2016-01-21 05:33:57 +01:00 |
|
|
1bd8374703
|
Add HasAccess function
|
2016-01-21 05:33:57 +01:00 |
|
|
5a2a950b1f
|
Use byte slice instead of arrays
|
2016-01-21 05:33:57 +01:00 |
|