mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-22 11:38:42 +00:00
fix(remote_judger/codeforces): include referer when submitting problem
This commit is contained in:
parent
3d63a011ac
commit
a5a2b4547b
@ -146,8 +146,8 @@ export default class CodeforcesProvider implements IBasicProvider {
|
||||
return _tta;
|
||||
}
|
||||
|
||||
async getCsrfToken(url: string) {
|
||||
const { text: html } = await this.get(url);
|
||||
async getCsrfToken(url: string, referer = '') {
|
||||
const { text: html } = await this.get(url).set('Referer', referer);
|
||||
const {
|
||||
window: { document },
|
||||
} = new JSDOM(html);
|
||||
@ -257,9 +257,17 @@ export default class CodeforcesProvider implements IBasicProvider {
|
||||
}
|
||||
|
||||
const [type, contestId, problemId] = parseProblemId(id);
|
||||
const referer =
|
||||
this.account.endpoint +
|
||||
(type !== 'GYM'
|
||||
? `/problemset/problem/${contestId}/${problemId}`
|
||||
: `/gym/${contestId}/problem/${problemId}`);
|
||||
|
||||
logger.debug('referer', referer);
|
||||
|
||||
const [csrf, ftaa, bfaa] = await this.getCsrfToken(
|
||||
type !== 'GYM' ? '/problemset/submit' : `/gym/${contestId}/submit`
|
||||
type !== 'GYM' ? '/problemset/submit' : `/gym/${contestId}/submit`,
|
||||
referer
|
||||
);
|
||||
|
||||
logger.debug(
|
||||
@ -275,7 +283,8 @@ export default class CodeforcesProvider implements IBasicProvider {
|
||||
`/${
|
||||
type !== 'GYM' ? 'problemset' : `gym/${contestId}`
|
||||
}/submit?csrf_token=${csrf}`
|
||||
).send({
|
||||
)
|
||||
.send({
|
||||
csrf_token: csrf,
|
||||
action: 'submitSolutionFormSubmitted',
|
||||
programTypeId: programType.id,
|
||||
@ -293,7 +302,8 @@ export default class CodeforcesProvider implements IBasicProvider {
|
||||
: {
|
||||
submittedProblemIndex: problemId,
|
||||
}),
|
||||
});
|
||||
})
|
||||
.set('Referer', referer);
|
||||
|
||||
if (error) {
|
||||
end({
|
||||
|
Loading…
Reference in New Issue
Block a user