1d38b94b |
1 | COPYING\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000035433\007026253476\0010635\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 GNU GENERAL PUBLIC LICENSE |
2 | Version 2, June 1991 |
3 | |
4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
5 | 675 Mass Ave, Cambridge, MA 02139, USA |
6 | Everyone is permitted to copy and distribute verbatim copies |
7 | of this license document, but changing it is not allowed. |
8 | |
9 | Preamble |
10 | |
11 | The licenses for most software are designed to take away your |
12 | freedom to share and change it. By contrast, the GNU General Public |
13 | License is intended to guarantee your freedom to share and change free |
14 | software--to make sure the software is free for all its users. This |
15 | General Public License applies to most of the Free Software |
16 | Foundation's software and to any other program whose authors commit to |
17 | using it. (Some other Free Software Foundation software is covered by |
18 | the GNU Library General Public License instead.) You can apply it to |
19 | your programs, too. |
20 | |
21 | When we speak of free software, we are referring to freedom, not |
22 | price. Our General Public Licenses are designed to make sure that you |
23 | have the freedom to distribute copies of free software (and charge for |
24 | this service if you wish), that you receive source code or can get it |
25 | if you want it, that you can change the software or use pieces of it |
26 | in new free programs; and that you know you can do these things. |
27 | |
28 | To protect your rights, we need to make restrictions that forbid |
29 | anyone to deny you these rights or to ask you to surrender the rights. |
30 | These restrictions translate to certain responsibilities for you if you |
31 | distribute copies of the software, or if you modify it. |
32 | |
33 | For example, if you distribute copies of such a program, whether |
34 | gratis or for a fee, you must give the recipients all the rights that |
35 | you have. You must make sure that they, too, receive or can get the |
36 | source code. And you must show them these terms so they know their |
37 | rights. |
38 | |
39 | We protect your rights with two steps: (1) copyright the software, and |
40 | (2) offer you this license which gives you legal permission to copy, |
41 | distribute and/or modify the software. |
42 | |
43 | Also, for each author's protection and ours, we want to make certain |
44 | that everyone understands that there is no warranty for this free |
45 | software. If the software is modified by someone else and passed on, we |
46 | want its recipients to know that what they have is not the original, so |
47 | that any problems introduced by others will not reflect on the original |
48 | authors' reputations. |
49 | |
50 | Finally, any free program is threatened constantly by software |
51 | patents. We wish to avoid the danger that redistributors of a free |
52 | program will individually obtain patent licenses, in effect making the |
53 | program proprietary. To prevent this, we have made it clear that any |
54 | patent must be licensed for everyone's free use or not licensed at all. |
55 | |
56 | The precise terms and conditions for copying, distribution and |
57 | modification follow. |
58 | \f |
59 | GNU GENERAL PUBLIC LICENSE |
60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
61 | |
62 | 0. This License applies to any program or other work which contains |
63 | a notice placed by the copyright holder saying it may be distributed |
64 | under the terms of this General Public License. The "Program", below, |
65 | refers to any such program or work, and a "work based on the Program" |
66 | means either the Program or any derivative work under copyright law: |
67 | that is to say, a work containing the Program or a portion of it, |
68 | either verbatim or with modifications and/or translated into another |
69 | language. (Hereinafter, translation is included without limitation in |
70 | the term "modification".) Each licensee is addressed as "you". |
71 | |
72 | Activities other than copying, distribution and modification are not |
73 | covered by this License; they are outside its scope. The act of |
74 | running the Program is not restricted, and the output from the Program |
75 | is covered only if its contents constitute a work based on the |
76 | Program (independent of having been made by running the Program). |
77 | Whether that is true depends on what the Program does. |
78 | |
79 | 1. You may copy and distribute verbatim copies of the Program's |
80 | source code as you receive it, in any medium, provided that you |
81 | conspicuously and appropriately publish on each copy an appropriate |
82 | copyright notice and disclaimer of warranty; keep intact all the |
83 | notices that refer to this License and to the absence of any warranty; |
84 | and give any other recipients of the Program a copy of this License |
85 | along with the Program. |
86 | |
87 | You may charge a fee for the physical act of transferring a copy, and |
88 | you may at your option offer warranty protection in exchange for a fee. |
89 | |
90 | 2. You may modify your copy or copies of the Program or any portion |
91 | of it, thus forming a work based on the Program, and copy and |
92 | distribute such modifications or work under the terms of Section 1 |
93 | above, provided that you also meet all of these conditions: |
94 | |
95 | a) You must cause the modified files to carry prominent notices |
96 | stating that you changed the files and the date of any change. |
97 | |
98 | b) You must cause any work that you distribute or publish, that in |
99 | whole or in part contains or is derived from the Program or any |
100 | part thereof, to be licensed as a whole at no charge to all third |
101 | parties under the terms of this License. |
102 | |
103 | c) If the modified program normally reads commands interactively |
104 | when run, you must cause it, when started running for such |
105 | interactive use in the most ordinary way, to print or display an |
106 | announcement including an appropriate copyright notice and a |
107 | notice that there is no warranty (or else, saying that you provide |
108 | a warranty) and that users may redistribute the program under |
109 | these conditions, and telling the user how to view a copy of this |
110 | License. (Exception: if the Program itself is interactive but |
111 | does not normally print such an announcement, your work based on |
112 | the Program is not required to print an announcement.) |
113 | \f |
114 | These requirements apply to the modified work as a whole. If |
115 | identifiable sections of that work are not derived from the Program, |
116 | and can be reasonably considered independent and separate works in |
117 | themselves, then this License, and its terms, do not apply to those |
118 | sections when you distribute them as separate works. But when you |
119 | distribute the same sections as part of a whole which is a work based |
120 | on the Program, the distribution of the whole must be on the terms of |
121 | this License, whose permissions for other licensees extend to the |
122 | entire whole, and thus to each and every part regardless of who wrote it. |
123 | |
124 | Thus, it is not the intent of this section to claim rights or contest |
125 | your rights to work written entirely by you; rather, the intent is to |
126 | exercise the right to control the distribution of derivative or |
127 | collective works based on the Program. |
128 | |
129 | In addition, mere aggregation of another work not based on the Program |
130 | with the Program (or with a work based on the Program) on a volume of |
131 | a storage or distribution medium does not bring the other work under |
132 | the scope of this License. |
133 | |
134 | 3. You may copy and distribute the Program (or a work based on it, |
135 | under Section 2) in object code or executable form under the terms of |
136 | Sections 1 and 2 above provided that you also do one of the following: |
137 | |
138 | a) Accompany it with the complete corresponding machine-readable |
139 | source code, which must be distributed under the terms of Sections |
140 | 1 and 2 above on a medium customarily used for software interchange; or, |
141 | |
142 | b) Accompany it with a written offer, valid for at least three |
143 | years, to give any third party, for a charge no more than your |
144 | cost of physically performing source distribution, a complete |
145 | machine-readable copy of the corresponding source code, to be |
146 | distributed under the terms of Sections 1 and 2 above on a medium |
147 | customarily used for software interchange; or, |
148 | |
149 | c) Accompany it with the information you received as to the offer |
150 | to distribute corresponding source code. (This alternative is |
151 | allowed only for noncommercial distribution and only if you |
152 | received the program in object code or executable form with such |
153 | an offer, in accord with Subsection b above.) |
154 | |
155 | The source code for a work means the preferred form of the work for |
156 | making modifications to it. For an executable work, complete source |
157 | code means all the source code for all modules it contains, plus any |
158 | associated interface definition files, plus the scripts used to |
159 | control compilation and installation of the executable. However, as a |
160 | special exception, the source code distributed need not include |
161 | anything that is normally distributed (in either source or binary |
162 | form) with the major components (compiler, kernel, and so on) of the |
163 | operating system on which the executable runs, unless that component |
164 | itself accompanies the executable. |
165 | |
166 | If distribution of executable or object code is made by offering |
167 | access to copy from a designated place, then offering equivalent |
168 | access to copy the source code from the same place counts as |
169 | distribution of the source code, even though third parties are not |
170 | compelled to copy the source along with the object code. |
171 | \f |
172 | 4. You may not copy, modify, sublicense, or distribute the Program |
173 | except as expressly provided under this License. Any attempt |
174 | otherwise to copy, modify, sublicense or distribute the Program is |
175 | void, and will automatically terminate your rights under this License. |
176 | However, parties who have received copies, or rights, from you under |
177 | this License will not have their licenses terminated so long as such |
178 | parties remain in full compliance. |
179 | |
180 | 5. You are not required to accept this License, since you have not |
181 | signed it. However, nothing else grants you permission to modify or |
182 | distribute the Program or its derivative works. These actions are |
183 | prohibited by law if you do not accept this License. Therefore, by |
184 | modifying or distributing the Program (or any work based on the |
185 | Program), you indicate your acceptance of this License to do so, and |
186 | all its terms and conditions for copying, distributing or modifying |
187 | the Program or works based on it. |
188 | |
189 | 6. Each time you redistribute the Program (or any work based on the |
190 | Program), the recipient automatically receives a license from the |
191 | original licensor to copy, distribute or modify the Program subject to |
192 | these terms and conditions. You may not impose any further |
193 | restrictions on the recipients' exercise of the rights granted herein. |
194 | You are not responsible for enforcing compliance by third parties to |
195 | this License. |
196 | |
197 | 7. If, as a consequence of a court judgment or allegation of patent |
198 | infringement or for any other reason (not limited to patent issues), |
199 | conditions are imposed on you (whether by court order, agreement or |
200 | otherwise) that contradict the conditions of this License, they do not |
201 | excuse you from the conditions of this License. If you cannot |
202 | distribute so as to satisfy simultaneously your obligations under this |
203 | License and any other pertinent obligations, then as a consequence you |
204 | may not distribute the Program at all. For example, if a patent |
205 | license would not permit royalty-free redistribution of the Program by |
206 | all those who receive copies directly or indirectly through you, then |
207 | the only way you could satisfy both it and this License would be to |
208 | refrain entirely from distribution of the Program. |
209 | |
210 | If any portion of this section is held invalid or unenforceable under |
211 | any particular circumstance, the balance of the section is intended to |
212 | apply and the section as a whole is intended to apply in other |
213 | circumstances. |
214 | |
215 | It is not the purpose of this section to induce you to infringe any |
216 | patents or other property right claims or to contest validity of any |
217 | such claims; this section has the sole purpose of protecting the |
218 | integrity of the free software distribution system, which is |
219 | implemented by public license practices. Many people have made |
220 | generous contributions to the wide range of software distributed |
221 | through that system in reliance on consistent application of that |
222 | system; it is up to the author/donor to decide if he or she is willing |
223 | to distribute software through any other system and a licensee cannot |
224 | impose that choice. |
225 | |
226 | This section is intended to make thoroughly clear what is believed to |
227 | be a consequence of the rest of this License. |
228 | \f |
229 | 8. If the distribution and/or use of the Program is restricted in |
230 | certain countries either by patents or by copyrighted interfaces, the |
231 | original copyright holder who places the Program under this License |
232 | may add an explicit geographical distribution limitation excluding |
233 | those countries, so that distribution is permitted only in or among |
234 | countries not thus excluded. In such case, this License incorporates |
235 | the limitation as if written in the body of this License. |
236 | |
237 | 9. The Free Software Foundation may publish revised and/or new versions |
238 | of the General Public License from time to time. Such new versions will |
239 | be similar in spirit to the present version, but may differ in detail to |
240 | address new problems or concerns. |
241 | |
242 | Each version is given a distinguishing version number. If the Program |
243 | specifies a version number of this License which applies to it and "any |
244 | later version", you have the option of following the terms and conditions |
245 | either of that version or of any later version published by the Free |
246 | Software Foundation. If the Program does not specify a version number of |
247 | this License, you may choose any version ever published by the Free Software |
248 | Foundation. |
249 | |
250 | 10. If you wish to incorporate parts of the Program into other free |
251 | programs whose distribution conditions are different, write to the author |
252 | to ask for permission. For software which is copyrighted by the Free |
253 | Software Foundation, write to the Free Software Foundation; we sometimes |
254 | make exceptions for this. Our decision will be guided by the two goals |
255 | of preserving the free status of all derivatives of our free software and |
256 | of promoting the sharing and reuse of software generally. |
257 | |
258 | NO WARRANTY |
259 | |
260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
268 | REPAIR OR CORRECTION. |
269 | |
270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
278 | POSSIBILITY OF SUCH DAMAGES. |
279 | |
280 | END OF TERMS AND CONDITIONS |
281 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0010213\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000103\007366774400\0011067\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:ext:fallas@cvs.squirrelmail.sourceforge.net:/cvsroot/squirrelmail |
282 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Repository\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000015\007366774400\0012325\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0squirrelmail |
283 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Entries\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000000770\007402645100\0011546\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/COPYING/1.1/Thu Dec 16 21:18:54 1999// |
284 | /INSTALL/1.23/Mon Apr 23 13:39:58 2001// |
285 | /MIRRORS/1.2/Tue May 22 06:31:40 2001// |
286 | /README/1.11/Tue Oct 9 03:02:16 2001// |
287 | /UPGRADE/1.5/Thu Apr 26 18:01:04 2001// |
288 | /configure/1.1/Sat Jul 29 16:50:28 2000// |
289 | D/config//// |
290 | D/data//// |
291 | D/doc//// |
292 | D/functions//// |
293 | D/help//// |
294 | D/images//// |
295 | D/locale//// |
296 | D/plugins//// |
297 | D/po//// |
298 | D/src//// |
299 | D/themes//// |
300 | /AUTHORS/1.65/Mon Dec 3 09:47:44 2001// |
301 | /ChangeLog/1.161/Mon Dec 3 09:47:44 2001// |
302 | /index.php/1.11/Mon Dec 3 09:47:44 2001// |
303 | \0\0\0\0\0\0\0\0ChangeLog\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000043220\007402645100\0011326\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0**************************************************************** |
304 | *** Squirrelmail Development Series 1.1 and 1.1 Pre-Releases *** |
305 | **************************************************************** |
306 | |
307 | Version 1.2.0-rc3 -- December 2, 2001 |
308 | ------------------------------------- |
309 | - Speed improvements and optimizations on much of the code |
310 | - Comments added, formatting cleaned up for much of the code |
311 | - Several plugins integrated into the Squirrelmail core |
312 | (focus change, attachment common, printer friendly, etc) |
313 | - Several plugins added as "Official Plugins" to the main |
314 | Squirrelmail distribution |
315 | - First half of a rewrite of the option pages code |
316 | - The Paginator!!! |
317 | - Other stuff that I don't recall (developers, please fill this in!) |
318 | |
319 | Version 1.1.3 -- (never really released) |
320 | ---------------------------- |
321 | - Added major speed improvements to IMAP functions by our friends at XS4ALL |
322 | - Fixed MOTD |
323 | - Fixed multipart/alternative messages |
324 | - Updated Dutch translation |
325 | - Added Indonesian translation |
326 | - Added Portuguese (Portugal) translation |
327 | - Added language aliasing |
328 | - Added Turkish translation |
329 | |
330 | Version 1.1.2 -- May 21, 2001 |
331 | ----------------------------- |
332 | - Many bugs squashed |
333 | - Several UI tweaks and improvements |
334 | - Added option (3 -> 14 in conf.pl) to auto create sent and trash folders. |
335 | - Updated Czech translation |
336 | - Support for multiple identities |
337 | - Support for Russian Apache removed. It is now deemed easier to just |
338 | turn off Charset Recoding in the Russian Apache config. See the file |
339 | doc/README.russian_apache |
340 | |
341 | Version 1.1.1 -- April 30, 2001 |
342 | ------------------------------- |
343 | - Added built-in support for gettext if compiled support isn't available |
344 | - Made validate.php include a few more standard things |
345 | - Corrected a bug when sending an email properly |
346 | |
347 | Version 1.1.0 -- April 21, 2000 |
348 | ------------------------------- |
349 | - Added option to have signout page redirect to another page (patch from |
350 | Scott Bronson) This can be configured in conf.pl (Org Prefs) |
351 | - Much improved SMTP error handling (patch from Jeff Evans) |
352 | - Preferences are now cached instead of read in every page load. |
353 | - Improved URL parser |
354 | - Added ability to read HTML messages by default instead of plain text |
355 | (Display Options) |
356 | - Added authenticated SMTP server support (configure in conf.pl) |
357 | - Rewrote attachment handling code in compose.php |
358 | - If aliases are typed in To, Cc, or Bcc, they are automatically looked up |
359 | in the addressbook and converted to the associated addresses. |
360 | - Added collapseable folder listing (an option that can be turned on in |
361 | Folder Options) |
362 | - Added alternating row colors to improve interface (Display Options) |
363 | |
364 | |
365 | ************************************** |
366 | *** Squirrelmail Stable Series 1.0 *** |
367 | ************************************** |
368 | |
369 | Version 1.0.6 -- April 19, 2001 |
370 | ------------------------------- |
371 | - Reworked validation for each page. It's now standardized in validate.php |
372 | - Fixed login bug that resulted from 1.0.5 security updates |
373 | - Fixed plugin incompatibilities that were introduced in 1.0.5 |
374 | - Added more security checking to preference saving/loading |
375 | - Updated German translation (thanks to Ronald Bauerschmidt <rb@debian.org>) |
376 | - Updated Finnish help files |
377 | |
378 | Version 1.0.5 -- April 17, 2001 |
379 | ------------------------------- |
380 | - MAJOR security issues addressed. Please upgrade as soon as possible. |
381 | - Downloading attachments should work better due to a tip by Ray Black III. |
382 | - Fixed bug with drop-down folder list not containing INBOX |
383 | - Added Swedish help files Teemu Junnila <teejun@vallcom.com> |
384 | - Added Italian help files Antonetti Roberto <antonr@piceniaweb.com> |
385 | |
386 | Version 1.0.4 -- April 9, 2001 |
387 | ------------------------------ |
388 | - Fixed some bugs with folder creation |
389 | - Security fix for UW IMAP server to disallow folder paths outside of |
390 | $folder_prefix |
391 | - Some problems with header encoding/decoding fixed |
392 | - Made subject column take up whatever width is available |
393 | - Added bcc to html addressbook search |
394 | |
395 | Version 1.0.3 -- March 9, 2001 |
396 | ------------------------------ |
397 | - Many i18n enhancements/fixes |
398 | - Fixed bug with default theme path being set incorrectly |
399 | - Fixed problem when sending/forwarding multiple attachments |
400 | - Made folder drop-down list consistant in look to the other drop-downs |
401 | - Fixed problem where some attachment filenames would not be displayed |
402 | - Added Finnish help files by Teemu Junnila <teejun@vallcom.com> |
403 | - Updated Norwegian translation |
404 | - Updated Brazillian Portuguise translation |
405 | |
406 | Version 1.0.2 -- February 8, 2001 |
407 | --------------------------------- |
408 | - Added a workaround for RedHat's 4.0.4pl1-3 binary package (It's also |
409 | the same workaround for Konqueror and other PHP installations?) |
410 | - Select All works through the search |
411 | - Better escaped string handling from POST variables |
412 | - Many more code cleanups and optimizations |
413 | - Added Hungarian translation by Teemu Junnila <teejun@vallcom.com> |
414 | - Added Icelandic translation by Karl Heiðar" <karlh@macho.is> |
415 | - Updated Taiwan translation |
416 | - Updated Sweedish translation |
417 | - Updated Finnish translation |
418 | |
419 | Version 1.0.1 -- February 1, 2001 |
420 | --------------------------------- |
421 | - Improved the way sqimap_read_data() is handled |
422 | - Sped up "no sorting" even more |
423 | - Fixed problems with sending messages |
424 | - Fixed some pass-by-reference calls that caused problems with newer |
425 | PHP versions |
426 | - Fixed bug that didn't display last folder subscribed to |
427 | - Removed requirement of PHP 4.0.1 for array_unique() function |
428 | - Removed unnecessary echo statements by breaking out of PHP |
429 | - Changed evaluation method from using " to ' for speed improvements |
430 | - If no plugin array set in config.php, now handled correctly |
431 | - If subject is > 55 chars, trims it and puts "..." in message list |
432 | - Hundreds of minor changes to remove all verbose PHP warning messages |
433 | |
434 | Version 1.0 -- January 30, 2001 |
435 | ------------------------------- |
436 | - Updated config_default.php to include attachment_common plugin |
437 | (now in distribution) |
438 | - A few minor speed improvements |
439 | - Fixed problems in sqimap_read_body(), made it more reliable |
440 | - Added French translation of help files by gore K <gore_k@ymca-cepiere.org> |
441 | - Added Finnish translation by Teemu Junnila <teejun@vallcom.com> |
442 | - Updated Sweedish translation |
443 | - Updated Russian translation |
444 | |
445 | |
446 | ******************************************************** |
447 | *** Squirrelmail Development Series 1.0 Pre-Releases *** |
448 | ******************************************************** |
449 | |
450 | Version 1.0pre3 -- January 22, 2001 |
451 | ----------------------------------- |
452 | - Fixed some "Select All" bugs |
453 | - Finally fixed the IE/SSL download problem!! |
454 | - Added Danish translation by Claus Rasmussen <claus@webclaus.com> |
455 | - Updated Spanish translation |
456 | - Updated Polish translation |
457 | - Updated Taiwan translation |
458 | - Updated Czech translation |
459 | - Updated Korean translation |
460 | |
461 | Version 1.0pre2 -- January 15, 2001 |
462 | ----------------------------------- |
463 | - A number of security fixes |
464 | - Replaced error messages with better, formatted, and meaningful messages. |
465 | - Fixed "reply all" so that it works intelligently now |
466 | - Made deleted (but not expunged) messages easier to detect (only if |
467 | $auto_expunge = false) |
468 | - Fixed bug that didn't display size correctly in search results |
469 | - Major memory management and speed improvements with downloading of |
470 | attachments |
471 | - Made $auto_expunge variable actually do something |
472 | - Fixed bug that didn't display login failure message |
473 | - Fixed minor bug in sqimap_mailbox_list |
474 | - Added sqimap_capability function to check capabilities of server. |
475 | - Rewrote sqimap_get_delim to use NAMESPACE capability (if available) to |
476 | get delimiter. |
477 | - Added Catalan translation of Help documents by Josep Sanz <jsanz@fa.upc.es> |
478 | - Added Taiwan translation by "ching" <ching@kiwa.com.tw> |
479 | |
480 | Version 1.0pre1 -- December 14, 2000 |
481 | ------------------------------------ |
482 | - Fixed bug in sending messages with a blank line with a "." |
483 | - Folder displays have been changed to be more readable in drop-down lists |
484 | - For security, login verification happens, then we're redirected to |
485 | webmail.php |
486 | - Folder sorting now case insensative |
487 | - added config option to set IMAP folder delimiter rather than always |
488 | detecting it |
489 | - Made session cookie parameter use PHP's settings rather than making |
490 | assumptions |
491 | - Select/Deselect all implemented using only HTML (not Javascript) |
492 | - Fixed default charset that is sent with outbound messages (now user's |
493 | preferred charset) |
494 | - Sort method saving now transparent to user, and saves between sessions |
495 | - Now replacing all \n with \r\n before sending the message. |
496 | - Added sorting option for NO sorting.. 10000 times faster! |
497 | - Using <pre> tags for viewing message body instead of <tt> and |
498 | - Added redirection from subdirectories to login page |
499 | - Attachments are shown in message index (shown as a "+") |
500 | - Updated attachment plugin support and passing values to hooks (see |
501 | plugins.txt) |
502 | - Added file and message size in many locations |
503 | - Made message index order customizable (from, subject, date) can be (date, |
504 | from, subject) |
505 | - Fixed some security problems with uploading attachments |
506 | - When reading, attachments look better and have a better plugin interface |
507 | - Some functions now pass values by reference to save on memory |
508 | - Added Catalan translation from Josep Sanz <jsanz@fa.upc.es> |
509 | - Added Serbian translation from Boris Manojlovic <steki@verat.net> |
510 | - Added Polish translation of Help from Krystian Kanabrodzki |
511 | <krys@voruta.eu.org> |
512 | |
513 | |
514 | ***************************************** |
515 | *** Squirrelmail 0.5 and Pre-Releases *** |
516 | ***************************************** |
517 | |
518 | Version 0.5 -- September 25, 2000 |
519 | --------------------------------- |
520 | - Fixed some problems with downloading attachments in IE |
521 | - If no date is set in header, we take internal date of the imap server |
522 | - Fixed some lingering bugs in mime parsing |
523 | - Searching specifies CHARSET option |
524 | - Security fixes |
525 | - Fixed hyperlink rendering problems |
526 | |
527 | Version 0.5pre2 -- September 6, 2000 |
528 | ------------------------------------ |
529 | - Added quite a few new themes |
530 | - Fixed double folder problem on some servers |
531 | - Using encryption for passwords |
532 | - Added a patch from Bill Thousand to allow easier virtual domains |
533 | - Security updates with attachments |
534 | - Added more hooks for plugins, updated plugin.txt |
535 | - Improved HTML address book |
536 | - Fixed bugs in parsing email addresses in smtp.php |
537 | - Applied fixes for Courier IMAP server (by Andreas Dahl) |
538 | - Fixed some buggy IMAP handling |
539 | - Improved word wrapping |
540 | - Fixed bugs with adding and not adding backslashes |
541 | - Made message highlighting case insensative |
542 | - Added Korean translation from Jong-II Kim <aporie@netian.com> |
543 | - Added Italian translation from Aldo Moresco <moresco@idcm.it> |
544 | - Added French translation from Ali Nedjimi <lrdfrx@club-internet.fr> |
545 | |
546 | Version 0.5pre1 -- August 9, 2000 |
547 | --------------------------------- |
548 | - Searching folders functionality added |
549 | - Date display now is similar to Netscape Messenger |
550 | - Many bugs have been reported to the list, and been squashed |
551 | - Help system developed |
552 | - Folder list now shows configurable details about messages |
553 | - It is now possible to select multiple subscribes/unsubscribes |
554 | - Removed a bunch of annoying "success" screens, improved navigation |
555 | - Better IMAP session handling |
556 | - Redid the options section and split it into different parts |
557 | - Added "view all headers" option when reading a message |
558 | - In-Reply-To and References headers are inserted when replying to a message. |
559 | - Changed how attachments are displayed and handled |
560 | - Rewrote MIME support from scratch, optomizing it an unbelievable amount |
561 | - Added support for message highlighting |
562 | - Moved Address and Send buttons on Compose form for easier access |
563 | - Added Polish translation from Lukasz Klimek <casa@LO.Pila.PL> |
564 | - Added Swedish translation from Tobias Ekbom |
565 | - Added Brazilian Portuguse translation from Henrique Moura |
566 | - Added Dutch translation from Arjen Halma |
567 | |
568 | |
569 | ***************************************** |
570 | *** Squirrelmail 0.4 and Pre-Releases *** |
571 | ***************************************** |
572 | |
573 | Version 0.4 -- May 15, 2000 |
574 | --------------------------- |
575 | - If subject is blank, displays "(no subject)" |
576 | - Fixed a few minor bugs and typos reported to list |
577 | - Changed <? to <?php in a few places |
578 | |
579 | Version 0.4pre2 -- May 5, 2000 |
580 | ------------------------------ |
581 | - Replying sets the "Answered" flag on the original message |
582 | - When message is sent, it sends you to the folder you were looking at. |
583 | - HTML based address book search |
584 | - Made folder listing look first at subscribed folders, making it |
585 | faster, even if you don't have $folder_prefix set. |
586 | - Fixed some bugs with default sent and trash folders |
587 | - Fixed some bugs with folder manipulating |
588 | |
589 | Version 0.4pre1 -- April 29, 2000 |
590 | --------------------------------- |
591 | - For speed's sake, unseen messages are only noted on INBOX in left |
592 | folder list. This will change with 0.5. |
593 | - Optomizations, fewer IMAP calls, more efficient sorting algorithms. |
594 | - Fixed all bugs listed in BUG |
595 | - When inside the Sent folder, it displays "To" instead of "From" |
596 | - Added ability to go to Next and Previous message while reading a message |
597 | - Caching of the message headers in mailbox (much faster) |
598 | - Added a preference that allows users to customize how many messages |
599 | they see when they index a mailbox |
600 | - Added flag status showing on message list (Answered, Flagged, and Seen) |
601 | - Now using PHP session management |
602 | - Parsing the body for URLs and Email addrs |
603 | - Added option to configure default folder directory. ie: ~/mail |
604 | - Configuration script added: config/conf.pl |
605 | - Addressbook with LDAP support |
606 | - Big speed improvements with folder listing |
607 | - Added Subscribe/Unsubscribe to folders |
608 | - Fixed bug in UW that didn't mark unseen messages |
609 | - Saving sent messages into $sent_folder |
610 | - It doesn't bail out if PHP wasn't compiled with --with-gettext. |
611 | It only uses english in this case. |
612 | - Added support for Cyrillic (thanks to Artem Botchkov for help) |
613 | - Included information on Russian Apache from Konstantin Riabitsev |
614 | - Honoring charset parameter for the body. |
615 | - Changed the way emptying of trash was done to work better |
616 | across different IMAP servers |
617 | |
618 | |
619 | ***************************************** |
620 | *** Squirrelmail 0.3 and Pre-Releases *** |
621 | ***************************************** |
622 | |
623 | Version 0.3.1 -- March 13, 2000 |
624 | ------------------------------- |
625 | - Fixed a bug that didn't allow downloading of attachments |
626 | |
627 | Version 0.3 (final) -- March 10, 2000 |
628 | ------------------------------------- |
629 | - Fixed bug in smtp.php and made sending RFC complient |
630 | - Fixed a bug that wouldn't let you rename folders with UW server. |
631 | - Other minor bugfixes |
632 | |
633 | Version 0.3pre2 -- March 5, 2000 |
634 | -------------------------------- |
635 | - Rewrote folder deletion. It works much more flexably now. |
636 | - Fixed message deletion that didn't always delete the right messages. |
637 | - Removed font tags |
638 | - Better character translation, especially for i18n |
639 | - Added the choice of language as a user preference |
640 | - Bug fixes, bug fixes, bug fixes |
641 | - Fixed bugs in message moving and deleting |
642 | - Rewrote all IMAP functions from scratch |
643 | |
644 | Version 0.3pre1 -- February 17, 2000 |
645 | ------------------------------------ |
646 | - Added user-specific preferences including: |
647 | Full Name (for outbound messages) |
648 | Reply-to address |
649 | Theme |
650 | Move messages to trash option (true/false) |
651 | Wrap incoming text at XX characters |
652 | Editor window size (in characters) |
653 | Time between reloads of the left folder list |
654 | Signature |
655 | - Rewrote SMTP functions. It now works and handles error correction. |
656 | - Only folders that you're subscribed to will be listed |
657 | - Fixed a bug in outbound messages that translated " into \" |
658 | - Added themes in distribution (7 total) |
659 | - Added option to send email via sendmail rather than SMTP |
660 | - Increased speed of viewing folder by date about 25%, and viewing the |
661 | folder by Subject or Sender by up to 100%. |
662 | - Added internationalization |
663 | - Added sending of attachments |
664 | - Left folder refreshing at intervals (with META tags) |
665 | |
666 | |
667 | ***************************************** |
668 | *** Squirrelmail 0.2 and Pre-Releases *** |
669 | ***************************************** |
670 | |
671 | Version 0.2.1 -- January 05, 2000 |
672 | --------------------------------- |
673 | - Rewrote how MULTIPART messages were handled and made it recursive |
674 | - We now take into account the encoding type rather than guessing |
675 | - Redesigned how attachments are displayed |
676 | - Fixed the bug that wouldn't let you send messages (I hope) |
677 | - Added a "download message" option |
678 | - Added a plain text viewer for text messages |
679 | |
680 | Version 0.2 -- January 02, 2000 |
681 | ------------------------------- |
682 | - Attachment support (much better MIME support in general) |
683 | - Themeable support replaced Custom Colors. Themes are pluggable. |
684 | |
685 | |
686 | ***************************************** |
687 | *** Squirrelmail 0.1 and Pre-Releases *** |
688 | ***************************************** |
689 | |
690 | Version 0.1.2 -- December 20, 1999 |
691 | ----------------------------------- |
692 | - Date translation to local time |
693 | - Rewrote folder fetching code universally |
694 | - Added attachment detection (no downloads yet) |
695 | - Fixed many minor bugs that were reported |
696 | |
697 | Version 0.1.1 -- December 16, 1999 |
698 | ----------------------------------- |
699 | - Reworked all the IMAP functions to make them RFC 2060 compliant |
700 | (should work with all IMAP servers) |
701 | - Added color customization |
702 | - Sorted folder list (on left bar) |
703 | - Added MUCH better error correction and notification |
704 | |
705 | Version 0.1 -- December 14, 1999 |
706 | -------------------------------- |
707 | - Message composing (with to, cc, bcc) |
708 | - Message viewing, including HTML messages |
709 | - Basic MIME support, no attachments...yet |
710 | - Message sorting by Date, Name, or subject |
711 | - Folder manipulation (deleting, creating, moving, and renaming) |
712 | - IMAP email (currently only Cyrus IMAP server has been tested) |
713 | - Many other features that are basic email functionality |
714 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0INSTALL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000017034\007271030256\0010617\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Installing SquirrelMail |
715 | ======================= |
716 | |
717 | Table of Contents: |
718 | 1. (PHP4) Configure your webserver to work with PHP4 |
719 | 2. (IMAP) Setting up IMAP (not covered) |
720 | 3. (INSTALL) Obtaining and installing SquirrelMail |
721 | 4. (RUN) Running SquirrelMail |
722 | 5. (CHARSETS) Russian Charsets |
723 | |
724 | |
725 | |
726 | |
727 | 1. CONFIGURE YOUR WEBSERVER TO WORK WITH PHP4 |
728 | --------------------------------------------- |
729 | |
730 | If your webserver does not already have PHP4 you must configure it |
731 | to work with PHP4. SquirrelMail uses the standard suffix .php for |
732 | all PHP4 files. This is a quick and dirty guide to installing PHP4 |
733 | to run as CGI under Apache. How you end up doing this is up to you |
734 | (your mileage may vary). |
735 | |
736 | NOTE: The new plugin architecture required the use of some functions |
737 | which are not in all versions of PHP4. You will need at least |
738 | PHP4 beta2. If you need to upgrade please go ahead and install the |
739 | latest release version of PHP4. |
740 | |
741 | a. Obtaining and compiling PHP4 |
742 | |
743 | Point your favorite webserver at http://www.php.net/version4/ and |
744 | download the source. Untar (tar xvfz filename-you-downloaded.tgz) |
745 | the source, cd into the directory and run configure. To make PHP4 |
746 | work with SquirrelMail a commandline like this should do: |
747 | |
748 | ./configure --enable-track-vars --enable-force-cgi-redirect --with-gettext |
749 | |
750 | If you have a database like MySQL you might want to add something |
751 | like --with-mysql to get database functionality. |
752 | |
753 | If you're going to use LDAP in the addressbook, you must compile PHP4 |
754 | with --with-ldap (see the PHP4 docs for more information). |
755 | |
756 | Run make to build the binary file. This will generate a binary file |
757 | called "php". Move this file into a CGI-directory. |
758 | |
759 | You might also want to read the INSTALL file in the PHP-distribution |
760 | :-) |
761 | |
762 | b. Changing php.ini |
763 | |
764 | PHP defaults to look for php.ini (PHP's configuration file) in |
765 | /usr/local/lib. However, for security reasons, it is suggested |
766 | that the location of this file is changed to someplace else. This |
767 | can be done at configure time with the configuration directive |
768 | --with-config-file-path=PATH. |
769 | |
770 | Edit the php.ini file and make sure session.use_cookies is 1. Also |
771 | be sure to change the session.save_path to someplace that can only |
772 | be read and written to by the webserver. session.save_path is the |
773 | location that PHP's session data will be written to. |
774 | |
775 | SECURITY WARNING - If a user has access to write PHP scripts on your |
776 | system and knows the location where PHP stores session data, he |
777 | could get a listing of the sessions being used and then read a given |
778 | session's data with his own PHP script. Caution should be used when |
779 | setting up permissions and locations of php.ini and the session data. |
780 | |
781 | c. Setting up .php files to use PHP4 |
782 | |
783 | You need to create a .htaccess file in you SquirrelMail directory |
784 | that looks something like this: |
785 | |
786 | AddType application/php4script .php |
787 | Action application/php4script /cgi-bin/php |
788 | |
789 | You could also add these lines to your Apache configuration file. |
790 | |
791 | d. Running into trouble |
792 | |
793 | Setting up Apache with PHP4 can be a non-trivial task. Read the PHP4 |
794 | and Apache documentation carefully if you run into trouble. If you |
795 | have an experienced system administrator around ask her/him to help |
796 | you. |
797 | |
798 | 2. SETTING UP IMAP |
799 | ------------------ |
800 | |
801 | This is not covered here :-/ |
802 | |
803 | 3. OBTAINING AND INSTALLING SQUIRRELMAIL |
804 | ---------------------------------------- |
805 | |
806 | SquirrelMail is still under development. Therefore you should always |
807 | get the newest version around. Look at |
808 | http://www.squirrelmail.org/index.php3?page=5 to see what it |
809 | is. If you want to be bleeding edge you might want to consider using |
810 | the latest CVS version (with the latest and most fashionable of |
811 | bugs). |
812 | |
813 | a. Download SquirrelMail |
814 | |
815 | Get SquirrelMail from the address above if you do not have it or are |
816 | uncertain if you have the newest version. Untar (again tar xvfz |
817 | filename.tgz) SquirrelMail in a directory that is readable for your |
818 | webserver. |
819 | |
820 | b. Setting up directories |
821 | |
822 | SquirrelMail uses two directories to store user configuration and |
823 | attachments that are about to be sent. You might want to have these |
824 | directories outside of your web tree. |
825 | |
826 | The data directory is used for storing user preferences, like |
827 | signature, name and theme. When unpacking the sources this directory |
828 | is created as data/ in your SquirrelMail directory. This directory |
829 | must be writable by the webserver. If your webserver is running as |
830 | the user "nobody" you can fix this by running: |
831 | |
832 | $ chown -R nobody data |
833 | $ chgrp -R nobody data |
834 | |
835 | Keep in mind that with different installations, the web server could |
836 | typically run as userid/groupid of nobody/nobody, nobody/nogroup, |
837 | apache/apache or www-data/www-data. The best way to find out is to read |
838 | the web server's configuration file. |
839 | |
840 | There also needs to be a directory where attachments are stored |
841 | before they are sent. Since personal mail is stored in this |
842 | directory you might want to be a bit careful about how you set it |
843 | up. It should be owned by another user than the webserver is running |
844 | as (root might be a good choice) and the webserver should have write |
845 | and execute permissions on the directory, but should not have read |
846 | permissions. You could do this by running these commands (still |
847 | granted that the webserver is running as nobody/nobody) |
848 | |
849 | $ cd /var/some/place |
850 | $ mkdir SomeDirectory |
851 | $ chgrp -R nobody SomeDirectory |
852 | $ chmod 730 SomeDirectory |
853 | |
854 | If you trust all the users on you system not to read mail they are |
855 | not supposed to read change the last line to chmod 777 SomeDirectory |
856 | or simply use /tmp as you attachments directory. |
857 | |
858 | If a user is aborting a mail but has uploaded some attachments to it |
859 | the files will be lying around in this directory forever if you do not |
860 | remove them. To fix this, it is recommended to create a cron job that |
861 | deletes everything in the attachment directory. Something similar |
862 | to the following will be good enough: |
863 | |
864 | $ cd /var/attach/directory |
865 | $ rm -f * |
866 | |
867 | However, this will delete attachments that are currently in use by people |
868 | sending email when the cron job runs. You can either (1) make sure that |
869 | the cron job runs at an obscure hour and hope that nobody gets upset, or |
870 | (2) you can run a modified version of the commands above. Check out the |
871 | man pages for other commands such as 'find' or 'tmpreaper'. |
872 | |
873 | One sample script you could set up that would erase all attachments, but |
874 | wouldn't erase preferences, address books, or the like (just in case your |
875 | attachment directory is the same as your data directory) might look like |
876 | this: |
877 | |
878 | $ rm `find /var/attach/directory -atime +2 | grep -v "\." | grep -v _` |
879 | |
880 | Remember to be careful with whatever method you do use, and to test out |
881 | the command before it potentially wipes out everyone's preferences. |
882 | |
883 | c. Setting up SquirrelMail |
884 | |
885 | There are two ways to configure Squirrelmail. In the config/ directory, |
886 | there is a perl script called conf.pl that will aid you in the |
887 | configuration process. This is the recommended way of handling |
888 | the config. |
889 | |
890 | You can also copy the config/config_default.php file to config/config.php |
891 | and edit that manually. |
892 | |
893 | 4. RUNNING SQUIRRELMAIL |
894 | ----------------------- |
895 | |
896 | Point your browser at the URL at which SquirrelMail is installed. A |
897 | possible example of this is: |
898 | http://www.yourdomain.com/squirrelmail |
899 | |
900 | It should be pretty stright forward to use. Some more documentation |
901 | might show up one day or another. |
902 | |
903 | |
904 | 5. RUSSIAN CHARSETS |
905 | ------------------- |
906 | |
907 | For information on how to make SquirrelMail work with Russian |
908 | Apache, see the README.russian_apache in the doc/ subdirectory. |
909 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0MIRRORS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000342\007302403714\0010636\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0SquirrelMail Download Mirrors |
910 | |
911 | [Sweden] http://yazzy.org/squirrel/ |
912 | ftp://yazzy.org/pub/mirrors/squirrelmail/ |
913 | |
914 | [Texas, USA] http://nerf-herder.net/squirrel/ |
915 | ftp://nerf-herder.net/pub/squirrel/ |
916 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0README\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000005122\007360464270\0010447\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0SquirrelMail |
917 | http://www.squirrelmail.org |
918 | |
919 | Introduction: |
920 | ------------- |
921 | SquirrelMail is a standards-based webmail package written in PHP4. It |
922 | includes built-in pure PHP support for the IMAP and SMTP protocols, and all |
923 | pages render in pure HTML 4.0 (with no Javascript) for maximum compatibility |
924 | across browsers. It has very few requirements and is very easy to configure |
925 | and install. SquirrelMail has a all the functionality you would want from an |
926 | email client, including strong MIME support, address books, and folder |
927 | manipulation. |
928 | |
929 | Why did you guys create SquirrelMail? The need arose in our organization |
930 | for the access of email and address books from anywhere in the world. |
931 | Obviously a web interface is ideal for this, given that the user has access |
932 | to the Internet. After reviewing several open source projects, we realized |
933 | that we were going to need to do some fairly major customizations to get |
934 | things to be a nice fit for our needs. So the decision was made to create |
935 | our own for some of these reasons, and for fun (we really like PHP4). We |
936 | decided to open source the project to contribute to the community that has |
937 | contributed so much to us. Since then, it has grown much bigger than we |
938 | ever imagined, and we have an awesome development team who are actively |
939 | working on the project. |
940 | |
941 | We would love to hear from you! The nature of open source projects make it |
942 | hard to know who all is using your product. It is always nice when we get |
943 | emails from people just telling us that they're using SquirrelMail. If you |
944 | have a few minutes, please send us an email to let us know! You can send it |
945 | to our mailing list: squirrelmail-list@sourceforge.net |
946 | |
947 | You can also go to the page below and fill out a small form to get listed |
948 | with the list of people already using SquirrelMail (free advertising). |
949 | |
950 | http://www.squirrelmail.org/feedback.php |
951 | |
952 | Contact: |
953 | -------- |
954 | It is pretty easy to get in contact with the developers if you need help or |
955 | if you find bugs that need to be reported. The best way to contact us would |
956 | be through our mailing list which is actively monitored. Just send an email |
957 | to: |
958 | |
959 | squirrelmail-list@sourceforge.net |
960 | |
961 | If you wish to actually subscribe to our mailing list, please visit our web |
962 | page for instructions (http://www.squirrelmail.org) and go to the section |
963 | titled "Mailing List". |
964 | |
965 | Installation: |
966 | ------------- |
967 | For detailed instructions on how to install SquirrelMail on your server, |
968 | please refer to the INSTALL document in the same directory as this document. |
969 | |
970 | Licensing: |
971 | ---------- |
972 | This product is distributed under the GPL. Please read through the file |
973 | COPYING for more information about our license. |
974 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0UPGRADE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000010643\007272061140\0010574\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Upgrading from 0.3 or higher |
975 | ============================ |
976 | |
977 | If you are upgrading from versions 0.3 or higher of SquirrelMail, you can |
978 | use this guide to make the transition a bit smoother. If you have been |
979 | using a previous version (0.1 or 0.2), it is suggested that you just start |
980 | from scratch and configure your settings as if it was your first install. |
981 | |
982 | NOTE: The new plugin architecture required the use of some functions which |
983 | are not in all versions of PHP4. You will need at least PHP4 beta2. If you |
984 | need to upgrade please go ahead and install the latest release version of |
985 | PHP4. |
986 | |
987 | |
988 | 1. Backup old install |
989 | ====================== |
990 | |
991 | Make a backup of your current SquirrelMail directory. If you use "cp", be |
992 | sure to use the "-Rp" options. -R means recursive, and -p will save the |
993 | permissions in the directory. |
994 | |
995 | In this example, we assume that your httpd document directory is |
996 | /home/httpd/html, that your SquirrelMail install is located at |
997 | /home/httpd/html/squirrelmail-0.4, and that your new SM version is 0.5. |
998 | Substitute version numbers and names as required. |
999 | |
1000 | $ cd /home/httpd/html |
1001 | $ cp -Rp squirrelmail-0.4 squirrelmail-0.4.bak |
1002 | |
1003 | |
1004 | 2. Unarchive new SquirrelMail |
1005 | ============================== |
1006 | Make sure that you are in your httpd document directory (/home/httpd/html) |
1007 | and then unarchive the SquirrelMail archive (whatever the filename is): |
1008 | |
1009 | $ tar -zxvf squirrelmail-0.5.tar.gz |
1010 | |
1011 | |
1012 | 3. Copy important files from old install |
1013 | ========================================= |
1014 | The important files to copy are: |
1015 | A. Preferences |
1016 | B. Config details |
1017 | C. Plugins |
1018 | D. Themes (if you've edited or added any of them) |
1019 | |
1020 | A. Preferences |
1021 | |
1022 | First, copy your preference data over to the new directory. Usually this is |
1023 | ok, but if you are upgrading from to 1.0.5 or later from anything less than |
1024 | 1.0.5, we strongly suggest you let your users reset their preferences. |
1025 | There were important security upgrades in 1.0.5 regarding preference files. |
1026 | |
1027 | $ cp squirrelmail-0.4.bak/data/* squirrelmail-0.5/data |
1028 | |
1029 | B. Config details |
1030 | |
1031 | If at all possible, start the configuration process from scratch. It is |
1032 | much less prone to missing configuration options than copying your old |
1033 | configuration. Ideally, you should just run conf.pl to reconfigure |
1034 | SquirrelMail. If you decide to copy your old config.php over, we strongly |
1035 | recommend that you run conf.pl to make sure things are correct and then save |
1036 | the config file. |
1037 | |
1038 | $ cp squirrelmail-0.4.bak/config/config.php squirrelmail-0.5/config |
1039 | |
1040 | C. Copy plugins |
1041 | |
1042 | Like SquirrelMail, plugins are fequently updated for improvements, as well |
1043 | as to make them compatible with new SquirrelMail releases. It is suggested |
1044 | that you download a new plugins archive at the same time you download your |
1045 | SquirrelMail install, and that you install your plugins fresh (it's easy, |
1046 | don't panic!). |
1047 | |
1048 | If you prefer to just copy your old plugins over (if it's the same version |
1049 | or if you are lazy), you may do so. If you notice irregularities with the |
1050 | plugins under the new SquirrelMail, try installing new versions of the |
1051 | plugins. |
1052 | |
1053 | $ cp -Rp squirrelmail-0.4.bak/plugins/* squirrelmail-0.5/plugins |
1054 | |
1055 | D. Copy themes |
1056 | |
1057 | If you've created or modified themes, you should copy just those to the new |
1058 | SquirrelMail themes direcory. To just copy them all over to the new |
1059 | SquirrelMail installation, you can run one command. |
1060 | |
1061 | $ cp squirrelmail-0.4.bak/themes/* squirrelmail-0.5/themes/ |
1062 | |
1063 | (While you are at it, you should send them to us! We might add them to the |
1064 | themes in the standard install!) |
1065 | |
1066 | |
1067 | 4. Change permissions |
1068 | ====================== |
1069 | The web server must have write permission to the data directory. In this |
1070 | example, we assume that user "nobody" and group "nobody" are the web server |
1071 | as is often the case with Apache. |
1072 | |
1073 | $ cd squirrelmail-0.5 |
1074 | $ chown -R nobody.nobody data |
1075 | |
1076 | See INSTALL for alternate userid/groupid pairs. Additionally, if "chown |
1077 | user.group" doesn't work, you can use "chown user" and "chgrp group" |
1078 | instead. See the man pages for these commands for more information. |
1079 | |
1080 | |
1081 | 5. Run conf.pl |
1082 | =============== |
1083 | Run config/conf.pl to see the new configuration options available with the |
1084 | new version, as well as to verify that all of your old options are set |
1085 | properly. |
1086 | |
1087 | |
1088 | 6. DONE! |
1089 | ========= |
1090 | That should be all! The most important part is copying your users' |
1091 | preference files back into the new data directory. This will insure that |
1092 | your users will have their old preferences. Remember to do so with caution, |
1093 | especially if you are upgrading from a version before 1.0.5 to version 1.0.5 |
1094 | or later. |
1095 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0011025\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0011460\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000103\007366774401\0012335\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:ext:fallas@cvs.squirrelmail.sourceforge.net:/cvsroot/squirrelmail |
1096 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Repository\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000024\007366774401\0013573\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0squirrelmail/config |
1097 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Entries\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000000337\007402645100\0013012\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/.cvsignore/1.1/Fri Oct 20 15:13:17 2000// |
1098 | /index.php/1.1/Fri Oct 27 02:41:25 2000// |
1099 | /conf.pl/1.64/Mon Dec 3 09:47:44 2001// |
1100 | /config_default.php/1.52/Mon Dec 3 09:47:44 2001// |
1101 | /ri_once.pl/1.1/Thu Nov 8 23:04:56 2001// |
1102 | D |
1103 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/.cvsignore\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000013\007174060415\0013022\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config.php |
1104 | \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/conf.pl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100755\00000000\00000000\000000214057\007402645100\0012316\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#!/usr/bin/perl |
1105 | # conf.pl |
1106 | # Luke Ehresman (luke@squirrelmail.org) |
1107 | # |
1108 | # A simple configure script to configure squirrelmail |
1109 | # |
1110 | # $Id$ |
1111 | ############################################################ |
1112 | $conf_pl_version = "x63"; |
1113 | |
1114 | ############################################################ |
1115 | # Some people try to run this as a CGI. That's wrong! |
1116 | ############################################################ |
1117 | if(defined($ENV{'PATH_INFO'}) || defined($ENV{'QUERY_STRING'}) || |
1118 | defined($ENV{'REQUEST_METHOD'})) { |
1119 | print "Content-Type: text/html\n\n"; |
1120 | print "You must run this script from the command line."; |
1121 | exit; |
1122 | } |
1123 | |
1124 | ############################################################ |
1125 | # First, lets read in the data already in there... |
1126 | ############################################################ |
1127 | if ( -e "config.php") { |
1128 | open (FILE, "config.php"); |
1129 | while ($line = <FILE>) { |
1130 | if ($line =~ /^\s+\$/) { |
1131 | $line =~ s/^\s+\$//; |
1132 | $var = $line; |
1133 | |
1134 | $var =~ s/=/EQUALS/; |
1135 | if ($var =~ /^([a-z]|[A-Z])/) { |
1136 | @o = split(/\s*EQUALS\s*/, $var); |
1137 | if ($o[0] eq "config_version") { |
1138 | $o[1] =~ s/[\n|\r]//g; |
1139 | $o[1] =~ s/\";\s*$//; |
1140 | $o[1] =~ s/;$//; |
1141 | $o[1] =~ s/^\"//; |
1142 | |
1143 | $config_version = $o[1]; |
1144 | close (FILE); |
1145 | } |
1146 | } |
1147 | } |
1148 | } |
1149 | close (FILE); |
1150 | |
1151 | if ($config_version ne $conf_pl_version) { |
1152 | system "clear"; |
1153 | print $WHT."WARNING:\n".$NRM; |
1154 | print " The file \"config/config.php\" was found, but it is for an older version of\n"; |
1155 | print " SquirrelMail. It is possible to still read the defaults from this file\n"; |
1156 | print " but be warned that many preferences change between versions. It is\n"; |
1157 | print " recommended that you start with a clean config.php for each upgrade that\n"; |
1158 | print " you do. To do this, just move config/config.php out of the way.\n\n"; |
1159 | print "Continue loading with the old config.php [y/N]? "; |
1160 | $ctu = <STDIN>; |
1161 | if (($ctu !~ /^y\n/i) || ($ctu =~ /^\n/)) { |
1162 | exit; |
1163 | } |
1164 | |
1165 | print "\nDo you want me to stop warning you [y/N]? "; |
1166 | $ctu = <STDIN>; |
1167 | if ($ctu =~ /^y\n/i) { |
1168 | $print_config_version = $conf_pl_version; |
1169 | } else { |
1170 | $print_config_version = $config_version; |
1171 | } |
1172 | } else { |
1173 | $print_config_version = $config_version; |
1174 | } |
1175 | |
1176 | $config = 1; |
1177 | open (FILE, "config.php"); |
1178 | } elsif (-e "config_default.php") { |
1179 | open (FILE, "config_default.php"); |
1180 | while ($line = <FILE>) { |
1181 | if ($line =~ /^\s+\$/) { |
1182 | $line =~ s/^\s+\$//; |
1183 | $var = $line; |
1184 | |
1185 | $var =~ s/=/EQUALS/; |
1186 | if ($var =~ /^([a-z]|[A-Z])/) { |
1187 | @o = split(/\s*EQUALS\s*/, $var); |
1188 | if ($o[0] eq "config_version") { |
1189 | $o[1] =~ s/[\n|\r]//g; |
1190 | $o[1] =~ s/\";\s*$//; |
1191 | $o[1] =~ s/;$//; |
1192 | $o[1] =~ s/^\"//; |
1193 | |
1194 | $config_version = $o[1]; |
1195 | close (FILE); |
1196 | } |
1197 | } |
1198 | } |
1199 | } |
1200 | close (FILE); |
1201 | |
1202 | if ($config_version ne $conf_pl_version) { |
1203 | system "clear"; |
1204 | print $WHT."WARNING:\n".$NRM; |
1205 | print " You are trying to use a \"config_default.php\" from an older version of\n"; |
1206 | print " SquirrelMail. This is HIGHLY unrecommended. You should get the\n"; |
1207 | print " \"config_default.php\" that matches the version of SquirrelMail that you\n"; |
1208 | print " are running. You can get this from the SquirrelMail web page by going\n"; |
1209 | print " to: http://www.squirrelmail.org.\n\n"; |
1210 | print "Continue loading with the old config_default.php (not a good idea) [y/N]? "; |
1211 | $ctu = <STDIN>; |
1212 | if (($ctu !~ /^y\n/i) || ($ctu =~ /^\n/)) { |
1213 | exit; |
1214 | } |
1215 | |
1216 | print "\nDo you want me to stop warning you [y/N]? "; |
1217 | $ctu = <STDIN>; |
1218 | if ($ctu =~ /^y\n/i) { |
1219 | $print_config_version = $conf_pl_version; |
1220 | } else { |
1221 | $print_config_version = $config_version; |
1222 | } |
1223 | } else { |
1224 | $print_config_version = $config_version; |
1225 | } |
1226 | $config = 2; |
1227 | open (FILE, "config_default.php"); |
1228 | } else { |
1229 | print "No configuration file found. Please get config_default.php or\n"; |
1230 | print "config.php before running this again. This program needs a\n"; |
1231 | print "default config file to get default values.\n"; |
1232 | exit; |
1233 | } |
1234 | |
1235 | # Reads and parses the current configuration file (either |
1236 | # config.php or config_default.php). |
1237 | |
1238 | while ($line = <FILE>) { |
1239 | if ($line =~ /^\s+\$/) { |
1240 | $line =~ s/^\s+\$//; |
1241 | $var = $line; |
1242 | |
1243 | $var =~ s/=/EQUALS/; |
1244 | if ($var =~ /^([a-z]|[A-Z])/) { |
1245 | @options = split(/\s*EQUALS\s*/, $var); |
1246 | $options[1] =~ s/[\n|\r]//g; |
1247 | $options[1] =~ s/\";\s*$//; |
1248 | $options[1] =~ s/;$//; |
1249 | $options[1] =~ s/^\"//; |
1250 | |
1251 | if ($options[0] =~ /^theme\[[0-9]+\]\["PATH"\]/) { |
1252 | $sub = $options[0]; |
1253 | $sub =~ s/\]\["PATH"\]//; |
1254 | $sub =~ s/.*\[//; |
1255 | if (-e "../themes") { |
1256 | $options[1] =~ s/^\.\.\/config/\.\.\/themes/; |
1257 | } |
1258 | $theme_path[$sub] = $options[1]; |
1259 | } elsif ($options[0] =~ /^theme\[[0-9]+\]\["NAME"\]/) { |
1260 | $sub = $options[0]; |
1261 | $sub =~ s/\]\["NAME"\]//; |
1262 | $sub =~ s/.*\[//; |
1263 | $theme_name[$sub] = $options[1]; |
1264 | } elsif ($options[0] =~ /^plugins\[[0-9]+\]/) { |
1265 | $sub = $options[0]; |
1266 | $sub =~ s/\]//; |
1267 | $sub =~ s/^plugins\[//; |
1268 | $plugins[$sub] = $options[1]; |
1269 | } elsif ($options[0] =~ /^ldap_server\[[0-9]+\]/) { |
1270 | $sub = $options[0]; |
1271 | $sub =~ s/\]//; |
1272 | $sub =~ s/^ldap_server\[//; |
1273 | $continue = 0; |
1274 | while (($tmp = <FILE>) && ($continue != 1)) { |
1275 | if ($tmp =~ /\);\s*$/) { |
1276 | $continue = 1; |
1277 | } |
1278 | |
1279 | if ($tmp =~ /^\s*\"host\"/i) { |
1280 | $tmp =~ s/^\s*\"host\"\s*=>\s*\"//i; |
1281 | $tmp =~ s/\",\s*$//; |
1282 | $tmp =~ s/\"\);\s*$//; |
1283 | $host = $tmp; |
1284 | } elsif ($tmp =~ /^\s*\"base\"/i) { |
1285 | $tmp =~ s/^\s*\"base\"\s*=>\s*\"//i; |
1286 | $tmp =~ s/\",\s*$//; |
1287 | $tmp =~ s/\"\);\s*$//; |
1288 | $base = $tmp; |
1289 | } elsif ($tmp =~ /^\s*\"charset\"/i) { |
1290 | $tmp =~ s/^\s*\"charset\"\s*=>\s*\"//i; |
1291 | $tmp =~ s/\",\s*$//; |
1292 | $tmp =~ s/\"\);\s*$//; |
1293 | $charset = $tmp; |
1294 | } elsif ($tmp =~ /^\s*\"port\"/i) { |
1295 | $tmp =~ s/^\s*\"port\"\s*=>\s*\"//i; |
1296 | $tmp =~ s/\",\s*$//; |
1297 | $tmp =~ s/\"\);\s*$//; |
1298 | $port = $tmp; |
1299 | } elsif ($tmp =~ /^\s*\"maxrows\"/i) { |
1300 | $tmp =~ s/^\s*\"maxrows\"\s*=>\s*\"//i; |
1301 | $tmp =~ s/\",\s*$//; |
1302 | $tmp =~ s/\"\);\s*$//; |
1303 | $maxrows = $tmp; |
1304 | } elsif ($tmp =~ /^\s*\"name\"/i) { |
1305 | $tmp =~ s/^\s*\"name\"\s*=>\s*\"//i; |
1306 | $tmp =~ s/\",\s*$//; |
1307 | $tmp =~ s/\"\);\s*$//; |
1308 | $name = $tmp; |
1309 | } |
1310 | } |
1311 | $ldap_host[$sub] = $host; |
1312 | $ldap_base[$sub] = $base; |
1313 | $ldap_name[$sub] = $name; |
1314 | $ldap_port[$sub] = $port; |
1315 | $ldap_maxrows[$sub] = $maxrows; |
1316 | $ldap_charset[$sub] = $charset; |
1317 | } else { |
1318 | ${$options[0]} = $options[1]; |
1319 | } |
1320 | } |
1321 | } |
1322 | } |
1323 | close FILE; |
1324 | if ($useSendmail ne "true") { |
1325 | $useSendmail = "false"; |
1326 | } |
1327 | if (!$sendmail_path) { |
1328 | $sendmail_path = "/usr/sbin/sendmail"; |
1329 | } |
1330 | if (!$default_unseen_notify) { |
1331 | $default_unseen_notify = 2; |
1332 | } |
1333 | if (!$default_unseen_type) { |
1334 | $default_unseen_type = 1; |
1335 | } |
1336 | if (!$config_use_color) { |
1337 | $config_use_color = 1; |
1338 | } |
1339 | if (!$invert_time) { |
1340 | $invert_time = "false"; |
1341 | } |
1342 | if (!$force_username_lowercase) { |
1343 | $force_username_lowercase = "false"; |
1344 | } |
1345 | if (!$optional_delimiter) { |
1346 | $optional_delimiter = "detect"; |
1347 | } |
1348 | if (!$use_authenticated_smtp) { |
1349 | $use_authenticated_smtp = "false"; |
1350 | } |
1351 | if (!$auto_create_special) { |
1352 | $auto_create_special = "false"; |
1353 | } |
1354 | if(!$default_use_priority) { |
1355 | $default_use_priority = "true"; |
1356 | } |
1357 | if(!$hide_sm_attributions) { |
1358 | $hide_sm_attributions = "false"; |
1359 | } |
1360 | |
1361 | ##################################################################################### |
1362 | if ($config_use_color == 1) { |
1363 | $WHT = "\x1B[37;1m"; |
1364 | $NRM = "\x1B[0m"; |
1365 | } else { |
1366 | $WHT = ""; |
1367 | $NRM = ""; |
1368 | $config_use_color = 2; |
1369 | } |
1370 | |
1371 | while (($command ne "q") && ($command ne "Q")) { |
1372 | system "clear"; |
1373 | print $WHT."SquirrelMail Configuration : ".$NRM; |
1374 | if ($config == 1) { print "Read: config.php"; } |
1375 | elsif ($config == 2) { print "Read: config_default.php"; } |
1376 | print "\n"; |
1377 | print "---------------------------------------------------------\n"; |
1378 | |
1379 | if ($menu == 0) { |
1380 | print $WHT."Main Menu --\n".$NRM; |
1381 | print "1. Organization Preferences\n"; |
1382 | print "2. Server Settings\n"; |
1383 | print "3. Folder Defaults\n"; |
1384 | print "4. General Options\n"; |
1385 | print "5. Themes\n"; |
1386 | print "6. Address Books (LDAP)\n"; |
1387 | print "7. Message of the Day (MOTD)\n"; |
1388 | print "8. Plugins\n"; |
1389 | print "\n"; |
1390 | print "D. Set pre-defined settings for specific IMAP servers\n"; |
1391 | print "\n"; |
1392 | } elsif ($menu == 1) { |
1393 | print $WHT."Organization Preferences\n".$NRM; |
1394 | print "1. Organization Name : $WHT$org_name$NRM\n"; |
1395 | print "2. Organization Logo : $WHT$org_logo$NRM\n"; |
1396 | print "3. Organization Title : $WHT$org_title$NRM\n"; |
1397 | print "4. Signout Page : $WHT$signout_page$NRM\n"; |
1398 | print "5. Default Language : $WHT$squirrelmail_default_language$NRM\n"; |
1399 | print "\n"; |
1400 | print "R Return to Main Menu\n"; |
1401 | } elsif ($menu == 2) { |
1402 | print $WHT."Server Settings\n".$NRM; |
1403 | print "1. Domain : $WHT$domain$NRM\n"; |
1404 | print "2. IMAP Server : $WHT$imapServerAddress$NRM\n"; |
1405 | print "3. IMAP Port : $WHT$imapPort$NRM\n"; |
1406 | print "4. Use Sendmail/SMTP : $WHT"; |
1407 | if ($useSendmail eq "true") { |
1408 | print "Sendmail"; |
1409 | } else { |
1410 | print "SMTP"; |
1411 | } |
1412 | print "$NRM\n"; |
1413 | if ($useSendmail eq "true") { |
1414 | print "5. Sendmail Path : $WHT$sendmail_path$NRM\n"; |
1415 | } else { |
1416 | print "6. SMTP Server : $WHT$smtpServerAddress$NRM\n"; |
1417 | print "7. SMTP Port : $WHT$smtpPort$NRM\n"; |
1418 | print "8. Authenticated SMTP : $WHT$use_authenticated_smtp$NRM\n"; |
1419 | } |
1420 | print "9. Server : $WHT$imap_server_type$NRM\n"; |
1421 | print "10. Invert Time : $WHT$invert_time$NRM\n"; |
1422 | print "11. Delimiter : $WHT$optional_delimiter$NRM\n"; |
1423 | print "\n"; |
1424 | print "R Return to Main Menu\n"; |
1425 | } elsif ($menu == 3) { |
1426 | print $WHT."Folder Defaults\n".$NRM; |
1427 | print "1. Default Folder Prefix : $WHT$default_folder_prefix$NRM\n"; |
1428 | print "2. Show Folder Prefix Option : $WHT$show_prefix_option$NRM\n"; |
1429 | print "3. Trash Folder : $WHT$trash_folder$NRM\n"; |
1430 | print "4. Sent Folder : $WHT$sent_folder$NRM\n"; |
1431 | print "5. Drafts Folder : $WHT$draft_folder$NRM\n"; |
1432 | print "6. By default, move to trash : $WHT$default_move_to_trash$NRM\n"; |
1433 | print "7. By default, move to sent : $WHT$default_move_to_sent$NRM\n"; |
1434 | print "8. By default, save as draft : $WHT$default_save_as_draft$NRM\n"; |
1435 | print "9. List Special Folders First : $WHT$list_special_folders_first$NRM\n"; |
1436 | print "10. Show Special Folders Color : $WHT$use_special_folder_color$NRM\n"; |
1437 | print "11. Auto Expunge : $WHT$auto_expunge$NRM\n"; |
1438 | print "12. Default Sub. of INBOX : $WHT$default_sub_of_inbox$NRM\n"; |
1439 | print "13. Show 'Contain Sub.' Option : $WHT$show_contain_subfolders_option$NRM\n"; |
1440 | print "14. Default Unseen Notify : $WHT$default_unseen_notify$NRM\n"; |
1441 | print "15. Default Unseen Type : $WHT$default_unseen_type$NRM\n"; |
1442 | print "16. Auto Create Special Folders : $WHT$auto_create_special$NRM\n"; |
1443 | print "\n"; |
1444 | print "R Return to Main Menu\n"; |
1445 | } elsif ($menu == 4) { |
1446 | print $WHT."General Options\n".$NRM; |
1447 | print "1. Default Charset : $WHT$default_charset$NRM\n"; |
1448 | print "2. Data Directory : $WHT$data_dir$NRM\n"; |
1449 | print "3. Attachment Directory : $WHT$attachment_dir$NRM\n"; |
1450 | print "4. Default Left Size : $WHT$default_left_size$NRM\n"; |
1451 | print "5. Usernames in Lowercase : $WHT$force_username_lowercase$NRM\n"; |
1452 | print "6. Allow use of priority : $WHT$default_use_priority$NRM\n"; |
1453 | print "7. Hide SM attributions : $WHT$hide_sm_attributions$NRM\n"; |
1454 | print "\n"; |
1455 | print "R Return to Main Menu\n"; |
1456 | } elsif ($menu == 5) { |
1457 | print $WHT."Themes\n".$NRM; |
1458 | print "1. Change Themes\n"; |
1459 | for ($count = 0; $count <= $#theme_name; $count++) { |
1460 | print " > $theme_name[$count]\n"; |
1461 | } |
1462 | print "2. CSS File : $WHT$theme_css$NRM\n"; |
1463 | print "\n"; |
1464 | print "R Return to Main Menu\n"; |
1465 | } elsif ($menu == 6) { |
1466 | print $WHT."Address Books (LDAP)\n".$NRM; |
1467 | print "1. Change Servers\n"; |
1468 | for ($count = 0; $count <= $#ldap_host; $count++) { |
1469 | print " > $ldap_host[$count]\n"; |
1470 | } |
1471 | print "2. Use Javascript Address Book Search : $WHT$default_use_javascript_addr_book$NRM\n"; |
1472 | print "\n"; |
1473 | print "R Return to Main Menu\n"; |
1474 | } elsif ($menu == 7) { |
1475 | print $WHT."Message of the Day (MOTD)\n".$NRM; |
1476 | print "\n$motd\n"; |
1477 | print "\n"; |
1478 | print "1 Edit the MOTD\n"; |
1479 | print "\n"; |
1480 | print "R Return to Main Menu\n"; |
1481 | } elsif ($menu == 8) { |
1482 | print $WHT."Plugins\n".$NRM; |
1483 | print " Installed Plugins\n"; |
1484 | $num = 0; |
1485 | for ($count = 0; $count <= $#plugins; $count++) { |
1486 | $num = $count + 1; |
1487 | print " $num. $plugins[$count]\n"; |
1488 | } |
1489 | print "\n Available Plugins:\n"; |
1490 | opendir(DIR, "../plugins"); |
1491 | @files = readdir(DIR); |
1492 | $pos=0; |
1493 | @unused_plugins = (); |
1494 | for ($i=0; $i <= $#files; $i++) { |
1495 | if ( -d "../plugins/" . $files[$i] && |
1496 | $files[$i] !~ /^\./ && $files[$i] ne "CVS") { |
1497 | $match = 0; |
1498 | for ($k=0; $k<=$#plugins; $k++) { |
1499 | if ($plugins[$k] eq $files[$i]) { |
1500 | $match = 1; |
1501 | } |
1502 | } |
1503 | if ($match == 0) { |
1504 | $unused_plugins[$pos] = $files[$i]; |
1505 | $pos++; |
1506 | } |
1507 | } |
1508 | } |
1509 | |
1510 | for ($i=0; $i<=$#unused_plugins; $i++) { |
1511 | $num = $num + 1; |
1512 | print " $num. $unused_plugins[$i]\n"; |
1513 | } |
1514 | closedir DIR; |
1515 | |
1516 | print "\n"; |
1517 | print "A Sanitize all plugins for use with Squirrelmail 1.2\n"; |
1518 | print "\n"; |
1519 | print "R Return to Main Menu\n"; |
1520 | } |
1521 | if ($config_use_color == 1) { |
1522 | print "C. Turn color off\n"; |
1523 | } else { |
1524 | print "C. Turn color on\n"; |
1525 | } |
1526 | print "S Save data\n"; |
1527 | print "Q Quit\n"; |
1528 | |
1529 | print "\n"; |
1530 | print "Command >> ".$WHT; |
1531 | $command = <STDIN>; |
1532 | $command =~ s/[\n|\r]//g; |
1533 | $command =~ tr/A-Z/a-z/; |
1534 | print "$NRM\n"; |
1535 | |
1536 | # Read the commands they entered. |
1537 | if ($command eq "r") { |
1538 | $menu = 0; |
1539 | } elsif ($command eq "s") { |
1540 | save_data (); |
1541 | print "Data saved in config.php\n"; |
1542 | print "Press enter to continue..."; |
1543 | $tmp = <STDIN>; |
1544 | $saved = 1; |
1545 | } elsif (($command eq "q") && ($saved == 0)) { |
1546 | print "You have not saved your data.\n"; |
1547 | print "Save? [".$WHT."Y".$NRM."/n]: "; |
1548 | $save = <STDIN>; |
1549 | if (($save =~ /^y/i) || ($save =~ /^\s*$/)) { |
1550 | save_data (); |
1551 | } |
1552 | } elsif ($command eq "c") { |
1553 | if ($config_use_color == 1) { |
1554 | $config_use_color = 2; |
1555 | $WHT = ""; |
1556 | $NRM = ""; |
1557 | } else { |
1558 | $config_use_color = 1; |
1559 | $WHT = "\x1B[37;1m"; |
1560 | $NRM = "\x1B[0m"; |
1561 | } |
1562 | } elsif ($command eq "d" && $menu == 0) { |
1563 | set_defaults (); |
1564 | } else { |
1565 | $saved = 0; |
1566 | if ($menu == 0) { |
1567 | if (($command > 0) && ($command < 9)) { |
1568 | $menu = $command; |
1569 | } |
1570 | } elsif ($menu == 1) { |
1571 | if ($command == 1) { $org_name = command1 (); } |
1572 | elsif ($command == 2) { $org_logo = command2 (); } |
1573 | elsif ($command == 3) { $org_title = command3 (); } |
1574 | elsif ($command == 4) { $signout_page = command4 (); } |
1575 | elsif ($command == 5) { $squirrelmail_default_language = command5(); } |
1576 | } elsif ($menu == 2) { |
1577 | if ($command == 1) { $domain = command11 (); } |
1578 | elsif ($command == 2) { $imapServerAddress = command12 (); } |
1579 | elsif ($command == 3) { $imapPort = command13 (); } |
1580 | elsif ($command == 4) { $useSendmail = command14 (); } |
1581 | elsif ($command == 5) { $sendmail_path = command15 (); } |
1582 | elsif ($command == 6) { $smtpServerAddress = command16 (); } |
1583 | elsif ($command == 7) { $smtpPort = command17 (); } |
1584 | elsif ($command == 8) { $use_authenticated_smtp = command18 (); } |
1585 | elsif ($command == 9) { $imap_server_type = command19 (); } |
1586 | elsif ($command == 10) { $invert_time = command110 (); } |
1587 | elsif ($command == 11) { $optional_delimiter = command111 (); } |
1588 | } elsif ($menu == 3) { |
1589 | if ($command == 1) { $default_folder_prefix = command21 (); } |
1590 | elsif ($command == 2) { $show_prefix_option = command22 (); } |
1591 | elsif ($command == 3) { $trash_folder = command23a (); } |
1592 | elsif ($command == 4) { $sent_folder = command23b (); } |
1593 | elsif ($command == 5) { $draft_folder = command23c (); } |
1594 | elsif ($command == 6) { $default_move_to_trash = command24a (); } |
1595 | elsif ($command == 7) { $default_move_to_sent = command24b (); } |
1596 | elsif ($command == 8) { $default_save_as_draft = command24c (); } |
1597 | elsif ($command == 9) { $list_special_folders_first = command27 (); } |
1598 | elsif ($command == 10) { $use_special_folder_color = command28 (); } |
1599 | elsif ($command == 11) { $auto_expunge = command29 (); } |
1600 | elsif ($command == 12) { $default_sub_of_inbox = command210(); } |
1601 | elsif ($command == 13) { $show_contain_subfolders_option = command211(); } |
1602 | elsif ($command == 14) { $default_unseen_notify = command212(); } |
1603 | elsif ($command == 15) { $default_unseen_type = command213(); } |
1604 | elsif ($command == 16) { $auto_create_special = command214(); } |
1605 | } elsif ($menu == 4) { |
1606 | if ($command == 1) { $default_charset = command31 (); } |
1607 | elsif ($command == 2) { $data_dir = command33 (); } |
1608 | elsif ($command == 3) { $attachment_dir = command34 (); } |
1609 | elsif ($command == 4) { $default_left_size = command35 (); } |
1610 | elsif ($command == 5) { $force_username_lowercase = command36 (); } |
1611 | elsif ($command == 6) { $default_use_priority = command37 (); } |
1612 | elsif ($command == 7) { $hide_sm_attributions = command38 (); } |
1613 | } elsif ($menu == 5) { |
1614 | if ($command == 1) { command41 (); } |
1615 | elsif ($command == 2) { $theme_css = command42 (); } |
1616 | } elsif ($menu == 6) { |
1617 | if ($command == 1) { command61(); } |
1618 | elsif ($command == 2) { command62(); } |
1619 | } elsif ($menu == 7) { |
1620 | if ($command == 1) { $motd = command71(); } |
1621 | } elsif ($menu == 8) { |
1622 | if ($command =~ /^[0-9]+/) { @plugins = command81(); } |
1623 | elsif ($command eq "a") { command8s(); } |
1624 | } |
1625 | } |
1626 | } |
1627 | |
1628 | #################################################################################### |
1629 | |
1630 | # org_name |
1631 | sub command1 { |
1632 | print "We have tried to make the name SquirrelMail as transparent as\n"; |
1633 | print "possible. If you set up an organization name, most places where\n"; |
1634 | print "SquirrelMail would take credit will be credited to your organization.\n"; |
1635 | print "\n"; |
1636 | print "[$WHT$org_name$NRM]: $WHT"; |
1637 | $new_org_name = <STDIN>; |
1638 | if ($new_org_name eq "\n") { |
1639 | $new_org_name = $org_name; |
1640 | } else { |
1641 | $new_org_name =~ s/[\r|\n]//g; |
1642 | } |
1643 | return $new_org_name; |
1644 | } |
1645 | |
1646 | |
1647 | # org_logo |
1648 | sub command2 { |
1649 | print "Your organization's logo is an image that will be displayed at\n"; |
1650 | print "different times throughout SquirrelMail. This is asking for the\n"; |
1651 | print "literal (/usr/local/squirrelmail/images/logo.jpg) or relative\n"; |
1652 | print "(../images/logo.jpg) path to your logo.\n"; |
1653 | print "\n"; |
1654 | print "[$WHT$org_logo$NRM]: $WHT"; |
1655 | $new_org_logo = <STDIN>; |
1656 | if ($new_org_logo eq "\n") { |
1657 | $new_org_logo = $org_logo; |
1658 | } else { |
1659 | $new_org_logo =~ s/[\r|\n]//g; |
1660 | } |
1661 | return $new_org_logo; |
1662 | } |
1663 | |
1664 | # org_title |
1665 | sub command3 { |
1666 | print "A title is what is displayed at the top of the browser window in\n"; |
1667 | print "the titlebar. Usually this will end up looking something like:\n"; |
1668 | print "\"Netscape: $org_title\"\n"; |
1669 | print "\n"; |
1670 | print "[$WHT$org_title$NRM]: $WHT"; |
1671 | $new_org_title = <STDIN>; |
1672 | if ($new_org_title eq "\n") { |
1673 | $new_org_title = $org_title; |
1674 | } else { |
1675 | $new_org_title =~ s/[\r|\n]//g; |
1676 | } |
1677 | return $new_org_title; |
1678 | } |
1679 | |
1680 | # signout_page |
1681 | sub command4 { |
1682 | print "When users click the Sign Out button they will be logged out and\n"; |
1683 | print "then sent to signout_page. If signout_page is left empty,\n"; |
1684 | print "(hit space and then return) they will be taken, as normal,\n"; |
1685 | print "to the default and rather sparse SquirrelMail signout page.\n"; |
1686 | print "\n"; |
1687 | print "[$WHT$signout_page$NRM]: $WHT"; |
1688 | $new_signout_page = <STDIN>; |
1689 | if ($new_signout_page eq "\n") { |
1690 | $new_signout_page = $signout_page; |
1691 | } else { |
1692 | $new_signout_page =~ s/[\r|\n]//g; |
1693 | $new_signout_page =~ s/^\s+$//g; |
1694 | } |
1695 | return $new_signout_page; |
1696 | } |
1697 | |
1698 | # Default language |
1699 | sub command5 { |
1700 | print "SquirrelMail attempts to set the language in many ways. If it\n"; |
1701 | print "can not figure it out in another way, it will default to this\n"; |
1702 | print "language. Please use the two-letter code for the desired language.\n"; |
1703 | print "\n"; |
1704 | print "[$WHT$squirrelmail_default_language$NRM]: $WHT"; |
1705 | $new_signout_page = <STDIN>; |
1706 | if ($new_signout_page eq "\n") { |
1707 | $new_signout_page = $squirrelmail_default_language; |
1708 | } else { |
1709 | $new_signout_page =~ s/[\r|\n]//g; |
1710 | $new_signout_page =~ s/^\s+$//g; |
1711 | } |
1712 | return $new_signout_page; |
1713 | } |
1714 | |
1715 | #################################################################################### |
1716 | |
1717 | # domain |
1718 | sub command11 { |
1719 | print "The domain name is the suffix at the end of all email messages. If\n"; |
1720 | print "for example, your email address is jdoe\@myorg.com, then your domain\n"; |
1721 | print "would be myorg.com.\n"; |
1722 | print "\n"; |
1723 | print "[$WHT$domain$NRM]: $WHT"; |
1724 | $new_domain = <STDIN>; |
1725 | if ($new_domain eq "\n") { |
1726 | $new_domain = $domain; |
1727 | } else { |
1728 | $new_domain =~ s/[\r|\n]//g; |
1729 | } |
1730 | return $new_domain; |
1731 | } |
1732 | |
1733 | # imapServerAddress |
1734 | sub command12 { |
1735 | print "This is the address where your IMAP server resides.\n"; |
1736 | print "[$WHT$imapServerAddress$NRM]: $WHT"; |
1737 | $new_imapServerAddress = <STDIN>; |
1738 | if ($new_imapServerAddress eq "\n") { |
1739 | $new_imapServerAddress = $imapServerAddress; |
1740 | } else { |
1741 | $new_imapServerAddress =~ s/[\r|\n]//g; |
1742 | } |
1743 | return $new_imapServerAddress; |
1744 | } |
1745 | |
1746 | # imapPort |
1747 | sub command13 { |
1748 | print "This is the port that your IMAP server is on. Usually this is 143.\n"; |
1749 | print "[$WHT$imapPort$NRM]: $WHT"; |
1750 | $new_imapPort = <STDIN>; |
1751 | if ($new_imapPort eq "\n") { |
1752 | $new_imapPort = $imapPort; |
1753 | } else { |
1754 | $new_imapPort =~ s/[\r|\n]//g; |
1755 | } |
1756 | return $new_imapPort; |
1757 | } |
1758 | |
1759 | # useSendmail |
1760 | sub command14 { |
1761 | print "You now need to choose the method that you will use for sending\n"; |
1762 | print "messages in SquirrelMail. You can either connect to an SMTP server\n"; |
1763 | print "or use sendmail directly.\n"; |
1764 | if ($useSendmail eq "true") { |
1765 | $default_value = "1"; |
1766 | } else { |
1767 | $default_value = "2"; |
1768 | } |
1769 | print "\n"; |
1770 | print " 1. Sendmail\n"; |
1771 | print " 2. SMTP\n"; |
1772 | print "Your choice [1/2] [$WHT$default_value$NRM]: $WHT"; |
1773 | $use_sendmail = <STDIN>; |
1774 | if (($use_sendmail =~ /^1\n/i) || (($use_sendmail =~ /^\n/) && ($default_value eq "1"))) { |
1775 | $useSendmail = "true"; |
1776 | } else { |
1777 | $useSendmail = "false"; |
1778 | } |
1779 | return $useSendmail; |
1780 | } |
1781 | |
1782 | # sendmail_path |
1783 | sub command15 { |
1784 | if ($sendmail_path[0] !~ /./) { |
1785 | $sendmail_path = "/usr/sbin/sendmail"; |
1786 | } |
1787 | print "Specify where the sendmail executable is located. Usually /usr/sbin/sendmail\n"; |
1788 | print "[$WHT$sendmail_path$NRM]: $WHT"; |
1789 | $new_sendmail_path = <STDIN>; |
1790 | if ($new_sendmail_path eq "\n") { |
1791 | $new_sendmail_path = $sendmail_path; |
1792 | } else { |
1793 | $new_sendmail_path =~ s/[\r|\n]//g; |
1794 | } |
1795 | return $new_sendmail_path; |
1796 | } |
1797 | |
1798 | # smtpServerAddress |
1799 | sub command16 { |
1800 | print "This is the location of your SMTP server.\n"; |
1801 | print "[$WHT$smtpServerAddress$NRM]: $WHT"; |
1802 | $new_smtpServerAddress = <STDIN>; |
1803 | if ($new_smtpServerAddress eq "\n") { |
1804 | $new_smtpServerAddress = $smtpServerAddress; |
1805 | } else { |
1806 | $new_smtpServerAddress =~ s/[\r|\n]//g; |
1807 | } |
1808 | return $new_smtpServerAddress; |
1809 | } |
1810 | |
1811 | # smtpPort |
1812 | sub command17 { |
1813 | print "This is the port to connect to for SMTP. Usually 25.\n"; |
1814 | print "[$WHT$smtpPort$NRM]: $WHT"; |
1815 | $new_smtpPort = <STDIN>; |
1816 | if ($new_smtpPort eq "\n") { |
1817 | $new_smtpPort = $smtpPort; |
1818 | } else { |
1819 | $new_smtpPort =~ s/[\r|\n]//g; |
1820 | } |
1821 | return $new_smtpPort; |
1822 | } |
1823 | |
1824 | # authenticated server |
1825 | sub command18 { |
1826 | print "Do you wish to use an authenticated SMTP server? Your server must\n"; |
1827 | print "support this in order for SquirrelMail to work with it. We implemented\n"; |
1828 | print "it according to RFC 2554.\n"; |
1829 | |
1830 | $YesNo = 'n'; |
1831 | $YesNo = 'y' if ($use_authenticated_smtp eq "true"); |
1832 | |
1833 | print "Use authenticated SMTP server (y/n) [$WHT$YesNo$NRM]: $WHT"; |
1834 | |
1835 | $new_use_authenticated_smtp = <STDIN>; |
1836 | $new_use_authenticated_smtp =~ tr/yn//cd; |
1837 | return "true" if ($new_use_authenticated_smtp eq "y"); |
1838 | return "false" if ($new_use_authenticated_smtp eq "n"); |
1839 | return $use_authenticated_smtp; |
1840 | } |
1841 | |
1842 | # imap_server_type |
1843 | sub command19 { |
1844 | print "Each IMAP server has its own quirks. As much as we tried to stick\n"; |
1845 | print "to standards, it doesn't help much if the IMAP server doesn't follow\n"; |
1846 | print "the same principles. We have made some work-arounds for some of\n"; |
1847 | print "these servers. If you would like to use them, please select your\n"; |
1848 | print "IMAP server. If you do not wish to use these work-arounds, you can\n"; |
1849 | print "set this to \"other\", and none will be used.\n"; |
1850 | print " cyrus = Cyrus IMAP server\n"; |
1851 | print " uw = University of Washington's IMAP server\n"; |
1852 | print " exchange = Microsoft Exchange IMAP server\n"; |
1853 | print " courier = Courier IMAP server\n"; |
1854 | print " other = Not one of the above servers\n"; |
1855 | print "[$WHT$imap_server_type$NRM]: $WHT"; |
1856 | $new_imap_server_type = <STDIN>; |
1857 | if ($new_imap_server_type eq "\n") { |
1858 | $new_imap_server_type = $imap_server_type; |
1859 | } else { |
1860 | $new_imap_server_type =~ s/[\r|\n]//g; |
1861 | } |
1862 | return $new_imap_server_type; |
1863 | } |
1864 | |
1865 | # invert_time |
1866 | sub command110 { |
1867 | print "Sometimes the date of messages sent is messed up (off by a few hours\n"; |
1868 | print "on some machines). Typically this happens if the system doesn't support\n"; |
1869 | print "tm_gmtoff. It will happen only if your time zone is \"negative\".\n"; |
1870 | print "This most often occurs on Solaris 7 machines in the United States.\n"; |
1871 | print "By default, this is off. It should be kept off unless problems surface\n"; |
1872 | print "about the time that messages are sent.\n"; |
1873 | print " no = Do NOT fix time -- almost always correct\n"; |
1874 | print " yes = Fix the time for this system\n"; |
1875 | |
1876 | $YesNo = 'n'; |
1877 | $YesNo = 'y' if ($invert_time eq "true"); |
1878 | |
1879 | print "Fix the time for this system (y/n) [$WHT$YesNo$NRM]: $WHT"; |
1880 | |
1881 | $new_invert_time = <STDIN>; |
1882 | $new_invert_time =~ tr/yn//cd; |
1883 | return "true" if ($new_invert_time eq "y"); |
1884 | return "false" if ($new_invert_time eq "n"); |
1885 | return $invert_time; |
1886 | } |
1887 | |
1888 | sub command111 { |
1889 | print "This is the delimiter that your IMAP server uses to distinguish between\n"; |
1890 | print "folders. For example, Cyrus uses '.' as the delimiter and a complete\n"; |
1891 | print "folder would look like 'INBOX.Friends.Bob', while UW uses '/' and would\n"; |
1892 | print "look like 'INBOX/Friends/Bob'. Normally this should be left at 'detect'\n"; |
1893 | print "but if you are sure you konw what delimiter your server uses, you can\n"; |
1894 | print "specify it here.\n"; |
1895 | print "\nTo have it autodetect the delimiter, set it to 'detect'.\n\n"; |
1896 | print "[$WHT$optional_delimiter$NRM]: $WHT"; |
1897 | $new_optional_delimiter = <STDIN>; |
1898 | if ($new_optional_delimiter eq "\n") { |
1899 | $new_optional_delimiter = $optional_delimiter; |
1900 | } else { |
1901 | $new_optional_delimiter =~ s/[\r|\n]//g; |
1902 | } |
1903 | return $new_optional_delimiter; |
1904 | } |
1905 | |
1906 | # MOTD |
1907 | sub command71 { |
1908 | print "\nYou can now create the welcome message that is displayed\n"; |
1909 | print "every time a user logs on. You can use HTML or just plain\n"; |
1910 | print "text. If you do not wish to have one, just make it blank.\n\n(Type @ on a blank line to exit)\n"; |
1911 | |
1912 | $new_motd = ""; |
1913 | do { |
1914 | print "] "; |
1915 | $line = <STDIN>; |
1916 | $line =~ s/[\r|\n]//g; |
1917 | if ($line ne "@") { |
1918 | $line =~ s/ /\ \ /g; |
1919 | $line =~ s/\t/\ \ \ \ /g; |
1920 | $line =~ s/$/ /; |
1921 | $line =~ s/\"/\\\"/g; |
1922 | |
1923 | $new_motd = $new_motd . $line; |
1924 | } |
1925 | } while ($line ne "@"); |
1926 | return $new_motd; |
1927 | } |
1928 | |
1929 | ################# PLUGINS ################### |
1930 | |
1931 | sub command81 { |
1932 | $command =~ s/[\s|\n|\r]*//g; |
1933 | if ($command > 0) { |
1934 | $command = $command - 1; |
1935 | if ($command <= $#plugins) { |
1936 | @newplugins = (); |
1937 | $ct=0; |
1938 | while ($ct <= $#plugins) { |
1939 | if ($ct != $command) { |
1940 | @newplugins = (@newplugins, $plugins[$ct]); |
1941 | } |
1942 | $ct++; |
1943 | } |
1944 | @plugins = @newplugins; |
1945 | } elsif ($command <= $#plugins + $#unused_plugins + 1) { |
1946 | $num = $command - $#plugins - 1; |
1947 | @newplugins = @plugins; |
1948 | $ct=0; |
1949 | while ($ct <= $#unused_plugins) { |
1950 | if ($ct == $num) { |
1951 | @newplugins = (@newplugins, $unused_plugins[$ct]); |
1952 | # sanitize the plugin |
1953 | $dir = $unused_plugins[$ct]; |
1954 | `./ri_once.pl ../plugins/$dir`; |
1955 | } |
1956 | $ct++; |
1957 | } |
1958 | @plugins = @newplugins; |
1959 | } |
1960 | } |
1961 | return @plugins; |
1962 | } |
1963 | |
1964 | sub command8s { |
1965 | print "This command will sanitize all plugins for use with\n"; |
1966 | print "Squirrelmail 1.2. That is, it will rewrite some php-\n"; |
1967 | print "constructs that are *incompatible* with the 1.2 design\n"; |
1968 | print "into ones that are *compatible*\n"; |
1969 | print "Do you wish to issue this command [y/N]? "; |
1970 | $ctu = <STDIN>; |
1971 | if ($ctu =~ /^y\n/i) { |
1972 | `./ri_once.pl ../plugins`; |
1973 | } |
1974 | } |
1975 | |
1976 | ################# FOLDERS ################### |
1977 | |
1978 | # default_folder_prefix |
1979 | sub command21 { |
1980 | print "Some IMAP servers (UW, for example) store mail and folders in\n"; |
1981 | print "your user space in a separate subdirectory. This is where you\n"; |
1982 | print "specify what that directory is.\n"; |
1983 | print "\n"; |
1984 | print "EXAMPLE: mail/"; |
1985 | print "\n"; |
1986 | print "NOTE: If you use Cyrus, or some server that would not use this\n"; |
1987 | print " option, you must set this to 'none'.\n"; |
1988 | print "\n"; |
1989 | print "[$WHT$default_folder_prefix$NRM]: $WHT"; |
1990 | $new_default_folder_prefix = <STDIN>; |
1991 | if ($new_default_folder_prefix eq "\n") { |
1992 | $new_default_folder_prefix = $default_folder_prefix; |
1993 | } else { |
1994 | $new_default_folder_prefix =~ s/[\r|\n]//g; |
1995 | } |
1996 | if (($new_default_folder_prefix =~ /^\s*$/) || ($new_default_folder_prefix =~ /none/i)) { |
1997 | $new_default_folder_prefix = ""; |
1998 | } else { |
1999 | $new_default_folder_prefix =~ s/\/*$//g; |
2000 | $new_default_folder_prefix =~ s/$/\//g; |
2001 | } |
2002 | return $new_default_folder_prefix; |
2003 | } |
2004 | |
2005 | # Show Folder Prefix |
2006 | sub command22 { |
2007 | print "It is possible to set up the default folder prefix as a user\n"; |
2008 | print "specific option, where each user can specify what their mail\n"; |
2009 | print "folder is. If you set this to false, they will never see the\n"; |
2010 | print "option, but if it is true, this option will appear in the\n"; |
2011 | print "'options' section.\n"; |
2012 | print "\n"; |
2013 | print "NOTE: You set the default folder prefix in option '1' of this\n"; |
2014 | print " section. That will be the default if the user doesn't\n"; |
2015 | print " specify anything different.\n"; |
2016 | print "\n"; |
2017 | |
2018 | if ($show_prefix_option eq "true") { |
2019 | $default_value = "y"; |
2020 | } else { |
2021 | $default_value = "n"; |
2022 | } |
2023 | print "\n"; |
2024 | print "Show option (y/n) [$WHT$default_value$NRM]: $WHT"; |
2025 | $new_show = <STDIN>; |
2026 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2027 | $show_prefix_option = "true"; |
2028 | } else { |
2029 | $show_prefix_option = "false"; |
2030 | } |
2031 | return $show_prefix_option; |
2032 | } |
2033 | |
2034 | # Trash Folder |
2035 | sub command23a { |
2036 | print "You can now specify where the default trash folder is located.\n"; |
2037 | print "On servers where you do not want this, you can set it to anything\n"; |
2038 | print "and set option 6 to false.\n"; |
2039 | print "\n"; |
2040 | print "This is relative to where the rest of your email is kept. You do\n"; |
2041 | print "not need to worry about their mail directory. If this folder\n"; |
2042 | print "would be ~/mail/trash on the filesystem, you only need to specify\n"; |
2043 | print "that this is 'trash', and be sure to put 'mail/' in option 1.\n"; |
2044 | print "\n"; |
2045 | |
2046 | print "[$WHT$trash_folder$NRM]: $WHT"; |
2047 | $new_trash_folder = <STDIN>; |
2048 | if ($new_trash_folder eq "\n") { |
2049 | $new_trash_folder = $trash_folder; |
2050 | } else { |
2051 | $new_trash_folder =~ s/[\r|\n]//g; |
2052 | } |
2053 | return $new_trash_folder; |
2054 | } |
2055 | |
2056 | # Sent Folder |
2057 | sub command23b { |
2058 | print "This is where messages that are sent will be stored. SquirrelMail\n"; |
2059 | print "by default puts a copy of all outgoing messages in this folder.\n"; |
2060 | print "\n"; |
2061 | print "This is relative to where the rest of your email is kept. You do\n"; |
2062 | print "not need to worry about their mail directory. If this folder\n"; |
2063 | print "would be ~/mail/sent on the filesystem, you only need to specify\n"; |
2064 | print "that this is 'sent', and be sure to put 'mail/' in option 1.\n"; |
2065 | print "\n"; |
2066 | |
2067 | print "[$WHT$sent_folder$NRM]: $WHT"; |
2068 | $new_sent_folder = <STDIN>; |
2069 | if ($new_sent_folder eq "\n") { |
2070 | $new_sent_folder = $sent_folder; |
2071 | } else { |
2072 | $new_sent_folder =~ s/[\r|\n]//g; |
2073 | } |
2074 | return $new_sent_folder; |
2075 | } |
2076 | |
2077 | # Draft Folder |
2078 | sub command23c { |
2079 | print "You can now specify where the default draft folder is located.\n"; |
2080 | print "On servers where you do not want this, you can set it to anything\n"; |
2081 | print "and set option 9 to false.\n"; |
2082 | print "\n"; |
2083 | print "This is relative to where the rest of your email is kept. You do\n"; |
2084 | print "not need to worry about their mail directory. If this folder\n"; |
2085 | print "would be ~/mail/drafts on the filesystem, you only need to specify\n"; |
2086 | print "that this is 'drafts', and be sure to put 'mail/' in option 1.\n"; |
2087 | print "\n"; |
2088 | |
2089 | print "[$WHT$draft_folder$NRM]: $WHT"; |
2090 | $new_draft_folder = <STDIN>; |
2091 | if ($new_draft_folder eq "\n") { |
2092 | $new_draft_folder = $draft_folder; |
2093 | } else { |
2094 | $new_draft_folder =~ s/[\r|\n]//g; |
2095 | } |
2096 | return $new_draft_folder; |
2097 | } |
2098 | |
2099 | # default move to trash |
2100 | sub command24a { |
2101 | print "By default, should messages get moved to the trash folder? You\n"; |
2102 | print "can specify the default trash folder in option 3. If this is set\n"; |
2103 | print "to false, messages will get deleted immediately without moving\n"; |
2104 | print "to the trash folder.\n"; |
2105 | print "\n"; |
2106 | print "Trash folder is currently: $trash_folder\n"; |
2107 | print "\n"; |
2108 | |
2109 | if ($default_move_to_trash eq "true") { |
2110 | $default_value = "y"; |
2111 | } else { |
2112 | $default_value = "n"; |
2113 | } |
2114 | print "By default, move to trash (y/n) [$WHT$default_value$NRM]: $WHT"; |
2115 | $new_show = <STDIN>; |
2116 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2117 | $default_move_to_trash = "true"; |
2118 | } else { |
2119 | $default_move_to_trash = "false"; |
2120 | } |
2121 | return $default_move_to_trash; |
2122 | } |
2123 | |
2124 | # default move to sent |
2125 | sub command24b { |
2126 | print "By default, should messages get moved to the sent folder? You\n"; |
2127 | print "can specify the default sent folder in option 4. If this is set\n"; |
2128 | print "to false, messages will get sent an no copy will be made.\n"; |
2129 | print "\n"; |
2130 | print "Trash folder is currently: $sent_folder\n"; |
2131 | print "\n"; |
2132 | |
2133 | if ($default_move_to_sent eq "true") { |
2134 | $default_value = "y"; |
2135 | } else { |
2136 | $default_value = "n"; |
2137 | } |
2138 | print "By default, move to sent (y/n) [$WHT$default_value$NRM]: $WHT"; |
2139 | $new_show = <STDIN>; |
2140 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2141 | $default_move_to_sent = "true"; |
2142 | } else { |
2143 | $default_move_to_sent = "false"; |
2144 | } |
2145 | return $default_move_to_sent; |
2146 | } |
2147 | |
2148 | # default save as draft |
2149 | sub command24c { |
2150 | print "By default, should the save to draft option be shown? You can\n"; |
2151 | print "specify the default drafts folder in option 5. If this is set\n"; |
2152 | print "to false, users will not be shown the save to draft option.\n"; |
2153 | print "\n"; |
2154 | print "Drafts folder is currently: $draft_folder\n"; |
2155 | print "\n"; |
2156 | |
2157 | if ($default_move_to_draft eq "true") { |
2158 | $default_value = "y"; |
2159 | } else { |
2160 | $default_value = "n"; |
2161 | } |
2162 | print "By default, save as draft (y/n) [$WHT$default_value$NRM]: $WHT"; |
2163 | $new_show = <STDIN>; |
2164 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2165 | $default_save_as_draft = "true"; |
2166 | } else { |
2167 | $default_save_as_draft = "false"; |
2168 | } |
2169 | return $default_save_as_draft; |
2170 | } |
2171 | |
2172 | # List special folders first |
2173 | sub command27 { |
2174 | print "SquirrelMail has what we call 'special folders' that are not\n"; |
2175 | print "manipulated and viewed like normal folders. Some examples of\n"; |
2176 | print "these folders would be INBOX, Trash, Sent, etc. This option\n"; |
2177 | print "Simply asks if you want these folders listed first in the folder\n"; |
2178 | print "listing.\n"; |
2179 | print "\n"; |
2180 | |
2181 | if ($list_special_folders_first eq "true") { |
2182 | $default_value = "y"; |
2183 | } else { |
2184 | $default_value = "n"; |
2185 | } |
2186 | print "\n"; |
2187 | print "List first (y/n) [$WHT$default_value$NRM]: $WHT"; |
2188 | $new_show = <STDIN>; |
2189 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2190 | $list_special_folders_first = "true"; |
2191 | } else { |
2192 | $list_special_folders_first = "false"; |
2193 | } |
2194 | return $list_special_folders_first; |
2195 | } |
2196 | |
2197 | # Show special folders color |
2198 | sub command28 { |
2199 | print "SquirrelMail has what we call 'special folders' that are not\n"; |
2200 | print "manipulated and viewed like normal folders. Some examples of\n"; |
2201 | print "these folders would be INBOX, Trash, Sent, etc. This option\n"; |
2202 | print "wants to know if we should display special folders in a\n"; |
2203 | print "color than the other folders.\n"; |
2204 | print "\n"; |
2205 | |
2206 | if ($use_special_folder_color eq "true") { |
2207 | $default_value = "y"; |
2208 | } else { |
2209 | $default_value = "n"; |
2210 | } |
2211 | print "\n"; |
2212 | print "Show color (y/n) [$WHT$default_value$NRM]: $WHT"; |
2213 | $new_show = <STDIN>; |
2214 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2215 | $use_special_folder_color = "true"; |
2216 | } else { |
2217 | $use_special_folder_color = "false"; |
2218 | } |
2219 | return $use_special_folder_color; |
2220 | } |
2221 | |
2222 | # Auto expunge |
2223 | sub command29 { |
2224 | print "The way that IMAP handles deleting messages is as follows. You\n"; |
2225 | print "mark the message as deleted, and then to 'really' delete it, you\n"; |
2226 | print "expunge it. This option asks if you want to just have messages\n"; |
2227 | print "marked as deleted, or if you want SquirrelMail to expunge the \n"; |
2228 | print "messages too.\n"; |
2229 | print "\n"; |
2230 | |
2231 | if ($auto_expunge eq "true") { |
2232 | $default_value = "y"; |
2233 | } else { |
2234 | $default_value = "n"; |
2235 | } |
2236 | print "Auto expunge (y/n) [$WHT$default_value$NRM]: $WHT"; |
2237 | $new_show = <STDIN>; |
2238 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2239 | $auto_expunge = "true"; |
2240 | } else { |
2241 | $auto_expunge = "false"; |
2242 | } |
2243 | return $auto_expunge; |
2244 | } |
2245 | |
2246 | # Default sub of inbox |
2247 | sub command210 { |
2248 | print "Some IMAP servers (Cyrus) have all folders as subfolders of INBOX.\n"; |
2249 | print "This can cause some confusion in folder creation for users when\n"; |
2250 | print "they try to create folders and don't put it as a subfolder of INBOX\n"; |
2251 | print "and get permission errors. This option asks if you want folders\n"; |
2252 | print "to be subfolders of INBOX by default.\n"; |
2253 | print "\n"; |
2254 | |
2255 | if ($default_sub_of_inbox eq "true") { |
2256 | $default_value = "y"; |
2257 | } else { |
2258 | $default_value = "n"; |
2259 | } |
2260 | print "Default sub of INBOX (y/n) [$WHT$default_value$NRM]: $WHT"; |
2261 | $new_show = <STDIN>; |
2262 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2263 | $default_sub_of_inbox = "true"; |
2264 | } else { |
2265 | $default_sub_of_inbox = "false"; |
2266 | } |
2267 | return $default_sub_of_inbox; |
2268 | } |
2269 | |
2270 | # Show contain subfolder option |
2271 | sub command211 { |
2272 | print "Some IMAP servers (UW) make it so that there are two types of\n"; |
2273 | print "folders. Those that contain messages, and those that contain\n"; |
2274 | print "subfolders. If this is the case for your server, set this to\n"; |
2275 | print "true, and it will ask the user whether the folder they are\n"; |
2276 | print "creating contains subfolders or messages.\n"; |
2277 | print "\n"; |
2278 | |
2279 | if ($show_contain_subfolders_option eq "true") { |
2280 | $default_value = "y"; |
2281 | } else { |
2282 | $default_value = "n"; |
2283 | } |
2284 | print "Show option (y/n) [$WHT$default_value$NRM]: $WHT"; |
2285 | $new_show = <STDIN>; |
2286 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2287 | $show_contain_subfolders_option = "true"; |
2288 | } else { |
2289 | $show_contain_subfolders_option = "false"; |
2290 | } |
2291 | return $show_contain_subfolders_option; |
2292 | } |
2293 | |
2294 | # Default Unseen Notify |
2295 | sub command212 { |
2296 | print "This option specifies where the users will receive notification\n"; |
2297 | print "about unseen messages by default. This is of course an option that\n"; |
2298 | print "can be changed on a user level.\n"; |
2299 | print " 1 = No notification\n"; |
2300 | print " 2 = Only on the INBOX\n"; |
2301 | print " 3 = On all folders\n"; |
2302 | print "\n"; |
2303 | |
2304 | print "Which one should be default (1,2,3)? [$WHT$default_unseen_notify$NRM]: $WHT"; |
2305 | $new_show = <STDIN>; |
2306 | if ($new_show =~ /^[1|2|3]\n/i) { |
2307 | $default_unseen_notify = $new_show; |
2308 | } |
2309 | $default_unseen_notify =~ s/[\r|\n]//g; |
2310 | return $default_unseen_notify; |
2311 | } |
2312 | |
2313 | # Default Unseen Type |
2314 | sub command213 { |
2315 | print "Here you can define the default way that unseen messages will be displayed\n"; |
2316 | print "to the user in the folder listing on the left side.\n"; |
2317 | print " 1 = Only unseen messages (4)\n"; |
2318 | print " 2 = Unseen and Total messages (4/27)\n"; |
2319 | print "\n"; |
2320 | |
2321 | print "Which one should be default (1,2)? [$WHT$default_unseen_type$NRM]: $WHT"; |
2322 | $new_show = <STDIN>; |
2323 | if ($new_show =~ /^[1|2]\n/i) { |
2324 | $default_unseen_type = $new_show; |
2325 | } |
2326 | $default_unseen_type =~ s/[\r|\n]//g; |
2327 | return $default_unseen_type; |
2328 | } |
2329 | |
2330 | # Auto create special folders |
2331 | sub command214 { |
2332 | print "Would you like the Sent, Trash, and Drafts folders to be created\n"; |
2333 | print "automatically print for you when a user logs in? If the user\n"; |
2334 | print "accidentally deletes their special folders, this option will\n"; |
2335 | print "automatically create it again for them.\n"; |
2336 | print "\n"; |
2337 | |
2338 | if ($auto_create_special eq "true") { |
2339 | $default_value = "y"; |
2340 | } else { |
2341 | $default_value = "n"; |
2342 | } |
2343 | print "Auto create special folders? (y/n) [$WHT$default_value$NRM]: $WHT"; |
2344 | $new_show = <STDIN>; |
2345 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2346 | $auto_create_special = "true"; |
2347 | } else { |
2348 | $auto_create_special = "false"; |
2349 | } |
2350 | return $auto_create_special; |
2351 | } |
2352 | |
2353 | |
2354 | ############# GENERAL OPTIONS ##################### |
2355 | |
2356 | # Default Charset |
2357 | sub command31 { |
2358 | print "This option controls what character set is used when sending\n"; |
2359 | print "mail and when sending HTML to the browser. Do not set this\n"; |
2360 | print "to US-ASCII, use ISO-8859-1 instead. For cyrillic, it is best\n"; |
2361 | print "to use KOI8-R, since this implementation is faster than most\n"; |
2362 | print "of the alternatives\n"; |
2363 | print "\n"; |
2364 | |
2365 | print "[$WHT$default_charset$NRM]: $WHT"; |
2366 | $new_default_charset = <STDIN>; |
2367 | if ($new_default_charset eq "\n") { |
2368 | $new_default_charset = $default_charset; |
2369 | } else { |
2370 | $new_default_charset =~ s/[\r|\n]//g; |
2371 | } |
2372 | return $new_default_charset; |
2373 | } |
2374 | |
2375 | # Data directory |
2376 | sub command33 { |
2377 | print "It is a possible security hole to have a writable directory\n"; |
2378 | print "under the web server's root directory (ex: /home/httpd/html).\n"; |
2379 | print "For this reason, it is possible to put the data directory\n"; |
2380 | print "anywhere you would like. The path name can be absolute or\n"; |
2381 | print "relative (to the config directory). It doesn't matter. Here\n"; |
2382 | print "are two examples:\n"; |
2383 | print " Absolute: /usr/local/squirrelmail/data/\n"; |
2384 | print " Relative: ../data/\n"; |
2385 | print "\n"; |
2386 | |
2387 | print "[$WHT$data_dir$NRM]: $WHT"; |
2388 | $new_data_dir = <STDIN>; |
2389 | if ($new_data_dir eq "\n") { |
2390 | $new_data_dir = $data_dir; |
2391 | } else { |
2392 | $new_data_dir =~ s/[\r|\n]//g; |
2393 | } |
2394 | if ($new_data_dir =~ /^\s*$/) { |
2395 | $new_data_dir = ""; |
2396 | } else { |
2397 | $new_data_dir =~ s/\/*$//g; |
2398 | $new_data_dir =~ s/$/\//g; |
2399 | } |
2400 | return $new_data_dir; |
2401 | } |
2402 | |
2403 | # Attachment directory |
2404 | sub command34 { |
2405 | print "Path to directory used for storing attachments while a mail is\n"; |
2406 | print "being sent. There are a few security considerations regarding this\n"; |
2407 | print "directory:\n"; |
2408 | print " 1. It should have the permission 733 (rwx-wx-wx) to make it\n"; |
2409 | print " impossible for a random person with access to the webserver\n"; |
2410 | print " to list files in this directory. Confidential data might\n"; |
2411 | print " be laying around in there.\n"; |
2412 | print " 2. Since the webserver is not able to list the files in the\n"; |
2413 | print " content is also impossible for the webserver to delete files\n"; |
2414 | print " lying around there for too long.\n"; |
2415 | print " 3. It should probably be another directory than the data\n"; |
2416 | print " directory specified in option 3.\n"; |
2417 | print "\n"; |
2418 | |
2419 | print "[$WHT$attachment_dir$NRM]: $WHT"; |
2420 | $new_attachment_dir = <STDIN>; |
2421 | if ($new_attachment_dir eq "\n") { |
2422 | $new_attachment_dir = $attachment_dir; |
2423 | } else { |
2424 | $new_attachment_dir =~ s/[\r|\n]//g; |
2425 | } |
2426 | if ($new_attachment_dir =~ /^\s*$/) { |
2427 | $new_attachment_dir = ""; |
2428 | } else { |
2429 | $new_attachment_dir =~ s/\/*$//g; |
2430 | $new_attachment_dir =~ s/$/\//g; |
2431 | } |
2432 | return $new_attachment_dir; |
2433 | } |
2434 | |
2435 | |
2436 | sub command35 { |
2437 | print "This is the default size (in pixels) of the left folder list.\n"; |
2438 | print "Default is 200, but you can set it to whatever you wish. This\n"; |
2439 | print "is a user preference, so this will only show up as their default.\n"; |
2440 | print "\n"; |
2441 | print "[$WHT$default_left_size$NRM]: $WHT"; |
2442 | $new_default_left_size = <STDIN>; |
2443 | if ($new_default_left_size eq "\n") { |
2444 | $new_default_left_size = $default_left_size; |
2445 | } else { |
2446 | $new_default_left_size =~ s/[\r|\n]//g; |
2447 | } |
2448 | return $new_default_left_size; |
2449 | } |
2450 | |
2451 | |
2452 | sub command36 { |
2453 | print "Some IMAP servers only have lowercase letters in the usernames\n"; |
2454 | print "but they still allow people with uppercase to log in. This\n"; |
2455 | print "causes a problem with the user's preference files. This option\n"; |
2456 | print "transparently changes all usernames to lowercase."; |
2457 | print "\n"; |
2458 | |
2459 | if ($force_username_lowercase eq "true") { |
2460 | $default_value = "y"; |
2461 | } else { |
2462 | $default_value = "n"; |
2463 | } |
2464 | print "Convert usernames to lowercase (y/n) [$WHT$default_value$NRM]: $WHT"; |
2465 | $new_show = <STDIN>; |
2466 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2467 | return "true"; |
2468 | } |
2469 | return "false"; |
2470 | } |
2471 | |
2472 | sub command37 { |
2473 | print ""; |
2474 | print "\n"; |
2475 | |
2476 | if ($default_use_priority eq "true") { |
2477 | $default_value = "y"; |
2478 | } else { |
2479 | $default_value = "n"; |
2480 | } |
2481 | |
2482 | print "Allow users to specify priority of outgoing mail (y/n) [$WHT$default_value$NRM]: $WHT"; |
2483 | $new_show = <STDIN>; |
2484 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2485 | return "true"; |
2486 | } |
2487 | return "false"; |
2488 | } |
2489 | |
2490 | |
2491 | sub command38 { |
2492 | print ""; |
2493 | print "\n"; |
2494 | |
2495 | if ($default_hide_attribution eq "true") { |
2496 | $default_value = "y"; |
2497 | } else { |
2498 | $default_value = "n"; |
2499 | } |
2500 | |
2501 | print "Hide SM attributions (y/n) [$WHT$default_value$NRM]: $WHT"; |
2502 | $new_show = <STDIN>; |
2503 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2504 | return "true"; |
2505 | } |
2506 | return "false"; |
2507 | } |
2508 | |
2509 | |
2510 | sub command41 { |
2511 | print "\nNow we will define the themes that you wish to use. If you have added\n"; |
2512 | print "a theme of your own, just follow the instructions (?) about how to add\n"; |
2513 | print "them. You can also change the default theme.\n"; |
2514 | print "[theme] command (?=help) > "; |
2515 | $input = <STDIN>; |
2516 | $input =~ s/[\r|\n]//g; |
2517 | while ($input ne "d") { |
2518 | if ($input =~ /^\s*l\s*/i) { |
2519 | $count = 0; |
2520 | while ($count <= $#theme_name) { |
2521 | if ($count == $theme_default) { |
2522 | print " *"; |
2523 | } else { |
2524 | print " "; |
2525 | } |
2526 | $name = $theme_name[$count]; |
2527 | $num_spaces = 25 - length($name); |
2528 | for ($i = 0; $i < $num_spaces;$i++) { |
2529 | $name = $name . " "; |
2530 | } |
2531 | |
2532 | print " $count. $name"; |
2533 | print "($theme_path[$count])\n"; |
2534 | |
2535 | $count++; |
2536 | } |
2537 | } elsif ($input =~ /^\s*m\s*[0-9]+/i) { |
2538 | $old_def = $theme_default; |
2539 | $theme_default = $input; |
2540 | $theme_default =~ s/^\s*m\s*//; |
2541 | if (($theme_default > $#theme_name) || ($theme_default < 0)) { |
2542 | print "Cannot set default theme to $theme_default. That theme does not exist.\n"; |
2543 | $theme_default = $old_def; |
2544 | } |
2545 | } elsif ($input =~ /^\s*\+/) { |
2546 | print "What is the name of this theme: "; |
2547 | $name = <STDIN>; |
2548 | $name =~ s/[\r|\n]//g; |
2549 | $theme_name[$#theme_name+1] = $name; |
2550 | print "Be sure to put ../themes/ before the filename.\n"; |
2551 | print "What file is this stored in (ex: ../themes/default_theme.php): "; |
2552 | $name = <STDIN>; |
2553 | $name =~ s/[\r|\n]//g; |
2554 | $theme_path[$#theme_path+1] = $name; |
2555 | } elsif ($input =~ /^\s*-\s*[0-9]?/) { |
2556 | if ($input =~ /[0-9]+\s*$/) { |
2557 | $rem_num = $input; |
2558 | $rem_num =~ s/^\s*-\s*//g; |
2559 | $rem_num =~ s/\s*$//; |
2560 | } else { |
2561 | $rem_num = $#theme_name; |
2562 | } |
2563 | if ($rem_num == $theme_default) { |
2564 | print "You cannot remove the default theme!\n"; |
2565 | } else { |
2566 | $count = 0; |
2567 | @new_theme_name = (); |
2568 | @new_theme_path = (); |
2569 | while ($count <= $#theme_name) { |
2570 | if ($count != $rem_num) { |
2571 | @new_theme_name = (@new_theme_name, $theme_name[$count]); |
2572 | @new_theme_path = (@new_theme_path, $theme_path[$count]); |
2573 | } |
2574 | $count++; |
2575 | } |
2576 | @theme_name = @new_theme_name; |
2577 | @theme_path = @new_theme_path; |
2578 | if ($theme_default > $rem_num) { |
2579 | $theme_default--; |
2580 | } |
2581 | } |
2582 | } elsif ($input =~ /^\s*t\s*/i) { |
2583 | print "\nStarting detection...\n\n"; |
2584 | |
2585 | opendir(DIR, "../themes"); |
2586 | @files = grep { /\.php$/i } readdir(DIR); |
2587 | $cnt = 0; |
2588 | while ($cnt <= $#files) { |
2589 | $filename = "../themes/" . $files[$cnt]; |
2590 | if ($filename ne "../themes/index.php") { |
2591 | $found = 0; |
2592 | for ($x=0; $x <= $#theme_path; $x++) { |
2593 | if ($theme_path[$x] eq $filename) { |
2594 | $found = 1; |
2595 | } |
2596 | } |
2597 | if ($found != 1) { |
2598 | print "** Found theme: $filename\n"; |
2599 | print " What is its name? "; |
2600 | $nm = <STDIN>; |
2601 | $nm =~ s/[\n|\r]//g; |
2602 | $theme_name[$#theme_name+1] = $nm; |
2603 | $theme_path[$#theme_path+1] = $filename; |
2604 | } |
2605 | } |
2606 | $cnt++; |
2607 | } |
2608 | print "\n"; |
2609 | for ($cnt=0; $cnt <= $#theme_path; $cnt++) { |
2610 | $filename = $theme_path[$cnt]; |
2611 | if (! (-e $filename)) { |
2612 | print " Removing $filename (file not found)\n"; |
2613 | $offset = 0; |
2614 | @new_theme_name = (); |
2615 | @new_theme_path = (); |
2616 | for ($x=0; $x < $#theme_path; $x++) { |
2617 | if ($theme_path[$x] eq $filename) { |
2618 | $offset = 1; |
2619 | } |
2620 | if ($offset == 1) { |
2621 | $new_theme_name[$x] = $theme_name[$x+1]; |
2622 | $new_theme_path[$x] = $theme_path[$x+1]; |
2623 | } else { |
2624 | $new_theme_name[$x] = $theme_name[$x]; |
2625 | $new_theme_path[$x] = $theme_path[$x]; |
2626 | } |
2627 | } |
2628 | @theme_name = @new_theme_name; |
2629 | @theme_path = @new_theme_path; |
2630 | } |
2631 | } |
2632 | print "\nDetection complete!\n\n"; |
2633 | |
2634 | closedir DIR; |
2635 | } elsif ($input =~ /^\s*\?\s*/) { |
2636 | print ".-------------------------.\n"; |
2637 | print "| t (detect themes) |\n"; |
2638 | print "| + (add theme) |\n"; |
2639 | print "| - N (remove theme) |\n"; |
2640 | print "| m N (mark default) |\n"; |
2641 | print "| l (list themes) |\n"; |
2642 | print "| d (done) |\n"; |
2643 | print "`-------------------------'\n"; |
2644 | } |
2645 | print "[theme] command (?=help) > "; |
2646 | $input = <STDIN>; |
2647 | $input =~ s/[\r|\n]//g; |
2648 | } |
2649 | } |
2650 | |
2651 | |
2652 | # Theme - CSS file |
2653 | sub command42 { |
2654 | print "You may specify a cascading style-sheet (CSS) file to be included\n"; |
2655 | print "on each html page generated by SquirrelMail. The CSS file is useful\n"; |
2656 | print "for specifying a site-wide font. If you're not familiar with CSS\n"; |
2657 | print "files, leave this blank.\n"; |
2658 | print "\n"; |
2659 | print "To clear out an existing value, just type a space for the input.\n"; |
2660 | print "\n"; |
2661 | print "[$WHT$theme_css$NRM]: $WHT"; |
2662 | $new_theme_css = <STDIN>; |
2663 | if ($new_theme_css eq "\n") { |
2664 | $new_theme_css = $theme_css; |
2665 | } else { |
2666 | $new_theme_css =~ s/[\r|\n]//g; |
2667 | } |
2668 | $new_theme_css =~ s/^\s*//; |
2669 | return $new_theme_css; |
2670 | } |
2671 | |
2672 | |
2673 | sub command61 { |
2674 | print "You can now define different LDAP servers.\n"; |
2675 | print "[ldap] command (?=help) > "; |
2676 | $input = <STDIN>; |
2677 | $input =~ s/[\r|\n]//g; |
2678 | while ($input ne "d") { |
2679 | if ($input =~ /^\s*l\s*/i) { |
2680 | $count = 0; |
2681 | while ($count <= $#ldap_host) { |
2682 | print "$count. $ldap_host[$count]\n"; |
2683 | print " base: $ldap_base[$count]\n"; |
2684 | if ($ldap_charset[$count]) { |
2685 | print " charset: $ldap_charset[$count]\n"; |
2686 | } |
2687 | if ($ldap_port[$count]) { |
2688 | print " port: $ldap_port[$count]\n"; |
2689 | } |
2690 | if ($ldap_name[$count]) { |
2691 | print " name: $ldap_name[$count]\n"; |
2692 | } |
2693 | if ($ldap_maxrows[$count]) { |
2694 | print " maxrows: $ldap_maxrows[$count]\n"; |
2695 | } |
2696 | print "\n"; |
2697 | $count++; |
2698 | } |
2699 | } elsif ($input =~ /^\s*\+/) { |
2700 | $sub = $#ldap_host + 1; |
2701 | |
2702 | print "First, we need to have the hostname or the IP address where\n"; |
2703 | print "this LDAP server resides. Example: ldap.bigfoot.com\n"; |
2704 | print "hostname: "; |
2705 | $name = <STDIN>; |
2706 | $name =~ s/[\r|\n]//g; |
2707 | $ldap_host[$sub] = $name; |
2708 | |
2709 | print "\n"; |
2710 | |
2711 | print "Next, we need the server root (base dn). For this, an empty\n"; |
2712 | print "string is allowed.\n"; |
2713 | print "Example: ou=member_directory,o=netcenter.com\n"; |
2714 | print "base: "; |
2715 | $name = <STDIN>; |
2716 | $name =~ s/[\r|\n]//g; |
2717 | $ldap_base[$sub] = $name; |
2718 | |
2719 | print "\n"; |
2720 | |
2721 | print "This is the TCP/IP port number for the LDAP server. Default\n"; |
2722 | print "port is 389. This is optional. Press ENTER for default.\n"; |
2723 | print "port: "; |
2724 | $name = <STDIN>; |
2725 | $name =~ s/[\r|\n]//g; |
2726 | $ldap_port[$sub] = $name; |
2727 | |
2728 | print "\n"; |
2729 | |
2730 | print "This is the charset for the server. Default is utf-8. This\n"; |
2731 | print "is also optional. Press ENTER for default.\n"; |
2732 | print "charset: "; |
2733 | $name = <STDIN>; |
2734 | $name =~ s/[\r|\n]//g; |
2735 | $ldap_charset[$sub] = $name; |
2736 | |
2737 | print "\n"; |
2738 | |
2739 | print "This is the name for the server, used to tag the results of\n"; |
2740 | print "the search. Default it \"LDAP: hostname\". Press ENTER for default\n"; |
2741 | print "name: "; |
2742 | $name = <STDIN>; |
2743 | $name =~ s/[\r|\n]//g; |
2744 | $ldap_name[$sub] = $name; |
2745 | |
2746 | print "\n"; |
2747 | |
2748 | print "You can specify the maximum number of rows in the search result.\n"; |
2749 | print "Default is unlimited. Press ENTER for default.\n"; |
2750 | print "maxrows: "; |
2751 | $name = <STDIN>; |
2752 | $name =~ s/[\r|\n]//g; |
2753 | $ldap_maxrows[$sub] = $name; |
2754 | |
2755 | print "\n"; |
2756 | |
2757 | } elsif ($input =~ /^\s*-\s*[0-9]?/) { |
2758 | if ($input =~ /[0-9]+\s*$/) { |
2759 | $rem_num = $input; |
2760 | $rem_num =~ s/^\s*-\s*//g; |
2761 | $rem_num =~ s/\s*$//; |
2762 | } else { |
2763 | $rem_num = $#ldap_host; |
2764 | } |
2765 | $count = 0; |
2766 | @new_ldap_host = (); |
2767 | @new_ldap_base = (); |
2768 | @new_ldap_port = (); |
2769 | @new_ldap_name = (); |
2770 | @new_ldap_charset = (); |
2771 | @new_ldap_maxrows = (); |
2772 | while ($count <= $#ldap_host) { |
2773 | if ($count != $rem_num) { |
2774 | @new_ldap_host = (@new_ldap_host, $ldap_host[$count]); |
2775 | @new_ldap_base = (@new_ldap_base, $ldap_base[$count]); |
2776 | @new_ldap_port = (@new_ldap_port, $ldap_port[$count]); |
2777 | @new_ldap_name = (@new_ldap_name, $ldap_name[$count]); |
2778 | @new_ldap_charset = (@new_ldap_charset, $ldap_charset[$count]); |
2779 | @new_ldap_maxrows = (@new_ldap_maxrows, $ldap_maxrows[$count]); |
2780 | } |
2781 | $count++; |
2782 | } |
2783 | @ldap_host = @new_ldap_host; |
2784 | @ldap_base = @new_ldap_base; |
2785 | @ldap_port = @new_ldap_port; |
2786 | @ldap_name = @new_ldap_name; |
2787 | @ldap_charset = @new_ldap_charset; |
2788 | @ldap_maxrows = @new_ldap_maxrows; |
2789 | } elsif ($input =~ /^\s*\?\s*/) { |
2790 | print ".-------------------------.\n"; |
2791 | print "| + (add host) |\n"; |
2792 | print "| - N (remove host) |\n"; |
2793 | print "| l (list hosts) |\n"; |
2794 | print "| d (done) |\n"; |
2795 | print "`-------------------------'\n"; |
2796 | } |
2797 | print "[ldap] command (?=help) > "; |
2798 | $input = <STDIN>; |
2799 | $input =~ s/[\r|\n]//g; |
2800 | } |
2801 | } |
2802 | |
2803 | sub command62 { |
2804 | print "Some of our developers have come up with very good javascript interface\n"; |
2805 | print "for searching through address books, however, our original goals said\n"; |
2806 | print "that we would be 100% HTML. In order to make it possible to use their\n"; |
2807 | print "interface, and yet stick with our goals, we have also written a plain\n"; |
2808 | print "HTML version of the search. Here, you can choose which version to use.\n"; |
2809 | print "\n"; |
2810 | print "This is just the default value. It is also a user option that each\n"; |
2811 | print "user can configure individually\n"; |
2812 | print "\n"; |
2813 | |
2814 | if ($default_use_javascript_addr_book eq "true") { |
2815 | $default_value = "y"; |
2816 | } else { |
2817 | $default_use_javascript_addr_book = "false"; |
2818 | $default_value = "n"; |
2819 | } |
2820 | print "Use javascript version by default (y/n) [$WHT$default_value$NRM]: $WHT"; |
2821 | $new_show = <STDIN>; |
2822 | if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) { |
2823 | $default_use_javascript_addr_book = "true"; |
2824 | } else { |
2825 | $default_use_javascript_addr_book = "false"; |
2826 | } |
2827 | return $default_use_javascript_addr_book; |
2828 | } |
2829 | |
2830 | |
2831 | sub save_data { |
2832 | open (FILE, ">config.php"); |
2833 | |
2834 | print FILE "<?php\n\t/** SquirrelMail configuration\n"; |
2835 | print FILE "\t ** Created using the configure script, conf.pl\n\t **/\n\n"; |
2836 | |
2837 | print FILE "if (defined('config_php'))\n return;\n"; |
2838 | print FILE "define('config_php', true);\n\n"; |
2839 | |
2840 | print FILE "\tglobal \$print_config_version, \$config_version, \$config_use_color;\n"; |
2841 | |
2842 | if ($print_config_version) { |
2843 | print FILE "\t\$config_version = \"$print_config_version\";\n"; |
2844 | } |
2845 | print FILE "\t\$config_use_color = $config_use_color;\n"; |
2846 | print FILE "\n"; |
2847 | |
2848 | print FILE "\tglobal \$org_name, \$org_logo, \$org_title, \$signout_page;\n"; |
2849 | print FILE "\t\$org_name = \"$org_name\";\n"; |
2850 | print FILE "\t\$org_logo = \"$org_logo\";\n"; |
2851 | print FILE "\t\$org_title = \"$org_title\";\n"; |
2852 | print FILE "\t\$signout_page = \"$signout_page\";\n"; |
2853 | |
2854 | print FILE "\n"; |
2855 | |
2856 | print FILE "\tglobal \$domain, \$imapServerAddress, \$imapPort;\n"; |
2857 | print FILE "\tglobal \$useSendmail, \$smtpServerAddress, \$smtpPort;\n"; |
2858 | print FILE "\tglobal \$sendmail_path, \$use_authenticated_smtp, \$imap_server_type;\n"; |
2859 | print FILE "\tglobal \$invert_time, \$optional_delimiter;\n"; |
2860 | print FILE "\t\$domain = \"$domain\";\n"; |
2861 | print FILE "\t\$imapServerAddress = \"$imapServerAddress\";\n"; |
2862 | print FILE "\t\$imapPort = $imapPort;\n"; |
2863 | print FILE "\t\$useSendmail = $useSendmail;\n"; |
2864 | print FILE "\t\$smtpServerAddress = \"$smtpServerAddress\";\n"; |
2865 | |