0
|
1 #!/usr/bin/php
|
|
2 <?
|
|
3 require "mconfig.inc.php";
|
|
4 require "msite.inc.php";
|
|
5
|
|
6 $keyChars = "abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";
|
|
7 $maxItems = 4;
|
|
8 $maxRows = 25;
|
|
9
|
|
10 function garg($index)
|
|
11 {
|
|
12 global $argc, $argv;
|
|
13 if ($index < $argc)
|
|
14 return strtolower($argv[$index]);
|
|
15 else
|
|
16 return FALSE;
|
|
17 }
|
|
18
|
|
19 function gSQLError($sql)
|
|
20 {
|
|
21 global $db;
|
|
22 echo "Error executing SQL query: ".implode("; ", $db->errorInfo())." in statement \"".$sql."\"\n";
|
|
23 exit;
|
|
24 }
|
|
25
|
|
26 if ($argc < 2)
|
|
27 {
|
|
28 echo "Usage: ".$argv[0]." <mode> [args]\n".
|
|
29 "Where mode is one of following:\n".
|
|
30 "\n".
|
|
31 " generate <#> Generate # MORE vote keys. If previously\n".
|
|
32 " generated keys exist, # keys will be added.\n".
|
|
33 "\n".
|
|
34 " print [all] Print list of list of UNactive keys\n".
|
|
35 " (unless 'all' option is specified)\n".
|
|
36 "\n";
|
|
37 exit;
|
|
38 }
|
|
39
|
|
40 if (!stConnectSQLDB())
|
|
41 die("Could not connect to SQL database.\n");
|
|
42
|
|
43 switch (substr(garg(1), 0, 2))
|
|
44 {
|
|
45 case "ge":
|
|
46 // Check arguments for sanity
|
|
47 if (($num = garg(2)) === FALSE)
|
|
48 {
|
|
49 echo "No number of keys specified.\n";
|
|
50 exit;
|
|
51 }
|
|
52
|
|
53 if ($num < 1 || $num > 1000)
|
|
54 {
|
|
55 echo "Invalid number of keys.\n";
|
|
56 exit;
|
|
57 }
|
|
58
|
|
59 echo "Generating keys ..";
|
|
60 for ($i = 0; $i < $num; )
|
|
61 {
|
|
62 echo ".";
|
|
63
|
|
64 // Generate one keycode
|
|
65 $key = "";
|
|
66 for ($n = 0; $n < stGetSetting("votekeylen", 8); $n++)
|
|
67 $key .= $keyChars[rand() % strlen($keyChars)];
|
|
68
|
|
69 // Check if it already exists, to avoid duplicates
|
|
70 $sql = stPrepareSQL("SELECT * FROM voters WHERE key=%s", $key);
|
|
71 if (($res = @$db->query($sql)) !== FALSE)
|
|
72 {
|
|
73 if ($res->fetchColumn() === FALSE)
|
|
74 {
|
|
75 // Nope, add into database
|
|
76 $sql = stPrepareSQL(
|
|
77 "INSERT INTO voters (key,name,enabled) VALUES (%s,'',0)",
|
|
78 $key);
|
|
79
|
|
80 if (($res = $db->query($sql)) === FALSE)
|
|
81 gSQLError($sql);
|
|
82
|
|
83 $i++;
|
|
84 }
|
|
85 }
|
|
86 else
|
|
87 {
|
|
88 gSQLError($sql);
|
|
89 }
|
|
90 }
|
|
91 echo "\nGenerated ".$i." new keys.\n";
|
|
92 break;
|
|
93
|
|
94 case "pr":
|
|
95 // Print keys
|
|
96 $all = garg(2) == "all";
|
|
97 $sql = "SELECT * FROM voters ".($all ? "" : "WHERE enabled=0 ")."ORDER BY id ASC";
|
|
98 if (($res = @$db->query($sql)) !== FALSE)
|
|
99 {
|
|
100 $rows = 0;
|
|
101 $nitem = 0;
|
|
102 $total = 0;
|
|
103
|
|
104 foreach ($res as $item)
|
|
105 {
|
|
106 $total++;
|
|
107 printf("%s%04d - %8s",
|
|
108 $item["enabled"] ? "*" : " ",
|
|
109 $item["id"], $item["key"]);
|
|
110
|
|
111 if (++$nitem >= $maxItems)
|
|
112 {
|
|
113 $nitem = 0;
|
|
114 echo "\n";
|
|
115
|
|
116 if (++$rows % $maxRows == 0)
|
|
117 echo "\f\n";
|
|
118 }
|
|
119 else
|
|
120 echo " | ";
|
|
121 }
|
|
122
|
|
123 if ($nitem > 0)
|
|
124 echo "\n";
|
|
125
|
|
126 echo "Total of ".$total." ".($all ? "keys (all printed)" : "unactive keys")."\n";
|
|
127 }
|
|
128 else
|
|
129 {
|
|
130 gSQLError($sql);
|
|
131 }
|
|
132 break;
|
|
133
|
|
134 default:
|
|
135 echo "Unknown operating mode '".garg(1)."'.\n";
|
|
136 break;
|
|
137 }
|
|
138
|
|
139 ?> |