summaryrefslogtreecommitdiffstats
path: root/web/README
blob: 9bd3ecb9e638d0abdd3743fe0e20cfb998b58f32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Setup on Arch Linux:
====================
1) Install Apache, MySQL, PHP, and git
  # pacman -Sy apache mysql php git

2) Set a local 'hostname' of 'aur'
 - Edit /etc/hosts and append 'aur' to loopback address
   127.0.0.1    localhost aur

3) Configure Apache

 - Edit /etc/httpd/conf/httpd.conf and enable PHP support
   by adding the following lines.

   LoadModule php5_module modules/libphp5.so
   Include conf/extra/php5_module.conf

 - Also append the following snippet to enable the aur
   Virtual Host (Replace MYUSER with your username).

   <VirtualHost aur:80>
   Servername    aur
   DocumentRoot    /home/MYUSER/aur/web/html
   ErrorLog    /var/log/httpd/aur-error.log
   CustomLog   /var/log/httpd/aur-access.log combined
     <Directory /home/MYUSER/aur/web/html>
       Options Indexes FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
     </Directory>
   </VirtualHost>

4) Clone the AUR project (using the MYUSER from above)
   $ cd
   $ git clone git://projects.archlinux.org/aur.git

5) Configure PHP
   Make sure you have mysql and json enabled in PHP.

 - Edit php.ini and uncomment/add these lines:
   extension=mysql.so
   extension=json.so

   If those php extensions are separate packages on your system, install
   them.

   AUR requires PEAR and the Archive_Tar module.
   Installing PEAR will vary depending on the system and may already
   be included with PHP. You can also find it in the PHP source
   distribution.

   PHP sources: http://www.php.net/downloads.php
   Archive_Tar PEAR module: http://pear.php.net/package/Archive_Tar

 - Install the Archive_Tar PEAR package:
   # pear install Archive_Tar

 - Put PEAR in your php include_path in php.ini:

   include_path = ".:/usr/share/pear"

   PEAR's path may vary depending on your set up.

 - AUR does not work properly with PHP's short open tag enabled.
   Be sure you have this in php.ini:
   short_open_tag = Off

6) Configure MySQL
 - Start the MySQL service. Example:
   # /etc/rc.d/mysqld start

 - Connect to the mysql client
   # mysql -uroot

 - Issue the following commands to the mysql client
   mysql> CREATE DATABASE AUR;
   mysql> GRANT ALL PRIVILEGES ON AUR.* to aur@localhost
        > identified by 'aur';
   mysql> FLUSH PRIVILEGES;
   mysql> quit

 - Load the schema file
   # mysql -uaur -p AUR < ~/aur/support/schema/aur-schema.sql
   (give password 'aur' at the prompt)

 - Optionally load some test data for development purposes.
   # pacman -S words mysql-python
   # cd ~/aur/support/schema/
   # python gendummydata.py dummy-data.sql
   # bzip2 dummy-data.sql
   # bzcat dummy-data.sql.bz2 | mysql -uaur -p AUR
   (give password 'aur' at the prompt)

   If your test data consists of real people and real email addresses consider
   inserting bogus addressess to avoid sending unwanted spam from testing. You
   can insert garbage addresses with:
   mysql> UPDATE Users SET Email = RAND() * RAND();

7) Copy the config.inc.proto file to config.inc. Modify as needed.
   # cd ~/aur/web/lib/
   # cp config.inc.proto config.inc

8) Point your browser to http://aur


Web Interface:
==============

Directory Layout:
-----------------
./html        - DocumentRoot for AUR, where the PHP scripts live.
./html/css    - CSS stylesheets
./html/images - Any AUR images live here.
./lib         - Supporting PHP include files.  Access denied to Apache.
./template    - Where most of the html markup resides and minimal
                amount of PHP scripting.

		There is also a template to model the site's top pages
		in template.phps


Scripts:
--------
- lib/aur.inc
  This is where we can stick functions that can be shared
  between the various scripts.  Also a good place to put the
  MySQL authentication variables since it should live outside
  the DocumentRoot.

- html/login.php (probably index.php)
  PHP script to handle logging users into the AUR web site.  It
  authenticates using the email address and a password against
  the Users table.  Once authenticated, a session id is generated
  and stored in the Sessions table and sent as a cookie to the
  user's browser.

- html/logout.php
  PHP script to logout.  It clears the session id from the
  Sessions table and unsets the cookie.

- html/account.php
  PHP script to handle registering for a new account.  It prompts
  the visitor for account information: Email, password, real name,
  irc nick.  The info is recorded in the Users table.  Perhaps later,
  we can add a preferences field that allows the user to request to
  be notified when new packages are submitted so that they can cast
  votes for them?

  If a TU is logged into the system, they can edit accounts and set
  the account type (regular user or TU).  If a Dev is logged in, they
  can also set the account type to Dev.  TUs and Devs are able to
  delete accounts.  If an account is deleted, all "Unsupported"
  packages are orphaned (the MaintainerUID field in the Packages
  table is set to NULL).

- html/packages.php
  PHP script to search the package database.  It should support
  searching by name, category, maintainer, popularity, etc. It
  should resemble the packages.php script on archlinux.org. A
  checkbox should be included next to each package to allow
  users to flag a package out of date, adopt it, and vote for
  it (and reverse operations).

- html/pkgsubmit.php
  This is the PHP script that allows users to upload a new package.
  The package format will be a tgz containing the PKGBUILD,
  scriptlets, and patches necessary to build the package from
  source.  Initially, the user submitting the package can select
  its category (network, devel, etc) but that can be modified
  later by the adopting TU.  The script makes appropriate entries
  into the database (and perhaps notifies interested users of the
  new package).


Terms and Definitions:
======================
AUR - Arch Linux User-Community Repository
	Includes:
	- the AUR web site,
	- the [unsupported] 'repository'
	- the [community] repository managed by the TUs

TU - Trusted User
	A user that can add binary packages to the [community]
	repository and administer AUR.

[unsupported]
	The collection of package build files hosted via the AUR web
	site.