Project import generated by Copybara.

GitOrigin-RevId: 63746295f1a5ab5a619056791995793d65529e62
diff --git a/src/cron/cleansigninattempts.php b/src/cron/cleansigninattempts.php
new file mode 100644
index 0000000..946af49
--- /dev/null
+++ b/src/cron/cleansigninattempts.php
@@ -0,0 +1,17 @@
+<?php
+require_once(__DIR__."/../core.php");
+
+if (php_sapi_name() != "cli") {
+  security::notFound();
+  exit();
+}
+
+echo "=======================\n";
+echo "cleansigninattempts.php\n";
+echo "=======================\n\n";
+
+if (security::cleanSignInAttempts()) {
+  echo "[info] The action was performed successfully.\n";
+} else {
+  echo "[error] An error occurred.\n";
+}
diff --git a/src/cron/generateregistry.php b/src/cron/generateregistry.php
new file mode 100644
index 0000000..b97d13b
--- /dev/null
+++ b/src/cron/generateregistry.php
@@ -0,0 +1,23 @@
+<?php
+require_once(__DIR__."/../core.php");
+
+if (php_sapi_name() != "cli") {
+  security::notFound();
+  exit();
+}
+
+echo "====================\n";
+echo "generateregistry.php\n";
+echo "====================\n\n";
+
+if (!isset($argc)) {
+  echo "[error] An unexpected error occurred (\$argc is not set).\n";
+  exit();
+}
+
+$time = ($argc > 1 ? (int)$argv[1] : time());
+
+$logId = -1;
+registry::generateNow($time, $logId, false);
+
+echo "[info] Log ID: ".$logId."\n";
diff --git a/src/cron/pendingvalidationsreminder.php b/src/cron/pendingvalidationsreminder.php
new file mode 100644
index 0000000..aeec7cb
--- /dev/null
+++ b/src/cron/pendingvalidationsreminder.php
@@ -0,0 +1,15 @@
+<?php
+require_once(__DIR__."/../core.php");
+
+if (php_sapi_name() != "cli") {
+  security::notFound();
+  exit();
+}
+
+echo "==============================\n";
+echo "pendingvalidationsreminder.php\n";
+echo "==============================\n\n";
+
+validations::sendPendingValidationsReminder();
+
+//echo "[info] Log ID: ".$logId."\n";