Skip to content

Instantly share code, notes, and snippets.

@OmeletWithoutEgg
Created July 30, 2023 17:25
Show Gist options
  • Save OmeletWithoutEgg/1eb34adbd4939d0057fd0e3be295268a to your computer and use it in GitHub Desktop.
Save OmeletWithoutEgg/1eb34adbd4939d0057fd0e3be295268a to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""TIOJ AUTO ADD Acount Script"""
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
import requests
import random
import string
from bs4 import BeautifulSoup
import csv
import subprocess
import json
from datetime import datetime
# config
ADMIN_PASSWORD = 'fill me'
TIOJ_HOST = 'https://judge.apcs.camp'
def login_admin(session, TIOJusername, TIOJpassword):
print('logging in...')
rel = session.get(f'{TIOJ_HOST}/admin/login')
soup = BeautifulSoup(rel.text, 'html.parser')
inputs = soup.find('form').find_all('input')
assert inputs[0].attrs['name'] == 'authenticity_token'
rel = session.post(f'{TIOJ_HOST}/admin/login', data = {
inputs[0].attrs['name']: inputs[0].attrs['value'],
# inputs[1].attrs['name']: inputs[1].attrs['value'],
'admin_user[username]': TIOJusername,
'admin_user[password]': TIOJpassword,
'admin_user[remember_me]': '1',
'commit': 'Login'
})
assert rel.status_code == 200
print('login success')
# assert inputs[0].attrs['name'] == 'authenticity_token'
# return inputs[0].attrs['value']
session = requests.Session()
login_admin(session, 'admin', ADMIN_PASSWORD)
def edit_profile(username, data):
rel = session.get(f'{TIOJ_HOST}/admin/users/{username}/edit')
soup = BeautifulSoup(rel.text, 'html.parser')
inputs = soup.find('form').find_all('input')
assert inputs[1].attrs['name'] == 'authenticity_token'
data = data.copy()
data['authenticity_token'] = inputs[1].attrs['value']
data['commit'] = 'Update User'
rel = session.patch(f'{TIOJ_HOST}/admin/users/{username}', data=data) # =json.dumps(data), headers=headers)
print(rel.status_code)
assert rel.status_code == 200
print(username, 'done')
edit_profile('omelet', { 'user[admin]': '1' })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment