function message_generic($title, $message, $head = true, $foot = true, $exit = true) { if ($head) { head($title); } section_subhead($title); message_inline_blue($message); if ($foot) { foot(); } if ($exit) { exit; } }
<th>Hint</th> <th>Manage</th> </tr> </thead> <tbody> '; $hints = db_select_all('hints', array('id', 'added', 'body'), array('challenge' => $_GET['id'])); foreach ($hints as $hint) { echo ' <tr> <td>', date_time($hint['added']), '</td> <td>', htmlspecialchars($hint['body']), '</td> <td><a href="edit_hint.php?id=', htmlspecialchars(short_description($hint['id'], 100)), '" class="btn btn-xs btn-primary">Edit</a></td> </tr> '; } echo ' </tbody> </table> <a href="new_hint.php?id=', htmlspecialchars($_GET['id']), '" class="btn btn-sm btn-warning">Add a new hint</a> '; section_subhead('Delete challenge: ' . $challenge['title']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_challenge'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! This will also delete all submissions, all hints and all files associated with challenge!'); form_button_submit('Delete challenge', 'danger'); form_end(); foot();
<?php require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New hint'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_hint'); form_textarea('Body'); $opts = db_query_fetch_all(' SELECT ch.id, ch.title, ca.title AS category FROM challenges AS ch LEFT JOIN categories AS ca ON ca.id = ch.category ORDER BY ca.title, ch.title'); form_select($opts, 'Challenge', 'id', array_get($_GET, 'id', 0), 'title', 'category'); form_input_checkbox('Visible'); form_hidden('action', 'new'); form_button_submit('Create hint'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONFIG_UC_MODERATOR); head('Site management'); menu_management(); section_subhead('New news post'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_news'); form_input_text('Title'); form_textarea('Body'); echo '<script> window.onload = function(){CKEDITOR.replace("body", { filebrowserUploadUrl: "actions/upload.php" });}</script>'; form_hidden('action', 'new'); form_button_submit('Publish news item'); form_bbcode_manual(); form_end(); foot();
<?php require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); validate_id($_GET['id']); $category = db_select_one('categories', array('*'), array('id' => $_GET['id'])); head('Site management'); menu_management(); section_subhead('Edit category: ' . $category['title']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_category'); form_input_text('Title', $category['title']); form_textarea('Description', $category['description']); form_input_checkbox('Exposed', $category['exposed']); form_input_text('Available from', date_time($category['available_from'])); form_input_text('Available until', date_time($category['available_until'])); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Delete category: ' . $category['title']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_category'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! This will delete all challenges under this category, as well as all submissions, files, and hints related those challenges!'); form_button_submit('Delete category', 'danger'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); validate_id($_GET['id']); head('Site management'); menu_management(); section_subhead('Edit dynamic menu item'); $menu_item = db_select_one('dynamic_menu', array('*'), array('id' => $_GET['id'])); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_dynamic_menu_item'); form_input_text('Title', $menu_item['title']); form_input_text('Permalink', $menu_item['permalink']); dynamic_visibility_select($menu_item['visibility']); $pages = db_select_all('dynamic_pages', array('id', 'title')); array_unshift($pages, array('id' => 0, 'title' => '--- No internal link ---')); form_select($pages, 'Internal page', 'id', $menu_item['internal_page'], 'title'); user_class_select($menu_item['min_user_class']); form_input_text('URL', $menu_item['url']); form_input_text('Priority', $menu_item['priority']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Delete menu item'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_dynamic_menu_item'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); form_button_submit('Delete menu item', 'danger'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New user type'); message_inline_blue('User types are not required. You can add them if you wish to group contestants and give them separate scoreboards. If not, everyone will be in the same group.'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_user_type'); form_input_text('Title'); form_textarea('Description'); form_hidden('action', 'new'); form_button_submit('Create new user type'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New dynamic page'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_dynamic_page'); form_input_text('Title'); form_textarea('Body'); dynamic_visibility_select(); user_class_select(); form_hidden('action', 'new'); form_button_submit('Create'); form_bbcode_manual(); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); validate_id($_GET['id']); $news = db_select_one('news', array('*'), array('id' => $_GET['id'])); head('Site management'); menu_management(); section_subhead('Edit news item: ' . $news['title']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_news'); form_input_text('Title', $news['title']); form_textarea('Body', $news['body']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_bbcode_manual(); form_end(); section_subhead('Delete news item'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_news'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); form_button_submit('Delete news item', 'danger'); form_end(); foot();
require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); validate_id($_GET['id']); head('Site management'); menu_management(); section_subhead('Edit hint'); $hint = db_select_one('hints', array('*'), array('id' => $_GET['id'])); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_hint'); form_textarea('Body', $hint['body']); $opts = db_query_fetch_all('SELECT ch.id, ch.title, ca.title AS category FROM challenges AS ch LEFT JOIN categories AS ca ON ca.id = ch.category ORDER BY ca.title, ch.title'); form_select($opts, 'Challenge', 'id', $hint['challenge'], 'title', 'category'); form_input_checkbox('Visible', $hint['visible']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Delete hint'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_hint'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); form_button_submit('Delete hint', 'danger'); form_end(); foot();
<?php require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New email signup restriction rule'); message_inline_blue('Add rules to restrict which emails can sign up. Rules in list below are applied top-down. Rules further down on the list override rules above. List is ordered by "priority". A higher "priority" value puts a rule further down the list. Rules are PCRE regex. Example: ^.+@.+$'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_restrict_email'); form_input_text('Rule'); form_input_text('Priority'); form_input_checkbox('Whitelist'); form_input_checkbox('Enabled'); form_hidden('action', 'new'); form_button_submit('Create new rule'); form_end(); foot();
head('Site management'); menu_management(); section_subhead('Edit user: '******'team_name']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_text('Email', $user['email']); form_input_text('Team name', $user['team_name']); $opts = db_query_fetch_all('SELECT * FROM countries ORDER BY country_name ASC'); form_select($opts, 'Country', 'id', $user['country_id'], 'country_name'); form_input_checkbox('Enabled', $user['enabled']); form_input_checkbox('Competing', $user['competing']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Reset password'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Reset confirmation'); form_hidden('action', 'reset_password'); form_hidden('id', $_GET['id']); form_button_submit('Reset password', 'warning'); form_end(); section_subhead('Delete user'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! This will delete all submissions made by this user!'); form_button_submit('Delete user', 'danger'); section_subhead('IP address usage'); user_ip_log($_GET['id']); foot();
function print_user_ip_log($user_id, $limit = 0) { validate_id($user_id); section_subhead('IP address usage', ($limit ? 'Limited to ' . $limit . ' results ' : '') . button_link('Show all for user', 'list_ip_log?user_id=' . htmlspecialchars($user_id)), false); echo ' <table id="files" class="table table-striped table-hover"> <thead> <tr> <th>IP</th> <th>Hostname</th> <th>First used</th> <th>Last used</th> <th>Times used</th> </tr> </thead> <tbody> '; $entries = db_query_fetch_all(' SELECT INET_NTOA(ip) AS ip, added, last_used, times_used FROM ip_log WHERE user_id = :user_id ORDER BY last_used DESC ' . ($limit ? 'LIMIT ' . $limit : ''), array('user_id' => $user_id)); foreach ($entries as $entry) { echo ' <tr> <td><a href="', CONFIG_SITE_ADMIN_URL, 'list_ip_log.php?ip=', htmlspecialchars($entry['ip']), '">', htmlspecialchars($entry['ip']), '</a></td> <td>', CONFIG_GET_IP_HOST_BY_ADDRESS ? gethostbyaddr($entry['ip']) : '<i>Lookup disabled in config</i>', '</td> <td>', date_time($entry['added']), '</td> <td>', date_time($entry['last_used']), '</td> <td>', number_format($entry['times_used']), '</td> </tr> '; } echo ' </tbody> </table> '; }
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); if (array_get($_GET, 'bcc') == 'all') { $users = db_select_all('users', array('email')); $bcc = ''; foreach ($users as $user) { $bcc .= $user['email'] . ",\n"; } $bcc = trim($bcc); } section_subhead('New email'); message_inline_blue('Separate receiver emails with a comma and optional whitespace. You can use BBCode. If you do, you must send as HTML email.'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_email'); if (isset($bcc)) { form_input_text('To', CONFIG_EMAIL_FROM_EMAIL); form_input_text('CC'); form_textarea('BCC', $bcc); } else { form_input_text('To', isset($_GET['to']) ? $_GET['to'] : ''); form_input_text('CC'); form_input_text('BCC'); } form_input_text('Subject'); form_textarea('Body'); form_input_checkbox('HTML email'); form_hidden('action', 'new'); message_inline_yellow('Important email? Remember to Ctrl+C before attempting to send!');
validate_id($_GET['id']); $user = db_select_one('users', array('team_name', 'email', 'enabled', 'competing', 'country_id'), array('id' => $_GET['id'])); head('Site management'); menu_management(); section_subhead('Edit user: '******'team_name']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_text('Email', $user['email']); form_input_text('Team name', $user['team_name']); $opts = db_query_fetch_all('SELECT * FROM countries ORDER BY country_name ASC'); form_select($opts, 'Country', 'id', $user['country_id'], 'country_name'); form_input_checkbox('Enabled', $user['enabled']); form_input_checkbox('Competing', $user['competing']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Reset password'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Reset confirmation'); form_hidden('action', 'reset_password'); form_hidden('id', $_GET['id']); form_button_submit('Reset password', 'warning'); form_end(); section_subhead('Delete user'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! This will delete all submissions made by this user!'); form_button_submit('Delete user', 'danger'); foot();
<?php require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); validate_id($_GET['id']); $page = db_select_one('dynamic_pages', array('*'), array('id' => $_GET['id'])); head('Site management'); menu_management(); section_subhead('Edit dynamic page: ' . $page['title']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_dynamic_page'); form_input_text('Title', $page['title']); form_textarea('Body', $page['body']); dynamic_visibility_select($page['visibility']); user_class_select($page['min_user_class']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_bbcode_manual(); form_end(); section_subhead('Delete'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_dynamic_page'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); form_button_submit('Delete', 'danger'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New dynamic menu item'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_dynamic_menu_item'); form_input_text('Title'); form_input_text('Permalink'); dynamic_visibility_select(); $pages = db_select_all('dynamic_pages', array('id', 'title')); array_unshift($pages, array('id' => 0, 'title' => '--- No internal link ---')); form_select($pages, 'Internal page', 'id', null, 'title'); user_class_select(); form_input_text('URL'); form_input_text('Priority'); form_hidden('action', 'new'); form_button_submit('Create'); form_end(); foot();
function tx_detail($tx_id) { $raw_tx = getrawtransaction($tx_id); section_head("Transaction: " . $raw_tx["txid"]); section_subhead("Detailed Description"); detail_display("TX Version", $raw_tx["version"]); detail_display("TX Time", date("F j, Y, H:i:s", $raw_tx["time"])); detail_display("Lock Time", $raw_tx["locktime"]); detail_display("Confirmations", $raw_tx["confirmations"]); detail_display("Block Hash", blockhash_link($raw_tx["blockhash"])); // Florin Coin Feature if (isset($raw_tx["tx-comment"]) && $raw_tx["tx-comment"] != "") { detail_display("TX Message", htmlspecialchars($raw_tx["tx-comment"])); } detail_display("HEX Data", $raw_tx["hex"], 50); section_head("Transaction Inputs"); foreach ($raw_tx["vin"] as $key => $txin) { section_subhead("Input Transaction " . $key); if (isset($txin["coinbase"])) { detail_display("Coinbase", $txin["coinbase"]); detail_display("Sequence", $txin["sequence"]); } else { detail_display("TX ID", tx_link($txin["txid"])); detail_display("TX Output", $txin["vout"]); detail_display("TX Sequence", $txin["sequence"]); detail_display("Script Sig (ASM)", $txin["scriptSig"]["asm"], 50); detail_display("Script Sig (HEX)", $txin["scriptSig"]["hex"], 50); } } section_head("Transaction Outputs"); foreach ($raw_tx["vout"] as $key => $txout) { section_subhead("Output Transaction " . $key); detail_display("TX Value", $txout["value"]); detail_display("TX Type", $txout["scriptPubKey"]["type"]); detail_display("Required Sigs", $txout["scriptPubKey"]["reqSigs"]); detail_display("Script Pub Key (ASM)", $txout["scriptPubKey"]["asm"], 50); detail_display("Script Pub Key (HEX)", $txout["scriptPubKey"]["hex"], 50); if (isset($txout["scriptPubKey"]["addresses"])) { foreach ($txout["scriptPubKey"]["addresses"] as $key => $address) { } detail_display("Address " . $key, $address); } } section_head("Raw Transaction Detail"); echo "\t<textarea name=\"rawtrans\" rows=\"25\" cols=\"80\" style=\"text-align:left;\">\n"; print_r($raw_tx); echo "\t\n</textarea><br><br>\n"; }
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONFIG_UC_MODERATOR); validate_id($_GET['id']); head('Site management'); menu_management(); section_subhead('Edit user type'); $user_type = db_select_one('user_types', array('*'), array('id' => $_GET['id'])); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user_type'); form_input_text('Title', $user_type['title']); form_textarea('Description', $user_type['description']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Delete user type'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user_type'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! Any users of this type will be without a type. You must manually give them a type in the DB. If no types will exist after this action, you must set their type to 0.'); form_button_submit('Delete user type', 'danger'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Exceptions'); menu_management(); section_subhead('Exceptions', button_link('Clear exceptions', 'edit_exceptions'), false); echo ' <table id="hints" class="table table-striped table-hover"> <thead> <tr> <th>Message</th> <th>Added</th> <th>User</th> <th>IP</th> </tr> </thead> <tbody> '; $from = get_pager_from($_GET); $num_exceptions = db_count_num('exceptions'); $results_per_page = 30; pager(CONFIG_SITE_ADMIN_URL . 'list_exceptions', $num_exceptions, $results_per_page, $from); $exceptions = db_query_fetch_all(' SELECT e.id, e.message, e.added, e.added_by, e.trace, INET_NTOA(e.user_ip) AS user_ip,
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('Search'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/search'); form_input_text('Search for'); $opts[] = array('id' => 'users', 'name' => 'Users'); $opts[] = array('id' => 'ip_log', 'name' => 'IP log'); form_select($opts, 'Search in', 'id', 'users', 'name'); form_button_submit('Search'); form_xsrf_token(); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONFIG_UC_MODERATOR); enforce_instance_auth(); head('Site management'); menu_management(); section_subhead('Test signup rules'); message_inline_blue('Enter an email addess to test.'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/test_restrict_email'); form_input_text('Email'); form_hidden('action', 'test'); form_button_submit('Test'); form_end(); foot();
<?php require '../../include/ctf.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); check_server_configuration(); $categories = db_query_fetch_all('SELECT * FROM categories ORDER BY title'); if (empty($categories)) { message_generic('Welcome', 'Your CTF is looking a bit empty! Start by adding a category using the menu above.'); } section_subhead('CTF Overview'); foreach ($categories as $category) { echo ' <h4> ', htmlspecialchars($category['title']), ' <a href="edit_category.php?id=', htmlspecialchars($category['id']), '" class="btn btn-xs btn-primary">Edit category</a> <a href="new_challenge.php?category=', htmlspecialchars($category['id']), '" class="btn btn-xs btn-primary">Add challenge</a> </h4> '; $challenges = db_select_all('challenges', array('id', 'title', 'description', 'exposed', 'available_from', 'available_until', 'points'), array('category' => $category['id']), 'points ASC'); if (empty($challenges)) { message_inline_blue('This category is empty! Use the link above to add a challenge.'); } else { echo ' <table class="table table-striped table-hover"> <thead> <tr> <th>Title</th> <th>Description</th> <th class="center">Points</th>
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New challenge'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_challenge'); form_input_text('Title'); form_textarea('Description'); form_textarea('Flag'); form_input_checkbox('Automark', true); form_input_checkbox('Case insensitive'); form_input_text('Points'); form_input_text('Num attempts allowed'); form_input_text('Min seconds between submissions'); $opts = db_query_fetch_all('SELECT * FROM categories ORDER BY title'); form_select($opts, 'Category', 'id', array_get($_GET, 'category'), 'title'); form_input_checkbox('Exposed', true); form_input_text('Available from', date_time()); form_input_text('Available until', date_time()); message_inline_blue('Create and edit challenge to add files.'); form_hidden('action', 'new'); form_button_submit('Create challenge'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONFIG_UC_MODERATOR); validate_id($_GET['id']); $rule = db_select_one('restrict_email', array('rule', 'enabled', 'white', 'priority'), array('id' => $_GET['id'])); head('Site management'); menu_management(); section_subhead('Edit signup rule'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_restrict_email'); form_input_text('Rule', $rule['rule']); form_input_text('Priority', $rule['priority']); form_input_checkbox('Whitelist', $rule['white']); form_input_checkbox('Enabled', $rule['enabled']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Delete rule'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_restrict_email'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); form_button_submit('Delete rule', 'danger'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); section_subhead('New category'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/new_category'); form_input_text('Title'); form_textarea('Description'); form_input_checkbox('Exposed', true); form_input_text('Available from', date_time()); form_input_text('Available until', date_time()); form_hidden('action', 'new'); form_button_submit('Create category'); form_end(); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONST_USER_CLASS_MODERATOR); head('Site management'); menu_management(); check_server_configuration(); $categories = db_query_fetch_all('SELECT * FROM categories ORDER BY title'); if (empty($categories)) { message_generic('Welcome', 'Your CTF is looking a bit empty! Start by adding a category using the menu above.'); } section_subhead('CTF Overview', '<a href="' . CONFIG_SITE_ADMIN_URL . 'visualise">Visualise challenge availability</a>', false); foreach ($categories as $category) { echo ' <h4> ', htmlspecialchars($category['title']), ' <a href="edit_category.php?id=', htmlspecialchars($category['id']), '" class="btn btn-xs btn-primary">Edit category</a> <a href="new_challenge.php?category=', htmlspecialchars($category['id']), '" class="btn btn-xs btn-primary">Add challenge</a> </h4> '; $challenges = db_select_all('challenges', array('id', 'title', 'description', 'exposed', 'available_from', 'available_until', 'points'), array('category' => $category['id']), 'points ASC'); if (empty($challenges)) { message_inline_blue('This category is empty! Use the link above to add a challenge.'); } else { echo ' <table class="table table-striped table-hover"> <thead> <tr> <th>Title</th> <th>Description</th> <th class="center">Points</th>
section_subhead('Edit user: '******'team_name']); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_text('Email', $user['email']); form_input_text('Team name', $user['team_name']); $opts = db_query_fetch_all('SELECT * FROM countries ORDER BY country_name ASC'); form_select($opts, 'Country', 'id', $user['country_id'], 'country_name'); form_input_checkbox('Enabled', $user['enabled']); form_input_checkbox('Competing', $user['competing']); form_hidden('action', 'edit'); form_hidden('id', $_GET['id']); form_button_submit('Save changes'); form_end(); section_subhead('Reset password'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Reset confirmation'); form_hidden('action', 'reset_password'); form_hidden('id', $_GET['id']); form_button_submit('Reset password', 'warning'); form_end(); section_subhead('Delete user'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_user'); form_input_checkbox('Delete confirmation'); form_hidden('action', 'delete'); form_hidden('id', $_GET['id']); message_inline_red('Warning! This will delete all submissions made by this user!'); form_button_submit('Delete user', 'danger'); section_subhead('IP address usage'); user_ip_log($_GET['id']); section_subhead('Exception log'); user_exception_log($_GET['id'], 100); foot();
<?php require '../../include/mellivora.inc.php'; enforce_authentication(CONFIG_UC_MODERATOR); $rule = db_select_one('instances', array('*'), array('id' => $_SESSION['IID'])); head('Site management'); menu_management(); section_subhead('Edit Instance Settings'); form_start(CONFIG_SITE_ADMIN_RELPATH . 'actions/edit_settings'); echo '<div class="form-group"> <label class="col-sm-2 control-label" for="rule">Registration Token</label> <div class="col-sm-10"> <input id="rule" readonly name="rule" class="form-control" placeholder="Registration Token" value="', $rule['registrationToken'] != 0 ? $rule['registrationToken'] : 'Registration Tokens are not enabled.', '" type="text"> </div> </div>'; form_hidden('action', 'edit'); echo $rule['registrationToken'] == 0 ? form_button_submit('Enable Registration Token') : form_button_submit('Disable Registration Token'); form_end(); foot();
<html> <?php require '../include/mellivora.inc.php'; login_session_refresh(); send_cache_headers('home', CONFIG_CACHE_TIME_HOME); head('Home'); if (cache_start('home', CONFIG_CACHE_TIME_HOME)) { require CONFIG_PATH_THIRDPARTY . 'nbbc/nbbc.php'; $bbc = new BBCode(); $bbc->SetEnableSmileys(false); section_subhead('PicoCTF Integrated Challenge'); cache_end('home'); } ?> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <meta name="description" content="CTF Platform"> <link href="css/game.css" rel="stylesheet" media="screen"> <link href="lib/dark-hive/jquery-ui-1.10.2.custom.css" rel="stylesheet" media="screen"> </head> <body> <div class="container-narrow"> <div class="container-narrow"> <div class="row-fluid"> <div class="span12"> <div id="canvaswrapper"> <div id="problemdisplay"> <div id="problemhintdialog" title="Hint" display="none"></div> <div id="problemcontent"></div>