diff options
author | Michael Tänzer <neo@nhng.de> | 2010-05-11 19:28:36 +0200 |
---|---|---|
committer | Michael Tänzer <neo@nhng.de> | 2010-05-11 19:28:36 +0200 |
commit | 9b603df9b0f7caac80a19f4331f63773c0e3e0a3 (patch) | |
tree | 26cd8fdb7ac9ef6e42ce5acbbcf1d360dbcf1bdf /dbadm | |
parent | 727e4ff282623ce71df6c3700debf75029e5eb41 (diff) | |
download | cacert-mgr-9b603df9b0f7caac80a19f4331f63773c0e3e0a3.tar.gz cacert-mgr-9b603df9b0f7caac80a19f4331f63773c0e3e0a3.tar.xz cacert-mgr-9b603df9b0f7caac80a19f4331f63773c0e3e0a3.zip |
Initial version of the create-assurers script
Signed-off-by: Michael Tänzer <neo@nhng.de>
Diffstat (limited to 'dbadm')
-rwxr-xr-x | dbadm/create-assurers.php | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/dbadm/create-assurers.php b/dbadm/create-assurers.php new file mode 100755 index 0000000..194ea8b --- /dev/null +++ b/dbadm/create-assurers.php @@ -0,0 +1,182 @@ +#!/usr/bin/php +<?php +/** + * Script to create more dummy assurer accounts (for use on the test system) + * which can be used by the test manager to create automated assurances + * + * @author Michael Tänzer + */ + +class CreateAssurers { + protected $db; + + // define constants for the positions in $argv + const ARGV_SCRIPT = 0; + const ARGV_DB_HOST = 1; + const ARGV_DB_USER = 2; + const ARGV_DB_PASSWD = 3; + const ARGV_DB_NAME = 4; + const ARGV_QUANTITY = 5; + + // required length of $argv + const ARGV_LENGTH = 6; + + + function __construct(mysqli $db){ + $this->db = $db; + } + + + public static function echoUsage($script_name){ + print 'Usage: ' . $script_name; ?> <db_host> <db_user> <db_passwd> + <db_name> <quantity> + +Script to create more dummy assurer accounts (for use on the test system) +which can be used by the test manager to create automated assurances + +<quantity> specifies how many new dummy accounts should be created + +<?php + } + + + public static function main(){ + $argc = $_SERVER['argc']; + $argv = $_SERVER['argv']; + + if ($argc != self::ARGV_LENGTH){ + self::echoUsage($argv[self::ARGV_SCRIPT]); + fwrite(STDERR, "Error: Invalid number of parameters\n"); + exit(1); + } + + $quantity = (int)($argv[self::ARGV_QUANTITY]); + if (!is_numeric($argv[self::ARGV_QUANTITY]) || $quantity < 0){ + self::echoUsage($argv[self::ARGV_SCRIPT]); + fwrite(STDERR, "Error: Last parameter has to be a positive integer\n"); + exit(2); + } + + // Try to connect to the database + $db = new mysqli($argv[self::ARGV_DB_HOST], $argv[self::ARGV_DB_USER], + $argv[self::ARGV_DB_PASSWD], $argv[self::ARGV_DB_NAME]); + if (mysqli_connect_error()){ + fwrite(STDERR, "Error: Could not connect to the data base\n". + "(".mysqli_connect_errno()."): ".mysqli_connect_error()); + exit(3); + } + + + $me = new self($db); + $status = $me->createAssurers($quantity); + + $db->close(); + exit($status); + } + + + public function createAssurers($quantity){ + // get last assurer + $result = $this->db->query('select `mname` from `users` where `id`= + (select max(`id`) from `users` where `email` like + \'john.doe-___@example.com\')'); + $row = $result->fetch_assoc(); + if ($row === NULL){ + $last_assurer = 0; + printf("1\n"); + } else { + $last_assurer = (int)($row['mname']); + printf("2: \$last_assurer: %d\n", $last_assurer); + } + + + // prepare the statements + $insert_user = $this->db->prepare('insert into `users` set + `email` = ? , + `password` = \'invalid\' , + `fname` = ? , + `mname` = ? , + `lname` = \'Doe\' , + `suffix` = \'\' , + `dob` = ? , + `Q1` = SHA1(rand()) , + `Q2` = SHA1(rand()) , + `Q3` = SHA1(rand()) , + `Q4` = SHA1(rand()) , + `Q5` = SHA1(rand()) , + `A1` = SHA1(rand()) , + `A2` = SHA1(rand()) , + `A3` = SHA1(rand()) , + `A4` = SHA1(rand()) , + `A5` = SHA1(rand()) , + `created` = now() , + `uniqueID` = SHA1(rand()) , + `verified` = 1 , + `assurer` = 1 '); + $insert_user->bind_param('ssss', $email, $fname, $mname, $dob); + + $insert_email = $this->db->prepare('insert into `email` set + `email` = ? , + `hash` = \'\' , + `created` = now() , + `modified` = now() , + `memid` = ? '); + $insert_email->bind_param('si', $email, $memid); + + $insert_alerts = $this->db->prepare('insert into `alerts` set + `memid` = ? , + `general` = 0 , + `country` = 0 , + `regional` = 0 , + `radius` = 0 '); + $insert_alerts->bind_param('i', $memid); + + $insert_points = $this->db->prepare('insert into `notary` set + `from` = ? , + `to` = ? , + `points` = 150 , + `awarded` = 150 , + `location` = \'Init Points\' , + `date` = curdate() , + `method` = \'Administrative Increase\' , + `when` = now() '); + $insert_points->bind_param('ii', $memid, $memid); + + $insert_cats = $this->db->prepare('insert into `cats_passed` set + `user_id` = ? , + `pass_date` = now() , + `variant_id` = + (select `id` from `cats_variant` where `type_id` = 1) '); + $insert_cats->bind_param('i', $memid); + + + // do the actual work + for ($i = $last_assurer + 1; $i <= $last_assurer + $quantity; $i++){ + $email = sprintf('john.doe-%03u@example.com', $i); + $fname = sprintf('John %u', $i); + $mname = sprintf('%u', $i); + $dob = sprintf('19%02u-01-%02u', $i % 90, (int)(($i/90) + 1) ); + + $insert_user->execute(); + $memid = $insert_user->insert_id; + if ($memid == 0){ + fwrite(STDERR, "Error: didn't get a valid ID for the user\n"); + return 10; + } + + $insert_email->execute(); + $insert_alerts->execute(); + $insert_points->execute(); + $insert_cats->execute(); + + printf('Assurer number %u %s Doe <%s>'."\n". + 'born on %s with the ID %d has been added'."\n", $i, + $fname, $email, $dob, $memid); + } + + return 0; + } +} + + +CreateAssurers::main();
\ No newline at end of file |