Commit Graph

33 Commits

Author SHA1 Message Date
Max Erenberg cfb5f77711 Disable inactive club sites (#68)
continuous-integration/drone/push Build is passing Details
Closes #51.

An API argument called `remove_inactive_club_reps` was added so that we can dynamically control whether we want to remove inactive club reps or not. The default action is only to disable club websites without changing group membership.

Reviewed-on: #68
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2022-07-22 23:51:59 -04:00
Max Erenberg dc412ef5cb implement renewal reminders (#61)
continuous-integration/drone/push Build is passing Details
Closes #55.

Once this is merged and deployed, a cron job will be used to automatically run `ceo members remindexpire` at the beginning of every term.

Reviewed-on: #61
2022-06-30 20:02:06 -04:00
Max Erenberg 539de01c4d use admin GSSAPI creds for some API endpoints (#45)
continuous-integration/drone/push Build is passing Details
Office staff currently can't sign up new members because ceod uses their GSSAPI credentials to authenticate to LDAP, and those credentials are insufficient.

This PR uses the ceod/admin credentials instead for signing up new members and for renewing existing memberships.

Reviewed-on: #45
2022-03-12 15:19:14 -05:00
Max Erenberg 88b40b79cc Don't expire syscom members (#43)
continuous-integration/drone/push Build is passing Details
Closes #37.

Co-authored-by: Max Erenberg <>
Reviewed-on: #43
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2022-01-01 12:15:32 -05:00
Max Erenberg 1e94132e97 Add container registry API (#42)
continuous-integration/drone/push Build is passing Details
Add an API for members to create a project on Harbor.

Co-authored-by: Max Erenberg <>
Reviewed-on: #42
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2022-01-01 00:49:05 -05:00
Max Erenberg f08f4872cf Add Kubernetes API endpoint (#38)
continuous-integration/drone/push Build is passing Details
Add an API for members to create their own Kubernetes namespace.

Co-authored-by: Max Erenberg <>
Reviewed-on: #38
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2021-12-18 16:35:05 -05:00
Rio Liu b4110d887d Expire member cli and api (#33)
continuous-integration/drone/push Build is passing Details
continuous-integration/drone Build is passing Details
Closes #23

Co-authored-by: Rio Liu <rio.liu@r26.me>
Co-authored-by: Max Erenberg <>
Reviewed-on: #33
Co-authored-by: Rio <r345liu@localhost>
Co-committed-by: Rio <r345liu@localhost>
2021-12-11 16:30:18 -05:00
Max Erenberg 1338825c5d use NGINX with acme.sh 2021-11-28 22:35:46 -05:00
Max Erenberg a7c5098b67 Add cloud vhost API (#35)
continuous-integration/drone/push Build is passing Details
Add an API for members to create their own virtual hosts.

Co-authored-by: Max Erenberg <>
Reviewed-on: #35
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2021-11-27 17:59:21 -05:00
Max Erenberg ac98aaf38d Add API to manage cloud accounts (#34)
continuous-integration/drone/push Build is passing Details
This PR adds API endpoints and a CLI to create cloud accounts and to purge accounts of expired members.

Co-authored-by: Max Erenberg <>
Reviewed-on: #34
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2021-11-21 11:11:20 -05:00
Max Erenberg 23f40c74f9 Use inetOrgPerson instead of account (#29)
continuous-integration/drone/push Build is passing Details
Closes #25.

Co-authored-by: Max Erenberg <>
Reviewed-on: #29
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
2021-10-23 23:21:09 -04:00
Max Erenberg 3cba9680f5 test that email is sent when user is created 2021-09-25 13:56:23 -04:00
Rio Liu 651988bb08 Positions CLI (#11)
continuous-integration/drone/push Build is passing Details
Closes #9

Co-authored-by: Rio6 <rio.liu@r26.me>
Co-authored-by: Rio Liu <rio.liu@r26.me>
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Reviewed-on: #11
Co-authored-by: Rio <r345liu@localhost>
Co-committed-by: Rio <r345liu@localhost>
2021-09-08 09:32:34 -04:00
Max Erenberg 6f1851fc19 Merge branch 'v1' into tui
continuous-integration/drone/push Build is failing Details
2021-09-04 23:57:50 +00:00
Max Erenberg bb56870652 add skeleton for TUI 2021-09-04 23:05:19 +00:00
Andrew Wang eb5d632606 db-api (#10)
continuous-integration/drone/push Build is passing Details
Implement DB endpoints

Co-authored-by: Andrew Wang <someone.zip@gmail.com>
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Reviewed-on: #10
Co-authored-by: Andrew Wang <a268wang@localhost>
Co-committed-by: Andrew Wang <a268wang@localhost>
2021-08-29 13:08:35 -04:00
Max Erenberg 7d23fd690f store GSSAPI token in flask.g
continuous-integration/drone/push Build is passing Details
2021-08-28 05:51:48 +00:00
Max Erenberg e011e98026 use GSSAPI delegation
continuous-integration/drone/push Build was killed Details
2021-08-26 02:19:18 +00:00
Max Erenberg 08a3faaefc add unit tests for members CLI
continuous-integration/drone/push Build is passing Details
2021-08-23 23:01:24 +00:00
Max Erenberg 6917247fdd add members CLI 2021-08-23 13:59:01 +00:00
Max Erenberg 7142659a8c force delete Kerberos test principals
continuous-integration/drone/push Build is passing Details
2021-08-22 04:36:19 +00:00
Max Erenberg 95d083fca1 use our own SPNEGO implementation
continuous-integration/drone/push Build is failing Details
2021-08-21 06:27:33 +00:00
Max Erenberg 46fd926acc add test for RemoteMailmanService 2021-08-19 22:08:48 +00:00
Max Erenberg 26fd8f6f68 remove duplicate function definition 2021-08-19 17:22:34 +00:00
Max Erenberg 2a286579cb Merge branch 'v1' into uwldap_tests 2021-08-19 17:20:47 +00:00
Max Erenberg ecf089c261 Implement Groups API (#6)
This PR implements the /api/groups endpoints.

Closes #2.

Reviewed-on: #6
Co-authored-by: Max Erenberg <merenber@localhost>
Co-committed-by: Max Erenberg <merenber@localhost>
2021-08-19 12:58:59 -04:00
Max Erenberg cc0bc4a638 add tests for Mailman API 2021-08-19 16:14:41 +00:00
Max Erenberg 5bda74eaf9 fix test_group_to_dict 2021-08-19 00:05:44 +00:00
Max Erenberg 57ab275634 implement /api/groups endpoints 2021-08-18 23:48:17 +00:00
Max Erenberg d78d31eec0 add Kerberos delegation (#5)
This PR adds unconstrained Kerberos delegation to the API.

The client obtains a forwarded TGT and sends it, base64-encoded, in an HTTP header named 'X-KRB5-CRED'. The server reads this credential, creates a new credentials cache for the user, and stores the credential into the new cache. The server can now authenticate to other services (e.g. LDAP) over GSSAPI using the forwarded client's credentials.

Reviewed-on: #5
Co-authored-by: Max Erenberg <merenber@localhost>
Co-committed-by: Max Erenberg <merenber@localhost>
2021-08-18 15:39:14 -04:00
Max Erenberg dd59bea918 add Kerberos delegation 2021-08-18 01:59:24 +00:00
Max Erenberg d82b5a763b use ldap3 instead of python-ldap 2021-08-15 05:04:49 +00:00
Max Erenberg 6cdb41d47b move all tests to top-level folder 2021-08-14 00:11:56 +00:00