From 594289ffc7b1cee92364b2f036e059ae8682c522 Mon Sep 17 00:00:00 2001 From: Leo Lu Date: Tue, 14 Jul 2020 21:25:24 +0800 Subject: [PATCH 01/19] Fixed git ignore issue. --- judger/.gitignore | 15 +++++++++++++++ judger/judge_client | 0 judger/log/judge.log | 0 web/.gitignore | 1 + 4 files changed, 16 insertions(+) create mode 100644 judger/.gitignore mode change 100644 => 100755 judger/judge_client delete mode 100644 judger/log/judge.log diff --git a/judger/.gitignore b/judger/.gitignore new file mode 100644 index 0000000..6fe0a98 --- /dev/null +++ b/judger/.gitignore @@ -0,0 +1,15 @@ +.conf.json +log +uoj_judger/builtin/checker/* +!uoj_judger/builtin/checker/*.cpp +!uoj_judger/builtin/checker/*.h +uoj_judger/builtin/judger/* +!uoj_judger/builtin/judger/*.cpp +!uoj_judger/builtin/judger/*.h +uoj_judger/data +uoj_judger/include/uoj_work_path.h +uoj_judger/main_judger +uoj_judger/run/* +!uoj_judger/run/*.cpp +!uoj_judger/run/*.h + diff --git a/judger/judge_client b/judger/judge_client old mode 100644 new mode 100755 diff --git a/judger/log/judge.log b/judger/log/judge.log deleted file mode 100644 index e69de29..0000000 diff --git a/web/.gitignore b/web/.gitignore index 2707a46..27bcedc 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -1,2 +1,3 @@ .idea .php_cs.cache +app/.config.php From bd76d2c296a02b6b774ee85a458892fe6ff6b047 Mon Sep 17 00:00:00 2001 From: sun123t2 <55178038+suntt2019@users.noreply.github.com> Date: Sat, 1 Aug 2020 15:27:46 +0800 Subject: [PATCH 02/19] Improved .gitignore (#66) * Added gitignore * Improved gitignore --- .gitignore | 1 + judger/.gitignore | 4 ++++ web/.gitignore | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/judger/.gitignore b/judger/.gitignore index 6fe0a98..54e01a0 100644 --- a/judger/.gitignore +++ b/judger/.gitignore @@ -12,4 +12,8 @@ uoj_judger/main_judger uoj_judger/run/* !uoj_judger/run/*.cpp !uoj_judger/run/*.h +uoj_judger/work/* +uoj_judger/result/* +!uoj_judger/work/.gitkeep +!uoj_judger/result/.gitkeep diff --git a/web/.gitignore b/web/.gitignore index 27bcedc..0cba4c5 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -1,3 +1,8 @@ .idea .php_cs.cache app/.config.php +app/storage/tmp/* +app/storage/submission/* +!app/storage/tmp/.gitkeep +!app/storage/submission/.gitkeep + From 07f7782ae4ce3dcc20d30943facf3585884d9143 Mon Sep 17 00:00:00 2001 From: Leo Lu Date: Thu, 6 Aug 2020 00:24:34 +0800 Subject: [PATCH 03/19] Added pastes --- install/db/app_uoj233.sql | 17 +++++++++ web/.gitignore | 3 +- web/app/controllers/paste_post.php | 37 +++++++++++++++++++ web/app/controllers/paste_view.php | 10 ++++++ web/app/controllers/super_manage.php | 25 +++++++++++++ web/app/libs/uoj-html-lib.php | 53 ++++++++++++++++++++++++++++ web/app/libs/uoj-rand-lib.php | 4 +++ web/app/route.php | 3 ++ web/app/storage/paste/.gitkeep | 0 9 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 web/app/controllers/paste_post.php create mode 100644 web/app/controllers/paste_view.php create mode 100644 web/app/storage/paste/.gitkeep diff --git a/install/db/app_uoj233.sql b/install/db/app_uoj233.sql index db51e85..0ec3098 100644 --- a/install/db/app_uoj233.sql +++ b/install/db/app_uoj233.sql @@ -697,6 +697,23 @@ LOCK TABLES `user_system_msg` WRITE; /*!40000 ALTER TABLE `user_system_msg` DISABLE KEYS */; /*!40000 ALTER TABLE `user_system_msg` ENABLE KEYS */; UNLOCK TABLES; + +create table pastes +( + `index` varchar(20) null, + creator varchar(20) null, + content text null +); + +create unique index pastes_index_uindex + on pastes (`index`); + +alter table pastes + add constraint pastes_pk + primary key (`index`); + + + /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; diff --git a/web/.gitignore b/web/.gitignore index 0cba4c5..6bebc64 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -3,6 +3,7 @@ app/.config.php app/storage/tmp/* app/storage/submission/* +app/storage/paste/* !app/storage/tmp/.gitkeep !app/storage/submission/.gitkeep - +!app/storage/paste/.gitkeep diff --git a/web/app/controllers/paste_post.php b/web/app/controllers/paste_post.php new file mode 100644 index 0000000..52c7cb3 --- /dev/null +++ b/web/app/controllers/paste_post.php @@ -0,0 +1,37 @@ + "source code", + "name" => "paste", + "file_name" => "paste.code" + ] + ], + 'uojRandAvaiablePasteFileName', + 'handleUpload'); +$paste_form->succ_href = '/paste'; +$paste_form->runAtServer(); +echoUOJPageHeader("Paste!"); +$paste_form->printHTML(); +echoUOJPageFooter(); \ No newline at end of file diff --git a/web/app/controllers/paste_view.php b/web/app/controllers/paste_view.php new file mode 100644 index 0000000..2072cf0 --- /dev/null +++ b/web/app/controllers/paste_view.php @@ -0,0 +1,10 @@ +runAtServer(); + + $paste_deleter = new UOJForm('paste_deleter'); + $paste_deleter->addInput('paste_deleter_name', 'text', 'Paste ID', '', + function ($x, &$vdata) { + if (DB::selectCount("select count(*) from pastes where `index`='$x'")==0) { + return '不合法'; + } + $vdata['name'] = $x; + return ''; + }, + null + ); + $paste_deleter->handle = function(&$vdata) { + DB::delete("delete from pastes where `index` = '${vdata['name']}'"); + }; + $paste_deleter->runAtServer(); $judgerlist_cols = array('judger_name', 'password'); $judgerlist_config = array(); @@ -328,6 +344,10 @@ EOD; 'judger' => array( 'name' => '评测机管理', 'url' => '/super-manage/judger' + ), + 'paste' => array( + 'name' => 'Paste管理', + 'url' => '/super-manage/paste' ) ); @@ -458,6 +478,11 @@ EOD;

评测机列表

+ +
+

删除Paste

+ printHTML(); ?> +
diff --git a/web/app/libs/uoj-html-lib.php b/web/app/libs/uoj-html-lib.php index b46d987..d5db92b 100644 --- a/web/app/libs/uoj-html-lib.php +++ b/web/app/libs/uoj-html-lib.php @@ -393,6 +393,59 @@ function echoSubmissionsList($cond, $tail, $config, $user) { }, $table_config); } +function echoPasteContent($paste) { + $zip_file = new ZipArchive(); + $submission_content = json_decode($paste['content'], true); + $zip_file->open(UOJContext::storagePath().$submission_content['file_name']); + + $config = array(); + foreach ($submission_content['config'] as $config_key => $config_val) { + $config[$config_val[0]] = $config_val[1]; + } + + $file_content = $zip_file->getFromName("paste.code"); + $file_content = uojTextEncode($file_content, array('allow_CR' => true, 'html_escape' => true)); + $file_language = htmlspecialchars($config["paste_language"]); + $footer_text = UOJLocale::get('problems::source code').', '.UOJLocale::get('problems::language').': '.$file_language; + $footer_text .= ", ".UOJLocale::get("problems::submitter") . <<${paste['creator']} +HTML; + + switch ($file_language) { + case 'C++': + case 'C++11': + $sh_class = 'sh_cpp'; + break; + case 'Python2': + case 'Python3': + $sh_class = 'sh_python'; + break; + case 'Java8': + case 'Java11': + $sh_class = 'sh_java'; + break; + case 'C': + $sh_class = 'sh_c'; + break; + case 'Pascal': + $sh_class = 'sh_pascal'; + break; + default: + $sh_class = ''; + break; + } + echo '
'; + echo '
'; + echo '

Paste!

'; + echo '
'; + echo '
'; + echo '
'.$file_content."\n".'
'; + echo '
'; + echo ''; + echo '
'; + + $zip_file->close(); +} function echoSubmissionContent($submission, $requirement) { $zip_file = new ZipArchive(); diff --git a/web/app/libs/uoj-rand-lib.php b/web/app/libs/uoj-rand-lib.php index 2e221c1..49e427b 100644 --- a/web/app/libs/uoj-rand-lib.php +++ b/web/app/libs/uoj-rand-lib.php @@ -31,3 +31,7 @@ function uojRandAvaiableSubmissionFileName() { } return uojRandAvaiableFileName("/submission/$num/"); } + +function uojRandAvaiablePasteFileName() { + return uojRandAvaiableFileName('/paste/'); +} diff --git a/web/app/route.php b/web/app/route.php index 87372a7..551c6d0 100644 --- a/web/app/route.php +++ b/web/app/route.php @@ -64,6 +64,9 @@ Route::group([ Route::any('/download.php', '/download.php'); Route::any('/click-zan', '/click_zan.php'); + + Route::any('/paste', '/paste_post.php'); + Route::any('/pastes/{rand_str_id}', '/paste_view.php'); } ); diff --git a/web/app/storage/paste/.gitkeep b/web/app/storage/paste/.gitkeep new file mode 100644 index 0000000..e69de29 From f25be16d1e9539cbe71e77af95fe66ba44b6d234 Mon Sep 17 00:00:00 2001 From: Leo Lu Date: Fri, 7 Aug 2020 17:22:30 +0800 Subject: [PATCH 04/19] Added map visualizer --- web/app/.default-config.php | 5 + web/app/controllers/map_visualizer.php | 132 +++++++++++++++++++++++++ web/app/route.php | 2 + web/app/views/main-nav.php | 10 ++ web/app/views/page-header.php | 10 ++ web/js/base64.min.js | 8 ++ web/js/dracula.min.js | 1 + 7 files changed, 168 insertions(+) create mode 100644 web/app/controllers/map_visualizer.php create mode 100644 web/js/base64.min.js create mode 100644 web/js/dracula.min.js diff --git a/web/app/.default-config.php b/web/app/.default-config.php index 82c2adc..0981d9d 100644 --- a/web/app/.default-config.php +++ b/web/app/.default-config.php @@ -53,5 +53,10 @@ return [ 'switch' => [ 'web-analytics' => false, 'blog-domain-mode' => 3 + ], + 'tools' => [ + // 请仅在https下启用以下功能. + // 非https下, chrome无法进行复制. + 'map-copy-enabled' => false, ] ]; diff --git a/web/app/controllers/map_visualizer.php b/web/app/controllers/map_visualizer.php new file mode 100644 index 0000000..ee0a83b --- /dev/null +++ b/web/app/controllers/map_visualizer.php @@ -0,0 +1,132 @@ + +
+
+
+
+ + +
+
+ +
+ + + +
+
+
+
+
+ + + +
diff --git a/web/app/views/page-header.php b/web/app/views/page-header.php index 23cbcaa..3781a9c 100644 --- a/web/app/views/page-header.php +++ b/web/app/views/page-header.php @@ -204,6 +204,16 @@ + + + + + + + + + +