MikeMirzayanov's blog

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

Are you missing something new? I have something to please you.

Regularly I host some events — Olympiads, onsites, and eventually, examinations and tests for students. On the one hand, Codeforces already offers a unique functionality — groups, the integration with Polygon, the possibility of choosing tasks from the archive and so on. But it doesn’t enough!

Domains for groups

Here is an example of such a group. It is open for all — join it and look: http://example.contest.codeforces.com

Domain

Now when you are editing a group, you can specify its subdomain (from 3 to 20 alphanumeric characters, starts with a letter). When you specify the domain, the group will be accessible by a link http://yourgroupdomain.contest.codeforces.com. According to this link, the following is correct:

  • Nothing extra will be displayed — the site contains only the information about competitions and blogs of your group and nothing else.
  • All you need to display — is an HTTP access to 77.234.215.194. If you host the official contest, important coaching or examination — block all the rest of the Internet, except for this IP-address.
  • Today such groups can only contain private competitions and trainings. For example, you can make your mashup and set it up as you need. Maybe, later we will make something with this restriction, but for now — it is like this.
Permitted subnets for the domain

To be sure that extra people will not click on your link http://yourgroupdomain.contest.codeforces.com, you can block the access to it by IP. Specify the exact IP or subnet address. For example, 188.93.56.35;212.193.32.0/19.

The language of the interface of the domain

Probably, when you host the event, only the English (or only Russian) interface is enough for the participant. Use this setting to select the desired behavior.

Header html

You can change the site header at http://yourgroupdomain.contest.codeforces.com, so that there will be not the familiar logo of Codeforces, but the logo or name of your event. For example, when I host the inter-university Olympiad in Saratov, I set it to <h3>Interuniversity Olympiad on programming 2017 (Saratov)</h3>.

Users of the domain (sidebar)

It is very likely that if you hold an Olympiad or something similar, participants may not have the Codeforces account, the information about participants comes from a separate registration, and you want to see usual names in the interface, such as ‘John Doe, Berliandsky SU, 3 Course’, rather than the participant’s handle.

You can add synthetic users to your group with a domain (using these accounts, you can only log the group through the domain). Use the special function “Users of the domain”. Each line corresponds to one user and must be written in the format: contest ids (separated by commas) | Handle | Password | Name. Here's an example of this setting for the domain example.contest.codeforces.com:

213380 | u01 | 371111 | Petr Korotkevich
213380 | u02 | 627492 | Gennady Soejima
213380 | u03 | 491591 | Makoto Knuth
213380 | u04 | 581711 | Donald Cormen
213380 | u05 | 057259 | Thomas Mitrichev

Yes, you can feel like Peter Korotkevich, log on http://example.contest.codeforces.com, and use the login u01 and the password 371111.

Privacy settings

You have a possibility to set all as you wish. For example, to maximally block the access to the group (only by the domain, do not allow extra users), make the closed’ group, and the policy of registering of its membersonly by invitation`. In this case, only domain users (see the point above) and users invited to the group will be able to access the domain address.

For private contests you can set additional settings:

  • Allow practice — whether it is possible to solve problems after the official termination in an informal mode of upsolving.
  • Allow virtual participation — whether it is possible to participate virtually after the official termination (or whenever you want, if there is no start time).
  • Allow out of competition participation — it is reserved for out of competition participation, while only the users of the domain can be registered as out of competition (for the right users, add the symbol 'o' after the contest id, for example ``213380o | u01 | 371111 | Petr Korotkevich'').
  • Allow self-registration — whether it is possible for participant to make a self-registration (if no — register him).
  • Allow unregistered users to observe the competition — whether it is possible for the participant of the group who is not registered to a contest enter the contest and see the problems, status, standings, and other details.
  • Turn on common status — whether it is possible for participants to see the information about other participants’ submissions, or the information about their own attempts is the only available.
  • The duration of freezing and unfreeze time. Be careful during the transfer of the contest — unfreeze time must be changed independently.
  • The policy for showing tests. Here are possible options: "do not show at all", "show failed tests of own solutions", "show all tests completely".
  • The policy of showing other people's attempts. Here are possible options: "do not show at all", "show to participants who solved the problem," "show to everyone."
  • Vote: I like it
  • +609
  • Vote: I do not like it

»
7 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Awesome functionality!

Now, when I try to edit an old group, I get error 500. But I hope it's fixed soon :)

»
19 months ago, # |
  Vote: I like it 0 Vote: I do not like it

I'm trying to use Permitted subnets for the domain feature, however I've ran into some issues with that.

Whenever I specify any IP address (e.g. IP by which my PC is visible outside) and try to access the website through the domain https://<mycontest>.contest.codeforces.com I got the following error

IP address is not allowed: 194.58.31.81

And looks like it belongs to Codeforces.

Moreover if I add 194.58.31.81 to the list, then everyone with the link can access the contest.

Is it expected?

cc MikeMirzayanov