2013-12-18 15:42:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Setting up an election:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								0. vote/include/election-sql.php expects a secret config file that exists
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   only on the server and is included as PHP code.  It's hard coded currently
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   to: /home/admin/secret/anonvoting currently.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 17:09:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   The file should look something like this:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<?php
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $mysql_host = "localhost";
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $mysql_user = "someuser";
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $mysql_password = "somepassword";
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $mysql_db = "somedb";
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								       $committee_name = "The Vote Masters";
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       $committee_email = "elections@example.org";
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 17:09:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								?>
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 15:42:29 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1. When I deploy, I create an account for the election, as the mysql root user:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mysql -u root -p
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Password: <MYSQLROOTPW>
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Then Run these commands at the mysql> prompt:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     CREATE USER 'someusername' identified by 'somepassword';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     CREATE DATABASE somedbname;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Then, exit, and at the main command line run:
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 15:43:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   msyql -u root -p -D somedbname < ..../vote/include/schema.sql
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Then run this again:
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 17:09:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   mysql -u root -p
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Password: <MYSQLROOTPW>
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   and at the mysql command line, run these grant commands:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GRANT SELECT on somedb.elections TO someuser@localhost;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GRANT SELECT on somedb.election_choices TO someuser@localhost;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								2. Create an election, with something like this:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   mysql -u root -D somedb -p
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SET NAMES 'utf8';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      INSERT t INTO elections (type, name, voting_start, voting_end, choices_nb,   question) VALUES ("elections", "2011 Spring Election", "2011-05-29 00:00:00", "2011-06-12 23:59:59", "7", "Which candidates would you like to see Elected?");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set @el_id = @@IDENTITY;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								INSERT INTO election_choices (election_id, choice)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    VALUES
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'Candidate 1'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'Candidate 2'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'Candidate 3'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'Candidate 4');
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:53:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								INSERT INTO election_voters (election_id, email_address)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    VALUES
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'voter1@example.org'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'voter2@example.org'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'voter3@example.com'),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (@el_id, 'voter4@example.net');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    INSERT INTO election_tmp_tokens (election_id, election_voter_id, tmp_token)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SELECT @el_id, id, SUBSTRING(MD5(RAND()) FROM 1 FOR 24) AS tmp_token
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FROM election_voters where election_id = @el_id;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     select @el_id;
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:53:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								That number you see at the end is this election's id.  The URL you'll give out
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:09:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								is thus something like:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-18 18:53:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  http://example.org/vote?election_id=THAT_NUMBER