Compare commits

..

1 Commits
0.9.4 ... 0.9

Author SHA1 Message Date
Michael Kaufmann (d00p)
8d1e4889b3 tagging froxlor-0.9 2010-02-01 10:49:31 +00:00
198 changed files with 6494 additions and 9111 deletions

562
COPYING
View File

@@ -1,281 +1,281 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

126
TODO Normal file
View File

@@ -0,0 +1,126 @@
FIXED 0001282 Homedirs von Dovecot identisch
FIXED 0001283 SysCP creating broken lighttpd config files
FIXED 0001213 APS class_apsinstaller.php on line 510 - error installing different apps
FIXED 0001272 Default Config for libnss incomplete (debian/lenny)
FIXED 0001281 Wrong open_basedir directive
FIXED 0001279 incorrect usage of escapeshellcmd
FIXED 0001269 AWStats RewriteRule is wrong
FIXED 0001277 Apache Redirect => permanent 301
FIXED 0001276 Bind Zones Not Updated on Nameserver Change
FIXED 0001275 Setting up Traffic limit is limited to 999 GB
FIXED 0001273 APS-Installer
FIXED 0001271 cant install the package magento
FIXED 0001270 xinet reltime update mistake
FIXED 0001268 SysCP Funktion: aktualisierung in Real-Time
FIXED 0001267 Domain-Aliases also create a HOST-entry
FIXED 0001266 Lighttpd has a internal limit of regex-hits which limits max amount of domain-aliases
FIXED 0001263 Cosmettic Change
FIXED 0001255 Wrong path to usage statistics under domain settings
FIXED 0001236 the cron doesnt delete user directories
FIXED 0001254 Installation no next button
FIXED 0001253 admin_customers.php line 803 / 804 contain the same
FIXED 0001250 Apache redirect to Umlautdomains does not work
FIXED 0001249 SysCP SVN(!) settings loader doesn't load some settings
FIXED 0001247 tab order problems at email forward mask
FIXED 0001246 wrong variable assigned in /templates/admin/customers/customers_add.tpl
FIXED 0001239 awstats configs get cluttered up after domain deletion
FIXED 0001228 Domain deletion fails
FIXED 0001233 Display errors when amount of FTP or Mail Traffic is larger than HTTP traffic
FIXED 0001122 Field members of table ftp_groups not updated correctly when customer deletes ftp user
FIXED 0001215 php.ini: open_basedir error
FIXED 0001223 Postfix proposed SQL-query in mysql-virtual_alias_maps.cf: use TRIM()
FIXED 0001221 syscp xinet.d - no need to edit /etc/services
FIXED 0001217 SysCP Realtime Support
FIXED 0001209 APS crashs when installing magento
FIXED 0001210 Add start- and endtime to autoresponder
FIXED 0001185 Autoreponder - send mails via sendmail to set correct Return-Path header
FIXED 0001201 Virtualusers conflict with local users when using libnss-mysql
FIXED 0001203 Add check for PHP version and required PHP modules in install script
FIXED 0001013 lighttpd - every customer should have his own php.ini
FIXED 0001113 realtime functionality broken
FIXED 0001080 host of third level gets overridden by second-level when wwwserveralias is not set on lighttpd
FIXED 0001159 serveral errors for lighttpd
FIXED 0001181 lighttpd cronjob config for subdomains is empty
FIXED 0001176 libnss-mysql and conflicting usernames/groups
FIXED 0001154 Wrong configuration set with AWstats an fcgi
FIXED 0001149 Create a Configuration-Option for SPF Records in Zonefiles
FIXED 0001095 lighttpd - redirection - "/" slash is added to end of url
FIXED 0001148 Show info for inactive modifications
FIXED 0001051 include_shell issue in lighttpd 1.4.20
--------------------------------------------------------------------------------------------------------------
WONFIX 0001278 Customer and domain directories are not created
WONTFIX 0001056 Need extra payment methods
WONTFIX 0001262 Currency type modification.
WONTFIX 0001257 Fee is recalculated with current contract data although interval is over
WONTFIX 0001260 2x F5 causes bigger fonts
WONTFIX 0001259 contract-changes optional with cron to the end of the interval
WONTFIX 0001258 Make invoices immediately
WONTFIX 0001252 Backup Cronjob for Customers
WONTFIX 0001248 blog.syscp.org
WONTFIX 0001243 Wrong uid and gid for php-fcgi-starter
WONTIFX 0001241 Patch for facilate customizing syscp
WONTFIX 0001227 Error on fixing invoices with credit notes
WONTFIX 0001039 Additional text field for infos in customers "Contact Data"
WONTFIX 0001187 additional Invoices
WONTFIX 0001059 Billing - Create contract - Filename should contain customername
WONTFIX 0001112 customers should be able to create custom cronjobs
WONTFIX 0001136 Configuration of "dead" mail adresses
WONTFIX 0001134 Allow selection of a default apache page / provide access to syscp
WONTFIX 0001104 Listen Configuration should contain a warning for debian
WONTFIX 0001098 Possibillity to dissable "Catchall" for mails
WONTFIX 0001033 Cron-Tasks: creating of php.ini
--------------------------------------------------------------------------------------------------------------
0001274 Option to mark a Domain as Subdomain possible or not
0001280 deb packet 1.4.2.1-2 fu*ked
0001041 Customer should have access to his webserver logs.
0001261 No e-mail on 90% traffic
0001120 Missing function to calculate the mail traffic
0001244 customer view too wide for 1024x768 resolutions
0001229 subdomains and Own vHost-Settings
0001251 possibility to manage WebDAV config in SysCP
0001042 Webalizer dir should not be deletable
0001245 Password Protect /awstats/ when using awstats and fcgid
0001156 Repairing use of awstats and awstats-icons with fcgi
0001242 When email qouta is enabled, you cannot add more resources to a client.
0001240 Wrong php.ini for subdomains with fastCGI
0001224 APS installer not installing the aps applications properly, such as WordPress and WebCalender
0001017 Proftpd - Quota should be added
0001016 Pureftpd - quota should be added
0001206 crontabs not terminating
0001212 retain form input
0001211 Generated MySQL username too long
0001208 HTML Tags in Support Tickets
0001207 FTP Passw<73>rter mit Umlauten
0001204 php5-suhosin
0001198 More online help wanted
0001189 Autoresponder: support for multiline "From:" headers
0001186 subdomains and php configuration
0001079 Protected dir only works only after a force-reload on lighttpd
0001034 Cron-Tasks: apache-logfiles directory
0001150 Wrong configuration of awstats
0001083 awstats.model.conf.syscp should include awstats.conf
0001152 apache certificate is not generated
0001151 When cronjob generates new dkim files a mail is sent to root
0001005 Force user to add POP3 Account before he can add e-mail adresses
0001142 Default index.html should be placed in a sub-directory of a domain.
0001140 Replace variables in defaut_vhost config
0001138 old db-data is lost when mysqldump is not within open_basedir
0001135 dkim refers to non-existing domainkey entry in DNS zone file.
0001133 Default Configuration doesn't allow Exim4 to forward Mails to the outside world
0001128 More targets for "Write a message" tool
0001131 Add FreeBSD configuration files to the base tarball.
0001130 Wrong number format in e.g. traffic display.
0001129 Allow selection of automatic creation of a webmail.<domain>.<tld>, phpmyadmin. ..., webftp. ...
0001127 Versioning of configuration templates.
0001116 Please add tooltips to adminCP
0001114 Password query for Awstats statistics
0001111 add login for e-mail and ftp users to let them change their own settings
0001109 no mail traffic is shown and calculated without third party module
0001101 Default mail qouta - possibillity to set new accounts to amount of webspace
0001084 Add select box to change special logfile setting on domain edit
0001058 Add id/class attributs in <img> tag (left navigation)
0001043 When creating customer it should also be possible to add domains (merge customer & domain menu)
0001035 PHP-Error-Log | Adminpanel & CronTask
0001010 Send info mail to customer if webspace is exceeded
0001004 Ressources / Domains - Standard subdomains should be separrated from normal Domains
9999999 Write a complete statement about what froxlor is and why we do this (atari)

View File

@@ -77,24 +77,6 @@ return array(
'default' => '',
'save_method' => 'storeSettingField',
),
'panel_adminmail_defname' => array(
'label' => $lng['serversettings']['adminmail_defname'],
'settinggroup' => 'panel',
'varname' => 'adminmail_defname',
'type' => 'string',
'default' => 'Froxlor Administrator',
'save_method' => 'storeSettingField',
),
'panel_adminmail_return' => array(
'label' => $lng['serversettings']['adminmail_return'],
'settinggroup' => 'panel',
'varname' => 'adminmail_return',
'type' => 'string',
'string_type' => 'mail',
'string_emptyallowed' => true,
'default' => '',
'save_method' => 'storeSettingField',
),
'panel_decimal_places' => array(
'label' => $lng['serversettings']['decimal_places'],
'settinggroup' => 'panel',

View File

@@ -54,14 +54,6 @@ return array(
'default' => 900,
'save_method' => 'storeSettingField',
),
'panel_password_min_length' => array(
'label' => $lng['serversettings']['panel_password_min_length'],
'settinggroup' => 'panel',
'varname' => 'password_min_length',
'type' => 'int',
'default' => 0,
'save_method' => 'storeSettingField',
),
'customer_accountprefix' => array(
'label' => $lng['serversettings']['accountprefix'],
'settinggroup' => 'customer',
@@ -103,14 +95,6 @@ return array(
'type' => 'bool',
'default' => false,
'save_method' => 'storeSettingField',
'dependency' => array(
'fieldname' => 'panel_allow_preset_admin',
'fielddata' => array(
'settinggroup' => 'panel',
'varname' => 'allow_preset_admin',
),
'onlyif' => 0
)
),
'panel_allow_preset_admin' => array(
'label' => $lng['serversettings']['allow_password_reset_admin'],
@@ -119,14 +103,6 @@ return array(
'type' => 'bool',
'default' => false,
'save_method' => 'storeSettingField',
'dependency' => array(
'fieldname' => 'panel_allow_preset',
'fielddata' => array(
'settinggroup' => 'panel',
'varname' => 'allow_preset',
),
'onlyif' => 1
)
),
),
),

View File

@@ -58,14 +58,6 @@ return array(
'default' => '',
'save_method' => 'storeSettingHostname',
),
'system_stdsubdomain' => array(
'label' => $lng['serversettings']['stdsubdomainhost'],
'settinggroup' => 'system',
'varname' => 'stdsubdomain',
'type' => 'string',
'default' => '',
'save_method' => 'storeSettingHostname',
),
'system_mysql_access_host' => array(
'label' => $lng['serversettings']['mysql_access_host'],
'settinggroup' => 'system',
@@ -79,7 +71,7 @@ return array(
'label' => $lng['serversettings']['system_realtime_port'],
'settinggroup' => 'system',
'varname' => 'realtime_port',
'type' => (function_exists('socket_create') ? 'int' : 'hidden'),
'type' => 'int',
'int_max' => 65535,
'default' => 0,
'save_method' => 'storeSettingField',
@@ -93,14 +85,6 @@ return array(
'default' => 'html',
'save_method' => 'storeSettingField',
),
'system_store_index_file_subs' => array(
'label' => $lng['serversettings']['system_store_index_file_subs'],
'settinggroup' => 'system',
'varname' => 'store_index_file_subs',
'type' => 'bool',
'default' => true,
'save_method' => 'storeSettingField',
),
'system_httpuser' => array(
'settinggroup' => 'system',
'varname' => 'httpuser',

View File

@@ -40,6 +40,42 @@ return array(
'default' => false,
'save_method' => 'storeSettingField',
),
'system_awstats_domain_file' => array(
'label' => $lng['serversettings']['awstats_domain_file'],
'settinggroup' => 'system',
'varname' => 'awstats_domain_file',
'type' => 'string',
'string_type' => 'dir',
'default' => '/etc/awstats/',
'save_method' => 'storeSettingField',
),
'system_awstats_model_file' => array(
'label' => $lng['serversettings']['awstats_model_file'],
'settinggroup' => 'system',
'varname' => 'awstats_model_file',
'type' => 'string',
'string_type' => 'file',
'default' => '/etc/awstats/awstats.model.conf.syscp',
'save_method' => 'storeSettingField',
),
'system_awstats_path' => array(
'label' => $lng['serversettings']['awstats_path'],
'settinggroup' => 'system',
'varname' => 'awstats_path',
'type' => 'string',
'string_type' => 'dir',
'default' => '/usr/share/awstats/VERSION/webroot/cgi-bin/',
'save_method' => 'storeSettingField',
),
'system_awstats_updateall_command' => array(
'label' => $lng['serversettings']['awstats_updateall_command'],
'settinggroup' => 'system',
'varname' => 'awstats_updateall_command',
'type' => 'string',
'string_type' => 'file',
'default' => '/usr/bin/awstats_updateall.pl',
'save_method' => 'storeSettingField',
),
),
),
),

View File

@@ -28,7 +28,7 @@ return array(
'varname' => 'use_dkim',
'type' => 'bool',
'default' => false,
'save_method' => 'storeSettingFieldInsertBindTask',
'save_method' => 'storeSettingField',
),
'dkim_prefix' => array(
'label' => $lng['dkim']['dkim_prefix'],
@@ -56,63 +56,6 @@ return array(
'default' => 'dkim-keys.conf',
'save_method' => 'storeSettingField',
),
'dkim_algorithm' => array(
'label' => $lng['dkim']['dkim_algorithm'],
'settinggroup' => 'dkim',
'varname' => 'dkim_algorithm',
'type' => 'option',
'default' => 'all',
'option_mode' => 'multiple',
'option_options' => array('all' => 'All', 'sha1' => 'SHA1', 'sha256' => 'SHA256'),
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkim_servicetype' => array(
'label' => $lng['dkim']['dkim_servicetype'],
'settinggroup' => 'dkim',
'varname' => 'dkim_servicetype',
'type' => 'option',
'default' => '0',
'option_mode' => 'one',
'option_options' => array('0' => 'All', '1' => 'E-Mail'),
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkim_keylength' => array(
'label' => $lng['dkim']['dkim_keylength'],
'settinggroup' => 'dkim',
'varname' => 'dkim_keylength',
'type' => 'option',
'default' => '1024',
'option_mode' => 'one',
'option_options' => array('1024' => '1024 Bit', '2048' => '2048 Bit'),
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkim_notes' => array(
'label' => $lng['dkim']['dkim_notes'],
'settinggroup' => 'dkim',
'varname' => 'dkim_notes',
'type' => 'string',
'string_regexp' => '/^[a-z0-9\._]+$/i',
'default' => '',
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkim_add_adsp' => array(
'label' => $lng['dkim']['dkim_add_adsp'],
'settinggroup' => 'dkim',
'varname' => 'dkim_add_adsp',
'type' => 'bool',
'default' => true,
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkim_add_adsppolicy' => array(
'label' => $lng['dkim']['dkim_add_adsppolicy'],
'settinggroup' => 'dkim',
'varname' => 'dkim_add_adsppolicy',
'type' => 'option',
'default' => '1',
'option_mode' => 'one',
'option_options' => array('0' => 'Unknown', '1' => 'All', '2' => 'Discardable'),
'save_method' => 'storeSettingFieldInsertBindTask',
),
'dkimrestart_command' => array(
'label' => $lng['dkim']['dkimrestart_command'],
'settinggroup' => 'dkim',

View File

@@ -154,7 +154,6 @@ if($page == 'admins'
$loginname = validate($_POST['loginname'], 'loginname');
$password = validate($_POST['admin_password'], 'password');
$password = validatePassword($password);
$def_language = validate($_POST['def_language'], 'default language');
$customers = intval_ressource($_POST['customers']);
@@ -561,7 +560,6 @@ if($page == 'admins'
{
if($password != '')
{
$password = validatePassword($password);
$password = md5($password);
}
else

View File

@@ -21,6 +21,7 @@
define('AREA', 'admin');
require ("./lib/init.php");
require ("./lib/class_apsparser.php");
$Id = 0;
if(isset($_GET['id']))$Id = (int)$_GET['id'];

View File

@@ -95,9 +95,9 @@ if($userinfo['change_serversettings'] == '1')
'<VIRTUAL_MAILBOX_BASE>' => $settings['system']['vmail_homedir'],
'<VIRTUAL_UID_MAPS>' => $settings['system']['vmail_uid'],
'<VIRTUAL_GID_MAPS>' => $settings['system']['vmail_gid'],
'<AWSTATS_PATH>' => $settings['system']['awstats_path'],
'<SSLPROTOCOLS>' => ($settings['system']['use_ssl'] == '1') ? 'imaps pop3s' : '',
'<REALTIME_PORT>' => $settings['system']['realtime_port'],
'<CUSTOMER_TMP>' => ($settings['system']['mod_fcgid_tmpdir'] != '') ? makeCorrectDir($settings['system']['mod_fcgid_tmpdir']) : '/tmp/'
'<REALTIME_PORT>' => $settings['system']['realtime_port']
);
$files = '';
$configpage = '';
@@ -110,7 +110,6 @@ if($userinfo['change_serversettings'] == '1')
if(is_array($value))
{
$commands = implode("\n", $value);
$commands = str_replace("\n\n", "\n", $commands);
if($commands != '')
{

View File

@@ -75,6 +75,12 @@ if($page == 'cronjobs'
$description = $lng['crondesc'][$row['desc_lng_key']];
/*
* don't allow deletion of 'froxlor' cronjobs
*/
$vendor_a = explode('/', $row['module']);
$vendor = $vendor_a[0];
eval("\$crons.=\"" . getTemplate("cronjobs/cronjobs_cronjob") . "\";");
$count++;
}
@@ -88,68 +94,21 @@ if($page == 'cronjobs'
elseif($action == 'new')
{
/*
* @TODO later
* @TODO Finish me
*/
}
elseif($action == 'edit'
&& $id != 0)
{
$result = $db->query_first("SELECT * FROM `" . TABLE_PANEL_CRONRUNS . "` WHERE `id`='" . (int)$id . "'");
if ($result['cronfile'] != '')
{
if(isset($_POST['send'])
&& $_POST['send'] == 'send')
{
$isactive = intval($_POST['isactive']);
$interval_value = validate($_POST['interval_value'], 'interval_value', '/^([0-9]+)$/Di', 'stringisempty');
$interval_interval = validate($_POST['interval_interval'], 'interval_interval');
if($isactive != 1)
{
$isactive = 0;
}
$interval = $interval_value.' '.strtoupper($interval_interval);
$db->query("UPDATE `" . TABLE_PANEL_CRONRUNS . "`
SET `isactive` = '".(int)$isactive."',
`interval` = '".$interval."'
WHERE `id` = '" . (int)$id . "'");
redirectTo($filename, Array('page' => $page, 's' => $s));
}
else
{
$isactive = makeyesno('isactive', '1', '0', $result['isactive']);
// interval
$interval_nfo = explode(' ', $result['interval']);
$interval_value = $interval_nfo[0];
$interval_interval = '';
$interval_interval.= makeoption($lng['cronmgmt']['seconds'], 'SECOND', $interval_nfo[1]);
$interval_interval.= makeoption($lng['cronmgmt']['minutes'], 'MINUTE', $interval_nfo[1]);
$interval_interval.= makeoption($lng['cronmgmt']['hours'], 'HOUR', $interval_nfo[1]);
$interval_interval.= makeoption($lng['cronmgmt']['days'], 'DAY', $interval_nfo[1]);
$interval_interval.= makeoption($lng['cronmgmt']['weeks'], 'WEEK', $interval_nfo[1]);
$interval_interval.= makeoption($lng['cronmgmt']['months'], 'MONTH', $interval_nfo[1]);
// end of interval
$change_cronfile = false;
if (substr($result['module'], 0, strpos($result['module'], '/')) != 'froxlor')
{
$change_cronfile = true;
}
eval("echo \"" . getTemplate("cronjobs/cronjob_edit") . "\";");
}
}
/*
* @TODO Finish me
*/
}
elseif($action == 'delete'
&& $id != 0)
{
/*
* @TODO later
* @TODO Finish me
*/
}
}

View File

@@ -379,7 +379,6 @@ if($page == 'customers'
$createstdsubdomain = intval($_POST['createstdsubdomain']);
$password = validate($_POST['customer_password'], 'password');
$password = validatePassword($password);
$sendpassword = intval($_POST['sendpassword']);
$phpenabled = intval($_POST['phpenabled']);
$diskspace = $diskspace * 1024;
@@ -568,16 +567,14 @@ if($page == 'customers'
$htpasswdPassword = crypt($password);
}
$db->query("INSERT INTO `" . TABLE_PANEL_HTPASSWDS . "` " . "(`customerid`, `username`, `password`, `path`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', '" . $db->escape($htpasswdPassword) . "', '" . $db->escape(makeCorrectDir($documentroot . '/webalizer/')) . "')");
$log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added webalizer htpasswd for user '" . $loginname . "'");
if($settings['system']['awstats_enabled'] == '1')
{
$db->query("INSERT INTO `" . TABLE_PANEL_HTPASSWDS . "` " . "(`customerid`, `username`, `password`, `path`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', '" . $db->escape($htpasswdPassword) . "', '" . $db->escape(makeCorrectDir($documentroot . '/awstats/')) . "')");
$log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added awstats htpasswd for user '" . $loginname . "'");
}
else
{
$db->query("INSERT INTO `" . TABLE_PANEL_HTPASSWDS . "` " . "(`customerid`, `username`, `password`, `path`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', '" . $db->escape($htpasswdPassword) . "', '" . $db->escape(makeCorrectDir($documentroot . '/webalizer/')) . "')");
$log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added webalizer htpasswd for user '" . $loginname . "'");
}
inserttask('1');
$result = $db->query("INSERT INTO `" . TABLE_FTP_USERS . "` " . "(`customerid`, `username`, `password`, `homedir`, `login_enabled`, `uid`, `gid`) " . "VALUES ('" . (int)$customerid . "', '" . $db->escape($loginname) . "', ENCRYPT('" . $db->escape($password) . "'), '" . $db->escape($documentroot) . "', 'y', '" . (int)$guid . "', '" . (int)$guid . "')");
@@ -586,18 +583,8 @@ if($page == 'customers'
if($createstdsubdomain == '1')
{
if (isset($settings['system']['stdsubdomain'])
&& $settings['system']['stdsubdomain'] != ''
) {
$_stdsubdomain = $loginname . '.' . $settings['system']['stdsubdomain'];
}
else
{
$_stdsubdomain = $loginname . '.' . $settings['system']['hostname'];
}
$db->query("INSERT INTO `" . TABLE_PANEL_DOMAINS . "` SET " .
"`domain` = '". $db->escape($_stdsubdomain) . "', " .
"`domain` = '". $db->escape($loginname . '.' . $settings['system']['hostname']) . "', " .
"`customerid` = '" . (int)$customerid . "', " .
"`adminid` = '" . (int)$userinfo['adminid'] . "', " .
"`parentdomainid` = '-1', " .
@@ -635,22 +622,23 @@ if($page == 'customers'
$result = $db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` WHERE `adminid`=\'' . (int)$userinfo['adminid'] . '\' AND `language`=\'' . $db->escape($def_language) . '\' AND `templategroup`=\'mails\' AND `varname`=\'createcustomer_mailbody\'');
$mail_body = html_entity_decode(replace_variables((($result['value'] != '') ? $result['value'] : $lng['mails']['createcustomer']['mailbody']), $replace_arr));
$_mailerror = false;
try {
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($email, getCorrectUserSalutation(array('firstname' => $firstname, 'name' => $name, 'company' => $company)));
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $userinfo['email'];
$mail->FromName = $userinfo['name'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($email, getCorrectUserSalutation(array('firstname' => $firstname, 'name' => $name, 'company' => $company)));
if(!$mail->Send())
{
if($mail->ErrorInfo != '')
{
$mailerr_msg = $mail->ErrorInfo;
}
else
{
$mailerr_msg = $email;
}
if ($_mailerror) {
$log->logAction(ADM_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
standard_error('errorsendingmail', $email);
}
@@ -793,18 +781,11 @@ if($page == 'customers'
$mysqls = - 1;
}
if($settings['aps']['aps_active'] == '1')
{
$number_of_aps_packages = intval_ressource($_POST['number_of_aps_packages']);
$number_of_aps_packages = intval_ressource($_POST['number_of_aps_packages']);
if(isset($_POST['number_of_aps_packages_ul']))
{
$number_of_aps_packages = - 1;
}
}
else
if(isset($_POST['number_of_aps_packages_ul']))
{
$number_of_aps_packages = 0;
$number_of_aps_packages = - 1;
}
$createstdsubdomain = intval($_POST['createstdsubdomain']);
@@ -862,7 +843,6 @@ if($page == 'customers'
{
if($password != '')
{
$password = validatePassword($password);
$password = md5($password);
}
else
@@ -878,17 +858,7 @@ if($page == 'customers'
if($createstdsubdomain == '1'
&& $result['standardsubdomain'] == '0')
{
if (isset($settings['system']['stdsubdomain'])
&& $settings['system']['stdsubdomain'] != ''
) {
$_stdsubdomain = $result['loginname'] . '.' . $settings['system']['stdsubdomain'];
}
else
{
$_stdsubdomain = $result['loginname'] . '.' . $settings['system']['hostname'];
}
$db->query("INSERT INTO `" . TABLE_PANEL_DOMAINS . "` " . "(`domain`, `customerid`, `adminid`, `parentdomainid`, `ipandport`, `documentroot`, `zonefile`, `isemaildomain`, `caneditdomain`, `openbasedir`, `safemode`, `speciallogfile`, `specialsettings`) " . "VALUES ('" . $db->escape($_stdsubdomain) . "', '" . (int)$result['customerid'] . "', '" . (int)$userinfo['adminid'] . "', '-1', '" . $db->escape($settings['system']['defaultip']) . "', '" . $db->escape($result['documentroot']) . "', '', '0', '0', '1', '1', '0', '')");
$db->query("INSERT INTO `" . TABLE_PANEL_DOMAINS . "` " . "(`domain`, `customerid`, `adminid`, `parentdomainid`, `ipandport`, `documentroot`, `zonefile`, `isemaildomain`, `caneditdomain`, `openbasedir`, `safemode`, `speciallogfile`, `specialsettings`) " . "VALUES ('" . $db->escape($result['loginname'] . '.' . $settings['system']['hostname']) . "', '" . (int)$result['customerid'] . "', '" . (int)$userinfo['adminid'] . "', '-1', '" . $db->escape($settings['system']['defaultip']) . "', '" . $db->escape($result['documentroot']) . "', '', '0', '0', '1', '1', '0', '')");
$domainid = $db->insert_id();
$db->query('UPDATE `' . TABLE_PANEL_CUSTOMERS . '` SET `standardsubdomain`=\'' . (int)$domainid . '\' WHERE `customerid`=\'' . (int)$result['customerid'] . '\'');
$log->logAction(ADM_ACTION, LOG_NOTICE, "automatically added standardsubdomain for user '" . $result['loginname'] . "'");

View File

@@ -570,6 +570,8 @@ if($page == 'domains'
$ssl_ipsandports.= makeoption($row_ssl_ipandport['ip'] . ':' . $row_ssl_ipandport['port'], $row_ssl_ipandport['id'], $settings['system']['defaultip']);
}
$ssl = makeyesno('ssl', '1', '0', $result['ssl']);
$ssl_redirect = makeyesno('ssl_redirect', '1', '0', $result['ssl_redirect']);
$standardsubdomains = array();
$result_standardsubdomains = $db->query('SELECT `id` FROM `' . TABLE_PANEL_DOMAINS . '` `d`, `' . TABLE_PANEL_CUSTOMERS . '` `c` WHERE `d`.`id`=`c`.`standardsubdomain`');
@@ -613,8 +615,6 @@ if($page == 'domains'
$openbasedir = makeyesno('openbasedir', '1', '0', '1');
$safemode = makeyesno('safemode', '1', '0', '1');
$speciallogfile = makeyesno('speciallogfile', '1', '0', '0');
$ssl = makeyesno('ssl', '1', '0', '0');
$ssl_redirect = makeyesno('ssl_redirect', '1', '0', '0');
$add_date = date('Y-m-d');
eval("echo \"" . getTemplate("domains/domains_add") . "\";");
@@ -624,11 +624,7 @@ if($page == 'domains'
elseif($action == 'edit'
&& $id != 0)
{
$result = $db->query_first("SELECT `d`.*, `c`.`customerid` FROM `" . TABLE_PANEL_DOMAINS . "` `d`
LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`)
WHERE `d`.`parentdomainid`='0'
AND `d`.`id`='" . (int)$id . "'"
. ($userinfo['customers_see_all'] ? '' : " AND `d`.`adminid` = '" . (int)$userinfo['adminid'] . "' "));
$result = $db->query_first("SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`adminid`, `d`.`email_only`, `d`.`documentroot`, `d`.`ssl`, `d`.`ssl_redirect`, `d`.`ssl_ipandport`,`d`.`ipandport`, `d`.`aliasdomain`, `d`.`isbinddomain`, `d`.`isemaildomain`, `d`.`subcanemaildomain`, `d`.`dkim`, `d`.`caneditdomain`, `d`.`zonefile`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `d`.`add_date`, `d`.`registration_date`, `c`.`loginname`, `c`.`name`, `c`.`firstname`, `c`.`company`, `d`.`phpsettingid`, `d`.`mod_fcgid_starter`, `d`.`mod_fcgid_maxrequests` " . "FROM `" . TABLE_PANEL_DOMAINS . "` `d` " . "LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) " . "WHERE `d`.`parentdomainid`='0' AND `d`.`id`='" . (int)$id . "'" . ($userinfo['customers_see_all'] ? '' : " AND `d`.`adminid` = '" . (int)$userinfo['adminid'] . "' "));
if($result['domain'] != '')
{

View File

@@ -84,38 +84,26 @@ if($page == 'overview')
$webserverinterface = strtoupper(@php_sapi_name());
if((isset($_GET['lookfornewversion']) && $_GET['lookfornewversion'] == 'yes')
|| (isset($lookfornewversion) && $lookfornewversion == 'yes'))
|| (isset($lookfornewversion) && $lookfornewversion == 'yes'))
{
$update_check_uri = 'http://version.froxlor.org/Froxlor/legacy/' . $version;
if(ini_get('allow_url_fopen'))
if(strtolower(ini_get('allow_url_fopen')) == 'on')
{
$latestversion = @file($update_check_uri);
if (isset($latestversion[0]))
$latestversion = explode(':', $latestversion);
if(is_array($latestversion)
&& count($latestversion) >= 2)
{
$latestversion = explode('|', $latestversion[0]);
if(is_array($latestversion)
&& count($latestversion) >= 1)
$lookfornewversion_lable = $latestversion[0];
$lookfornewversion_link = $latestversion[1];
$lookfornewversion_addinfo = '';
if(count($latestversion) >= 3)
{
$_version = $latestversion[0];
$_message = $latestversion[1];
$_link = isset($latestversion[2]) ? $latestversion[2] : htmlspecialchars($filename . '?s=' . urlencode($s) . '&page=' . urlencode($page) . '&lookfornewversion=yes');
$lookfornewversion_lable = $_version;
$lookfornewversion_link = $_link;
$lookfornewversion_addinfo = $_message;
if (version_compare($version, $_version) == -1) {
$isnewerversion = 1;
} else {
$isnewerversion = 0;
}
}
else
{
redirectTo($update_check_uri.'/pretty', NULL);
$lookfornewversion_addinfo = $latestversion[2];
}
}
else
@@ -133,7 +121,6 @@ if($page == 'overview')
$lookfornewversion_lable = $lng['admin']['lookfornewversion']['clickhere'];
$lookfornewversion_link = htmlspecialchars($filename . '?s=' . urlencode($s) . '&page=' . urlencode($page) . '&lookfornewversion=yes');
$lookfornewversion_addinfo = '';
$isnewerversion = 0;
}
$userinfo['diskspace'] = round($userinfo['diskspace'] / 1024, $settings['panel']['decimal_places']);
@@ -190,8 +177,8 @@ if($page == 'overview')
$uptime_array = explode(" ", @file_get_contents("/proc/uptime"));
if(is_array($uptime_array)
&& isset($uptime_array[0])
&& is_numeric($uptime_array[0]))
&& isset($uptime_array[0])
&& is_numeric($uptime_array[0]))
{
// Some calculatioon to get a nicly formatted display
@@ -220,7 +207,7 @@ if($page == 'overview')
elseif($page == 'change_password')
{
if(isset($_POST['send'])
&& $_POST['send'] == 'send')
&& $_POST['send'] == 'send')
{
$old_password = validate($_POST['old_password'], 'old password');
@@ -264,7 +251,7 @@ elseif($page == 'change_password')
elseif($page == 'change_language')
{
if(isset($_POST['send'])
&& $_POST['send'] == 'send')
&& $_POST['send'] == 'send')
{
$def_language = validate($_POST['def_language'], 'default language');

View File

@@ -47,7 +47,7 @@ if($page == 'message')
&& $userinfo['customers_see_all'] == '1')
{
$log->logAction(ADM_ACTION, LOG_NOTICE, "sending messages to admins");
$result = $db->query('SELECT `name`, `email` FROM `' . TABLE_PANEL_ADMINS . "`");
$result = $db->query('SELECT `firstname`, `name`, `email` FROM `' . TABLE_PANEL_ADMINS . "`");
}
elseif($_POST['receipient'] == 1)
{
@@ -78,9 +78,9 @@ if($page == 'message')
while($row = $db->fetch_array($result))
{
$mail->AddAddress($row['email'], (isset($row['firstname']) ? $row['firstname'] . ' ' : '') . $row['name']);
$mail->AddAddress($row['email'], $row['firstname'] . ' ' . $row['name']);
$mail->From = $userinfo['email'];
$mail->FromName = (isset($userinfo['firstname']) ? $userinfo['firstname'] . ' ' : '') . $userinfo['name'];
$mail->FromName = $userinfo['firstname'] . ' ' . $userinfo['name'];
if(!$mail->Send())
{

View File

@@ -742,7 +742,6 @@ elseif($page == 'archive'
$ticket_replies = '';
$mainticket = ticket::getInstanceOf($userinfo, $db, $settings, (int)$id);
$lastchange = date("d.m.Y H:i\h", $mainticket->Get('lastchange'));
$dt = date("d.m.Y H:i\h", $mainticket->Get('dt'));
$status = ticket::getStatusText($lng, $mainticket->Get('status'));
$isclosed = 1;

View File

@@ -21,53 +21,20 @@ require ("./lib/init.php");
if($page == 'overview')
{
$log->logAction(ADM_ACTION, LOG_NOTICE, "viewed admin_updates");
/**
* this is a dirty hack but syscp 1.4.2.1 does not
* has any version/dbversion in the database (don't know why)
* so we have to set them both to run a correct upgrade
*/
if (!isFroxlor()) {
if (!isset($settings['panel']['version'])
|| $settings['panel']['version'] == ''
) {
$settings['panel']['version'] = '1.4.2.1';
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel','version','".$settings['panel']['version']."')");
}
if (!isset($settings['system']['dbversion'])
|| $settings['system']['dbversion'] == ''
) {
/**
* for syscp-stable (1.4.2.1) this value has to be 0
* so the required table-fields are added correctly
* and the svn-version has its value in the database
* -> bug #54
*/
$result = $db->query_first("SELECT `value` FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `varname` = 'dbversion'");
if(isset($result['value']))
{
$settings['system']['dbversion'] = (int)$result['value'];
} else {
$settings['system']['dbversion'] = 0;
}
}
}
if(hasUpdates($version))
{
if(isset($_POST['send'])
&& $_POST['send'] == 'send')
{
eval("echo \"" . getTemplate("update/update_start") . "\";");
include_once('./install/updatesql.php');
$redirect_url = 'admin_index.php';
eval("echo \"" . getTemplate("update/update_end") . "\";");
updateCounters();
inserttask('1');
@chmod('./lib/userdata.inc.php', 0440);
@@ -76,19 +43,19 @@ if($page == 'overview')
{
$current_version = $settings['panel']['version'];
$new_version = $version;
$ui_text = $lng['update']['update_information'];
$ui_text = str_replace('%curversion', $current_version, $ui_text);
$ui_text = str_replace('%newversion', $new_version, $ui_text);
$update_information = $ui_text;
eval("echo \"" . getTemplate("update/index") . "\";");
}
}
else
{
/*
* @TODO version-webcheck check here
* @TODO version-webcheck check here
*/
$success_message = $lng['update']['noupdatesavail'];
@@ -96,5 +63,5 @@ if($page == 'overview')
eval("echo \"" . getTemplate("update/noupdatesavail") . "\";");
}
}
?>

View File

@@ -21,6 +21,7 @@
define('AREA', 'customer');
require ("./lib/init.php");
require ("./lib/class_apsparser.php");
$Id = 0;
if(isset($_GET['id']))$Id = (int)$_GET['id'];

View File

@@ -125,11 +125,6 @@ elseif($page == 'domains')
if($paging->checkDisplay($i))
{
$row = htmlentities_array($domain_array[$sortkey]);
if($settings['system']['awstats_enabled'] == '1') {
$statsapp = 'awstats/'.$row['domain'].'/';
} else {
$statsapp = 'webalizer';
}
eval("\$domains.=\"" . getTemplate("domains/domains_delimiter") . "\";");
if($paging->sortfield == 'd.domain'
@@ -291,31 +286,7 @@ elseif($page == 'domains')
}
else
{
// get the phpsettingid from parentdomain, #107
$phpsid_result = $db->query_first("SELECT `phpsettingid` FROM `".TABLE_PANEL_DOMAINS."` WHERE `id` = '".(int)$domain_check['id']."'");
if(!isset($phpsid_result['phpsettingid'])
|| (int)$phpsid_result['phpsettingid'] <= 0
) {
// assign default config
$phpsid_result['phpsettingid'] = 1;
}
$result = $db->query("INSERT INTO `" . TABLE_PANEL_DOMAINS . "` SET
`customerid` = '" . (int)$userinfo['customerid'] . "',
`domain` = '" . $db->escape($completedomain) . "',
`documentroot` = '" . $db->escape($path) . "',
`ipandport` = '" . $db->escape($domain_check['ipandport']) . "',
`aliasdomain` = ".(($aliasdomain != 0) ? "'" . $db->escape($aliasdomain) . "'" : "NULL") .",
`parentdomainid` = '" . (int)$domain_check['id'] . "',
`isemaildomain` = '" . ($domain_check['subcanemaildomain'] == '3' ? '1' : '0') . "',
`openbasedir` = '" . $db->escape($domain_check['openbasedir']) . "',
`openbasedir_path` = '" . $db->escape($openbasedir_path) . "',
`safemode` = '" . $db->escape($domain_check['safemode']) . "',
`speciallogfile` = '" . $db->escape($domain_check['speciallogfile']) . "',
`specialsettings` = '" . $db->escape($domain_check['specialsettings']) . "',
`ssl_redirect` = '" . $ssl_redirect . "',
`phpsettingid` = '" . $phpsid_result['phpsettingid'] . "'");
$result = $db->query("INSERT INTO `" . TABLE_PANEL_DOMAINS . "` (`customerid`, `domain`, `documentroot`, `ipandport`, `aliasdomain`, `parentdomainid`, `isemaildomain`, `openbasedir`, `openbasedir_path`, `safemode`, `speciallogfile`, `specialsettings`, `ssl_redirect`) VALUES ('" . (int)$userinfo['customerid'] . "', '" . $db->escape($completedomain) . "', '" . $db->escape($path) . "', '" . $db->escape($domain_check['ipandport']) . "', " . (($aliasdomain != 0) ? "'" . $db->escape($aliasdomain) . "'" : "NULL") . ", '" . (int)$domain_check['id'] . "', '" . ($domain_check['subcanemaildomain'] == '3' ? '1' : '0') . "', '" . $db->escape($domain_check['openbasedir']) . "', '" . $db->escape($openbasedir_path) . "', '" . $db->escape($domain_check['safemode']) . "', '" . $db->escape($domain_check['speciallogfile']) . "', '" . $db->escape($domain_check['specialsettings']) . "', '" . $ssl_redirect . "')");
$result = $db->query("UPDATE `" . TABLE_PANEL_CUSTOMERS . "` SET `subdomains_used`=`subdomains_used`+1 WHERE `customerid`='" . (int)$userinfo['customerid'] . "'");
$log->logAction(USR_ACTION, LOG_INFO, "added subdomain '" . $completedomain . "'");
inserttask('1');
@@ -468,9 +439,9 @@ elseif($page == 'domains')
|| $ssl_redirect != $result['ssl_redirect'])
{
$log->logAction(USR_ACTION, LOG_INFO, "edited domain '" . $idna_convert->decode($result['domain']) . "'");
$result = $db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `documentroot`='" . $db->escape($path) . "', `isemaildomain`='" . (int)$isemaildomain . "', `iswildcarddomain`='" . (int)$iswildcarddomain . "', `aliasdomain`=" . (($aliasdomain != 0 && $alias_check == 0) ? '\'' . $db->escape($aliasdomain) . '\'' : 'NULL') . ",`openbasedir_path`='" . $db->escape($openbasedir_path) . "', `ssl_redirect`='" . $ssl_redirect . "' WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'");
inserttask('1');
inserttask('4');
$result = $db->query("UPDATE `" . TABLE_PANEL_DOMAINS . "` SET `documentroot`='" . $db->escape($path) . "', `isemaildomain`='" . (int)$isemaildomain . "', `iswildcarddomain`='" . (int)$iswildcarddomain . "', `aliasdomain`=" . (($aliasdomain != 0 && $alias_check == 0) ? '\'' . $db->escape($aliasdomain) . '\'' : 'NULL') . ",`openbasedir_path`='" . $db->escape($openbasedir_path) . "', `ssl_redirect`='" . $ssl_redirect . "' WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$id . "'");
}
redirectTo($filename, Array('page' => $page, 's' => $s));

View File

@@ -372,7 +372,6 @@ elseif($page == 'accounts')
$email_full = $result['email_full'];
$username = $idna_convert->decode($email_full);
$password = validate($_POST['email_password'], 'password');
$password = validatePassword($password);
if($settings['panel']['sendalternativemail'] == 1)
{
@@ -428,24 +427,23 @@ elseif($page == 'accounts')
$mail_subject = html_entity_decode(replace_variables((($result['value'] != '') ? $result['value'] : $lng['mails']['pop_success']['subject']), $replace_arr));
$result = $db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` WHERE `adminid`=\'' . (int)$userinfo['adminid'] . '\' AND `language`=\'' . $db->escape($userinfo['def_language']) . '\' AND `templategroup`=\'mails\' AND `varname`=\'pop_success_mailbody\'');
$mail_body = html_entity_decode(replace_variables((($result['value'] != '') ? $result['value'] : $lng['mails']['pop_success']['mailbody']), $replace_arr));
$_mailerror = false;
try {
$mail->SetFrom($admin['email'], getCorrectUserSalutation($admin));
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($email_full, getCorrectUserSalutation($userinfo));
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $admin['email'];
$mail->FromName = getCorrectUserSalutation($admin);
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($email_full, getCorrectUserSalutation($userinfo));
if(!$mail->Send())
{
if($mail->ErrorInfo != '')
{
$mailerr_msg = $mail->ErrorInfo;
}
else
{
$mailerr_msg = $email;
}
if ($_mailerror) {
$log->logAction(USR_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
standard_error('errorsendingmail', $email);
}
@@ -459,24 +457,23 @@ elseif($page == 'accounts')
$mail_subject = replace_variables((($result['value'] != '') ? $result['value'] : $lng['mails']['pop_success_alternative']['subject']), $replace_arr);
$result = $db->query_first('SELECT `value` FROM `' . TABLE_PANEL_TEMPLATES . '` WHERE `adminid`=\'' . (int)$userinfo['adminid'] . '\' AND `language`=\'' . $db->escape($userinfo['def_language']) . '\' AND `templategroup`=\'mails\' AND `varname`=\'pop_success_alternative_mailbody\'');
$mail_body = replace_variables((($result['value'] != '') ? $result['value'] : $lng['mails']['pop_success_alternative']['mailbody']), $replace_arr);
$_mailerror = false;
try {
$mail->SetFrom($admin['email'], getCorrectUserSalutation($admin));
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($idna_convert->encode($alternative_email), getCorrectUserSalutation($userinfo));
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
if ($_mailerror) {
$mail->From = $admin['email'];
$mail->FromName = getCorrectUserSalutation($admin);
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($idna_convert->encode($alternative_email), getCorrectUserSalutation($userinfo));
if(!$mail->Send())
{
if($mail->ErrorInfo != '')
{
$mailerr_msg = $mail->ErrorInfo;
}
else
{
$mailerr_msg = $alternative_email;
}
$log->logAction(USR_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
standard_error(array('errorsendingmail', $alternative_email));
}
@@ -519,12 +516,12 @@ elseif($page == 'accounts')
standard_error(array('stringisempty', 'mypassword'));
exit;
}
$password = validatePassword($password);
$log->logAction(USR_ACTION, LOG_NOTICE, "changed email password for '" . $result['email_full'] . "'");
$result = $db->query("UPDATE `" . TABLE_MAIL_USERS . "` SET " . ($settings['system']['mailpwcleartext'] == '1' ? "`password` = '" . $db->escape($password) . "', " : '') . " `password_enc`=ENCRYPT('" . $db->escape($password) . "') WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$result['popaccountid'] . "'");
redirectTo($filename, Array('page' => 'emails', 'action' => 'edit', 'id' => $id, 's' => $s));
else
{
$log->logAction(USR_ACTION, LOG_NOTICE, "changed email password for '" . $result['email_full'] . "'");
$result = $db->query("UPDATE `" . TABLE_MAIL_USERS . "` SET " . ($settings['system']['mailpwcleartext'] == '1' ? "`password` = '" . $db->escape($password) . "', " : '') . " `password_enc`=ENCRYPT('" . $db->escape($password) . "') WHERE `customerid`='" . (int)$userinfo['customerid'] . "' AND `id`='" . (int)$result['popaccountid'] . "'");
redirectTo($filename, Array('page' => 'emails', 'action' => 'edit', 'id' => $id, 's' => $s));
}
}
else
{

View File

@@ -135,7 +135,6 @@ elseif($page == 'accounts')
{
$path = validate($_POST['path'], 'path');
$password = validate($_POST['ftp_password'], 'password');
$password = validatePassword($password);
if($settings['customer']['ftpatdomain'] == '1')
{

View File

@@ -23,7 +23,6 @@ define('AREA', 'customer');
* Include our init.php, which manages Sessions, Language etc.
*/
$need_db_sql_data = true;
$need_root_db_sql_data = true;
require ("./lib/init.php");
@@ -139,7 +138,6 @@ elseif($page == 'mysqls')
&& $_POST['send'] == 'send')
{
$password = validate($_POST['mysql_password'], 'password');
$password = validatePassword($password);
if($password == '')
{
@@ -220,7 +218,6 @@ elseif($page == 'mysqls')
// Only change Password if it is set, do nothing if it is empty! -- PH 2004-11-29
$password = validate($_POST['mysql_password'], 'password');
$password = validatePassword($password);
if($password != '')
{

View File

@@ -75,8 +75,7 @@ if(!is_null($month)
WHERE `customerid`='" . $userinfo['customerid'] . "'
AND `month` = '" . $month . "'
AND `year` = '" . $year . "'");
$row = mysql_fetch_row($result);
rsort($row);
rsort($row = mysql_fetch_row($result));
$traf['max'] = ($row[0] > $row[1] ? ($row[0] > $row[2] ? $row[0] : $row[2]) : ($row[1] > $row[2] ? $row[1] : $row[2]));;
$result = $db->query("SELECT
SUM(`http`) as 'http', SUM(`ftp_up`) AS 'ftp_up', SUM(`ftp_down`) as 'ftp_down', SUM(`mail`) as 'mail',
@@ -174,13 +173,17 @@ if(!is_null($month)
}
else
{
$result = $db->query("SELECT MAX(`http`), MAX(`ftp_up`+`ftp_down`), MAX(`mail`)
FROM `" . TABLE_PANEL_TRAFFIC . "`
WHERE `customerid`='" . $userinfo['customerid'] . "'
GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12");
$row = mysql_fetch_row($result);
rsort($row);
$traf['max'] = ($row[0] > $row[1] ? ($row[0] > $row[2] ? $row[0] : $row[2]) : ($row[1] > $row[2] ? $row[1] : $row[2]));
$result = $db->query("(SELECT SUM(`http`) as sum FROM `" . TABLE_PANEL_TRAFFIC . "`
WHERE `customerid` = '" . $userinfo['customerid'] . "'
GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12) UNION
(SELECT SUM(`ftp_up`+`ftp_down`) FROM `" . TABLE_PANEL_TRAFFIC . "`
WHERE `customerid` = '" . $userinfo['customerid'] . "'
GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12) UNION
(SELECT SUM(`mail`) FROM `" . TABLE_PANEL_TRAFFIC . "`
WHERE `customerid` = '" . $userinfo['customerid'] . "'
GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12) ORDER BY sum DESC LIMIT 1");
$row = $db->fetch_array($result);
$traf['max'] = ($row[0] > $row[1] ? ($row[0] > $row[2] ? $row[0] : $row[2]) : ($row[1] > $row[2] ? $row[1] : $row[2]));;
$result = $db->query("SELECT `month`, `year`, SUM(`http`) AS http, SUM(`ftp_up`) AS ftp_up, SUM(`ftp_down`) AS ftp_down, SUM(`mail`) AS mail
FROM `" . TABLE_PANEL_TRAFFIC . "` WHERE `customerid` = '" . $userinfo['customerid'] . "'
GROUP BY CONCAT(`year`,`month`) ORDER BY CONCAT(`year`,`month`) DESC LIMIT 12");

View File

@@ -226,7 +226,7 @@ if($action == 'forgotpwd')
if($db->num_rows() == 0)
{
$sql = "SELECT `adminid`, `name`, `email`, `loginname` FROM `" . TABLE_PANEL_ADMINS . "`
$sql = "SELECT `adminid`, `firstname`, `name`, `email`, `loginname` FROM `" . TABLE_PANEL_ADMINS . "`
WHERE `loginname`='" . $db->escape($loginname) . "'
AND `email`='" . $db->escape($email) . "'";
$result = $db->query($sql);
@@ -240,18 +240,7 @@ if($action == 'forgotpwd')
{
if($user !== false)
{
if ($settings['panel']['password_min_length'] <= 6) {
$password = substr(md5(uniqid(microtime(), 1)), 12, 6);
} else {
// make it two times larger than password_min_length
$rnd = '';
$minlength = $settings['panel']['password_min_length'];
while (strlen($rnd) < ($minlength * 2))
{
$rnd .= md5(uniqid(microtime(), 1));
}
$password = substr($rnd, (int)($minlength / 2), $minlength);
}
$password = substr(md5(uniqid(microtime(), 1)), 12, 6);
if($adminchecked)
{
@@ -269,23 +258,23 @@ if($action == 'forgotpwd')
$rstlog = FroxlorLogger::getInstanceOf(array('loginname' => 'password_reset'), $db, $settings);
$rstlog->logAction(USR_ACTION, LOG_WARNING, "Password for user '" . $user['loginname'] . "' has been reset!");
$body = strtr($lng['pwdreminder']['body'], array('%s' => $user['firstname'] . ' ' . $user['name'], '%p' => $password));
$_mailerror = false;
try {
$mail->Subject = $lng['pwdreminder']['subject'];
$mail->AltBody = $body;
$mail->MsgHTML(str_replace("\\n", "<br />", $body));
$mail->AddAddress($user['email'], $user['firstname'] . ' ' . $user['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $settings['panel']['adminmail'];
$mail->FromName = 'Froxlor';
$mail->Subject = $lng['pwdreminder']['subject'];
$mail->Body = $body;
$mail->AddAddress($user['email'], $user['firstname'] . ' ' . $user['name']);
if(!$mail->Send())
{
if($mail->ErrorInfo != '')
{
$mailerr_msg = $mail->ErrorInfo;
}
else
{
$mailerr_msg = $email;
}
if ($_mailerror) {
$rstlog = FroxlorLogger::getInstanceOf(array('loginname' => 'password_reset'), $db, $settings);
$rstlog->logAction(ADM_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
redirectTo('index.php', Array('showmessage' => '4'), true);
@@ -303,7 +292,7 @@ if($action == 'forgotpwd')
$message = $lng['login']['usernotfound'];
}
unset($user);
unset($user, $adminchecked);
}
else
{
@@ -315,20 +304,9 @@ if($action == 'forgotpwd')
$message = '';
}
if($adminchecked)
if($settings['panel']['allow_preset'] != '1')
{
if($settings['panel']['allow_preset_admin'] != '1')
{
$message = $lng['pwdreminder']['notallowed'];
unset ($adminchecked);
}
}
else
{
if($settings['panel']['allow_preset'] != '1')
{
$message = $lng['pwdreminder']['notallowed'];
}
$message = $lng['pwdreminder']['notallowed'];
}
eval("echo \"" . getTemplate("fpwd") . "\";");

View File

@@ -451,7 +451,7 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (18, 'system', 'vmail_homedir', '/var/customers/mail/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (19, 'system', 'bindconf_directory', '/etc/bind/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (20, 'system', 'bindreload_command', '/etc/init.d/bind9 reload');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9.4');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (22, 'panel', 'version', '0.9');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (23, 'system', 'hostname', 'SERVERNAME');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (24, 'login', 'maxloginattempts', '3');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (25, 'login', 'deactivatetime', '900');
@@ -508,55 +508,48 @@ INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) V
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (77, 'dkim', 'use_dkim', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (78, 'system', 'webalizer_enabled', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (79, 'system', 'awstats_enabled', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (80, 'dkim', 'dkim_prefix', '/etc/postfix/dkim/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (81, 'dkim', 'dkim_domains', 'domains');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (82, 'dkim', 'dkim_dkimkeys', 'dkim-keys.conf');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (83, 'dkim', 'dkimrestart_command', '/etc/init.d/dkim-filter restart');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (84, 'panel', 'unix_names', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (85, 'panel', 'allow_preset', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (86, 'panel', 'allow_preset_admin', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (87, 'system', 'httpuser', 'www-data');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (88, 'system', 'httpgroup', 'www-data');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (89, 'system', 'webserver', 'apache2');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (90, 'autoresponder', 'autoresponder_active', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (91, 'autoresponder', 'last_autoresponder_run', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (92, 'admin', 'show_version_login', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (93, 'admin', 'show_version_footer', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (94, 'admin', 'froxlor_graphic', 'images/header.gif');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (95, 'system', 'mod_fcgid_wrapper', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (96, 'system', 'mod_fcgid_starter', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (97, 'system', 'mod_fcgid_peardir', '/usr/share/php/:/usr/share/php5/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (98, 'system', 'index_file_extension', 'html');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (99, 'aps', 'items_per_page', '20');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (100, 'aps', 'upload_fields', '5');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (101, 'aps', 'aps_active', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (102, 'aps', 'php-extension', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (103, 'aps', 'php-configuration', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (104, 'aps', 'webserver-htaccess', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (105, 'aps', 'php-function', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (106, 'aps', 'webserver-module', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (107, 'system', 'realtime_port', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (108, 'session', 'allow_multiple_login', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (109, 'panel', 'allow_domain_change_admin', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (110, 'panel', 'allow_domain_change_customer', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (111, 'system', 'mod_fcgid_maxrequests', '250');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (112, 'system','ssl_key_file','/etc/apache2/apache2.key');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (113, 'system','ssl_ca_file','');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (114, 'panel', 'frontend', 'froxlor');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (115, 'spf', 'use_spf', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (116, 'spf', 'spf_entry', '@ IN TXT "v=spf1 a mx -all"');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (117, 'system', 'debug_cron', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (118, 'panel', 'password_min_length', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (119, 'system', 'store_index_file_subs', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (120, 'panel', 'adminmail_defname', 'Froxlor Administrator');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (121, 'panel', 'adminmail_return', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (122, 'dkim', 'dkim_algorithm', 'all');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (123, 'dkim', 'dkim_add_adsp', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (124, 'dkim', 'dkim_keylength', '1024');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (125, 'dkim', 'dkim_servicetype', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (126, 'dkim', 'dkim_add_adsppolicy', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (127, 'dkim', 'dkim_notes', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (128, 'system', 'stdsubdomain', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (80, 'system', 'awstats_domain_file', '/etc/awstats/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (81, 'system', 'awstats_model_file', '/etc/awstats/awstats.model.conf.froxlor');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (82, 'dkim', 'dkim_prefix', '/etc/postfix/dkim/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (83, 'dkim', 'dkim_domains', 'domains');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (84, 'dkim', 'dkim_dkimkeys', 'dkim-keys.conf');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (85, 'dkim', 'dkimrestart_command', '/etc/init.d/dkim-filter restart');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (86, 'panel', 'unix_names', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (87, 'panel', 'allow_preset', '1');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (88, 'system', 'awstats_path', '/usr/share/awstats/VERSION/webroot/cgi-bin/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (89, 'system', 'awstats_updateall_command', '/usr/bin/awstats_updateall.pl');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (90, 'panel', 'allow_preset_admin', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (91, 'system', 'httpuser', 'www-data');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (92, 'system', 'httpgroup', 'www-data');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (93, 'system', 'webserver', 'apache2');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (94, 'autoresponder', 'autoresponder_active', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (95, 'autoresponder', 'last_autoresponder_run', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (96, 'admin', 'show_version_login', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (97, 'admin', 'show_version_footer', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (98, 'admin', 'froxlor_graphic', 'images/header.png');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (99, 'system', 'mod_fcgid_wrapper', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (100, 'system', 'mod_fcgid_starter', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (101, 'system', 'mod_fcgid_peardir', '/usr/share/php/:/usr/share/php5/');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (102, 'system', 'index_file_extension', 'html');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (103, 'aps', 'items_per_page', '20');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (104, 'aps', 'upload_fields', '5');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (105, 'aps', 'aps_active', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (1069, 'aps', 'php-extension', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (107, 'aps', 'php-configuration', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (108, 'aps', 'webserver-htaccess', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (109, 'aps', 'php-function', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (110, 'aps', 'webserver-module', '');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (111, 'system', 'realtime_port', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (112, 'session', 'allow_multiple_login', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (113, 'panel', 'allow_domain_change_admin', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (114, 'panel', 'allow_domain_change_customer', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (115, 'system', 'mod_fcgid_maxrequests', '250');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (116, 'system','ssl_key_file','/etc/apache2/apache2.key');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (117, 'system','ssl_ca_file','');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (118, 'panel', 'frontend', 'froxlor');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (119, 'spf', 'use_spf', '0');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (120, 'spf', 'spf_entry', '@ IN TXT "v=spf1 a mx -all"');
INSERT INTO `panel_settings` (`settingid`, `settinggroup`, `varname`, `value`) VALUES (121, 'system', 'debug_cron', '0');
# --------------------------------------------------------
@@ -738,7 +731,6 @@ INSERT INTO `panel_languages` VALUES (13, 'Dutch', 'lng/dutch.lng.php');
INSERT INTO `panel_languages` VALUES (14, 'Hungarian', 'lng/hungarian.lng.php');
INSERT INTO `panel_languages` VALUES (15, 'Swedish', 'lng/swedish.lng.php');
INSERT INTO `panel_languages` VALUES (16, 'Czech', 'lng/czech.lng.php');
INSERT INTO `panel_languages` VALUES (17, 'Polski', 'lng/polish.lng.php');
# --------------------------------------------------------

View File

@@ -156,121 +156,6 @@ function status_message($case, $text)
}
}
function requirement_checks()
{
global $lng;
page_header();
?>
<table cellpadding="5" cellspacing="4" border="0" align="center" class="maintable">
<tr>
<td class="maintitle"><b><img src="../images/title.gif" alt="" />&nbsp;Froxlor Installation</b></td>
</tr>
<?php
$_die = false;
// check for correct php version
status_message('begin', $lng['install']['phpversion']);
if(version_compare("5.2.0", PHP_VERSION, ">="))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpmysql']);
if(!extension_loaded('mysql'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpfilter']);
if(!extension_loaded('filter'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpposix']);
if(!extension_loaded('posix'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpbcmath']);
if(!extension_loaded('bcmath'))
{
status_message('orange', $lng['install']['notinstalled'] . '<br />' . $lng['install']['bcmathdescription']);
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['openbasedir']);
$php_ob = @ini_get("open_basedir");
if(!empty($php_ob)
&& $php_ob != '')
{
status_message('orange', $lng['install']['openbasedirenabled']);
}
else
{
status_message('green', 'OK');
}
if($_die)
{
?>
<tr>
<td class="main_field_display" align="center">
<?php echo $lng['install']['diedbecauseofrequirements']; ?><br />
<a href="install.php"><?php echo $lng['install']['click_here_to_refresh']; ?></a>
</td>
</tr>
<?php
} else {
?>
<tr>
<td class="main_field_display" align="center">
<?php echo $lng['install']['froxlor_succ_checks']; ?><br />
<a href="install.php?check=1"><?php echo $lng['install']['click_here_to_continue']; ?></a>
</td>
</tr>
<?php
}
?>
</table>
<br />
<br />
<?php
page_footer();
}
/**
* END FUNCTIONS ---------------------------------------------------
*/
@@ -289,7 +174,7 @@ else
{
if(!empty($_SERVER['SERVER_NAME']))
{
if(preg_match('/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/', $_SERVER['SERVER_NAME']) === false)
if(validate_ip($_SERVER['SERVER_NAME'], true) == false)
{
$servername = $_SERVER['SERVER_NAME'];
}
@@ -486,6 +371,89 @@ if(isset($_POST['installstep'])
<td class="maintitle"><b><img src="../images/title.gif" alt="" />&nbsp;Froxlor Installation</b></td>
</tr>
<?php
$_die = false;
// check for correct php version
status_message('begin', $lng['install']['phpversion']);
if(version_compare("5.2.0", PHP_VERSION, ">="))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpmysql']);
if(!extension_loaded('mysql'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpfilter']);
if(!extension_loaded('filter'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpposix']);
if(!extension_loaded('posix'))
{
status_message('red', $lng['install']['notinstalled']);
$_die = true;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['phpbcmath']);
if(!extension_loaded('bcmath'))
{
status_message('orange', $lng['install']['notinstalled'] . '<br />' . $lng['install']['bcmathdescription']);
$_die = false;
}
else
{
status_message('green', 'OK');
}
status_message('begin', $lng['install']['openbasedir']);
$php_ob = @ini_get("open_basedir");
if(!empty($php_ob)
&& $php_ob != '')
{
status_message('orange', $lng['install']['openbasedirenabled']);
$_die = false;
}
else
{
status_message('green', 'OK');
}
if($_die)
{
status_message('begin', $lng['install']['diedbecauseofrequirements']);
die();
}
//first test if we can access the database server with the given root user and password
@@ -507,23 +475,7 @@ if(isset($_POST['installstep'])
if(is_file("/usr/bin/mysqldump"))
{
$do_backup = true;
$mysql_dump = '/usr/bin/mysqldump';
}
elseif(is_file("/usr/local/bin/mysqldump"))
{
$do_backup = true;
$mysql_dump = '/usr/local/bin/mysqldump';
}
else
{
$do_backup = false;
status_message('red', $lng['install']['backing_up_binary_missing']);
}
if($do_backup) {
$command = $mysql_dump . " " . $mysql_database . " -u " . $mysql_root_user . " --password='" . $mysql_root_pass . "' --result-file=" . $filename;
$command = "/usr/bin/mysqldump " . $mysql_database . " -u " . $mysql_root_user . " --password='" . $mysql_root_pass . "' --result-file=" . $filename;
$output = exec($command);
if(stristr($output, "error"))
@@ -534,7 +486,10 @@ if(isset($_POST['installstep'])
{
status_message('green', 'OK');
}
}
else
{
status_message('red', $lng['install']['backing_up_binary_missing']);
}
}
@@ -620,6 +575,8 @@ if(isset($_POST['installstep'])
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($webserver) . "' WHERE `settinggroup` = 'system' AND `varname` = 'webserver'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($webserver) . "' WHERE `settinggroup` = 'system' AND `varname` = 'webserver'");
//FIXME
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($httpuser) . "' WHERE `settinggroup` = 'system' AND `varname` = 'httpuser'");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = '" . $db->escape($httpgroup) . "' WHERE `settinggroup` = 'system' AND `varname` = 'httpgroup'");
@@ -644,21 +601,11 @@ if(isset($_POST['installstep'])
$query = 'UPDATE `%s` SET `value` = UNIX_TIMESTAMP() WHERE `settinggroup` = \'system\' AND `varname` = \'lastcronrun\'';
$query = sprintf($query, TABLE_PANEL_SETTINGS);
$db->query($query);
// set specific times for some crons (traffic only at night, etc.)
$ts = mktime(0, 0, 0, date('m', time()), date('d', time()), date('Y', time()));
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_traffic.php';");
$ts = mktime(1, 0, 0, date('m', time()), date('d', time()), date('Y', time()));
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_used_tickets_reset.php';");
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_ticketarchive.php';");
// and lets insert the default ip and port
$query = "INSERT INTO `".TABLE_PANEL_IPSANDPORTS."`
SET `ip`= '".$db->escape($serverip)."',
`port` = '80',
`vhostcontainer` = '1',
`vhostcontainer_servername_statement` = '1'";
$query = 'INSERT INTO `%s` SET `ip` = \'%s\', `port` = \'80\' ';
$query = sprintf($query, TABLE_PANEL_IPSANDPORTS, $db->escape($serverip));
$db->query($query);
$defaultip = $db->insert_id();
@@ -761,15 +708,10 @@ if(isset($_POST['installstep'])
}
else
{
if(isset($_GET['check'])
&& $_GET['check'] == '1')
{
page_header();
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="get">
<input type="hidden" name="check" value="1" />
<table cellpadding="5" cellspacing="4" border="0" align="center" class="maintable_40">
<tr>
<td class="maintitle" colspan="2"><b><img src="../images/title.gif" alt="" />&nbsp;<?php echo $lng['install']['welcome']; ?></b></td>
@@ -804,7 +746,6 @@ else
</form>
<br />
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<input type="hidden" name="check" value="1" />
<table cellpadding="5" cellspacing="4" border="0" align="center" class="maintable_40">
<tr>
<td class="maintitle" colspan="2"><b><img src="../images/title.gif" alt="" />&nbsp;<?php echo $lng['install']['database']; ?></b></td>
@@ -880,11 +821,6 @@ else
<br />
<?php
page_footer();
}
else
{
requirement_checks();
}
}
/**

View File

@@ -84,11 +84,4 @@ $lng['install']['webserver'] = 'Webserver';
$lng['install']['phpversion'] = 'Checking for PHP version >= 5.2';
$lng['install']['phpposix'] = 'Testing if PHP posix-extension is installed...';
/*
* Added in Froxlor 0.9.4
*/
$lng['install']['click_here_to_refresh'] = 'Re-check';
$lng['install']['click_here_to_continue'] = 'Continue installation';
$lng['install']['froxlor_succ_checks'] = 'All requirements are satisfied';
?>

View File

@@ -47,9 +47,6 @@ $lng['install']['next'] = 'Fortfahren';
$lng['install']['testing_mysql'] = 'Teste, ob die MySQL-Root-Benutzerdaten richtig sind...';
$lng['install']['erasing_old_db'] = 'Entferne alte Datenbank...';
$lng['install']['backup_old_db'] = 'Sichere bisherige Datenbank...';
$lng['install']['backing_up'] = 'Sicherung l&auml;ft';
$lng['install']['backing_up_binary_missing'] = '/usr/bin/mysqldump nicht vorhanden';
$lng['install']['create_mysqluser_and_db'] = 'Erstelle Datenbank und Benutzer...';
$lng['install']['testing_new_db'] = 'Teste, ob die Datenbank und Passwort korrekt angelegt wurden...';
$lng['install']['importing_data'] = 'Importiere Daten in die MySQL-Datenbank...';
@@ -84,11 +81,4 @@ $lng['install']['webserver'] = 'Webserver';
$lng['install']['phpversion'] = 'Pr&uuml;fe PHP Version >= 5.2';
$lng['install']['phpposix'] = 'Teste, ob die PHP Posix-Erweiterung installiert ist...';
/*
* Added in Froxlor 0.9.4
*/
$lng['install']['click_here_to_refresh'] = 'Erneut pr&uuml;fen';
$lng['install']['click_here_to_continue'] = 'Installation fortf&uuml;hren';
$lng['install']['froxlor_succ_checks'] = 'Alle Vorraussetzungen sind erf&uuml;llt';
?>

View File

@@ -20,13 +20,13 @@ if(isFroxlorVersion('0.9-r0'))
showUpdateStep("Updating from 0.9-r0 to 0.9-r1", false);
showUpdateStep("Performing database updates");
/*
* add missing database-updates if necessary (old: update/update_database.php)
* add missing database-updates if necessary (old: update/update_database.php
*/
if(isset($settings['system']['dbversion']) && (int)$settings['system']['dbversion'] < 1)
if(!isset($settings['system']['dbversion']) || $settings['system']['dbversion'] < '1')
{
$db->query("ALTER TABLE `panel_databases` ADD `dbserver` INT( 11 ) UNSIGNED NOT NULL default '0';");
}
if(isset($settings['system']['dbversion']) && (int)$settings['system']['dbversion'] < 2)
if(!isset($settings['system']['dbversion']) || $settings['system']['dbversion'] < '2')
{
$db->query("ALTER TABLE `panel_ipsandports` CHANGE `ssl_cert` `ssl_cert_file` VARCHAR( 255 ) NOT NULL,
ADD `ssl_key_file` VARCHAR( 255 ) NOT NULL,
@@ -276,120 +276,4 @@ if(isFroxlorVersion('0.9-r4'))
updateToVersion('0.9');
}
if(isFroxlorVersion('0.9'))
{
showUpdateStep("Updating from 0.9 to 0.9.1", false);
showUpdateStep("Updating settings values");
$db->query("UPDATE `" . TABLE_PANEL_SETTINGS . "` SET `value` = 'images/header.gif' WHERE `varname` = 'froxlor_graphic' AND `value` = 'images/header.png'");
lastStepStatus(0);
updateToVersion('0.9.1');
}
if(isFroxlorVersion('0.9.1'))
{
showUpdateStep("Updating from 0.9.1 to 0.9.2", false);
showUpdateStep("Checking whether last-system-guid is sane");
$result = $db->query_first("SELECT MAX(`guid`) as `latestguid` FROM `".TABLE_PANEL_CUSTOMERS."`");
if (isset($result['latestguid'])
&& (int)$result['latestguid'] > 0
&& $result['latestguid'] != $settings['system']['lastguid']
) {
checkLastGuid();
lastStepStatus(1, 'fixed');
} else {
lastStepStatus(0);
}
updateToVersion('0.9.2');
}
if(isFroxlorVersion('0.9.2'))
{
showUpdateStep("Updating from 0.9.2 to 0.9.3");
lastStepStatus(0);
updateToVersion('0.9.3');
}
if(isFroxlorVersion('0.9.3'))
{
showUpdateStep("Updating from 0.9.3 to 0.9.3-svn1", false);
showUpdateStep("Updating tables");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'password_min_length', '0');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'store_index_file_subs', '1');");
lastStepStatus(0);
updateToVersion('0.9.3-svn1');
}
if(isFroxlorVersion('0.9.3-svn1'))
{
showUpdateStep("Updating from 0.9.3-svn1 to 0.9.3-svn2", false);
showUpdateStep("Updating tables");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'adminmail_defname', 'Froxlor Administrator');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('panel', 'adminmail_return', '');");
lastStepStatus(0);
updateToVersion('0.9.3-svn2');
}
if(isFroxlorVersion('0.9.3-svn2'))
{
showUpdateStep("Updating from 0.9.3-svn2 to 0.9.3-svn3", false);
showUpdateStep("Correcting cron start-times");
// set specific times for some crons (traffic only at night, etc.)
$ts = mktime(0, 0, 0, date('m', time()), date('d', time()), date('Y', time()));
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_traffic.php';");
$ts = mktime(1, 0, 0, date('m', time()), date('d', time()), date('Y', time()));
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_used_tickets_reset.php';");
$db->query("UPDATE `".TABLE_PANEL_CRONRUNS."` SET `lastrun` = '".$ts."' WHERE `cronfile` ='cron_ticketarchive.php';");
lastStepStatus(0);
showUpdateStep("Adding new language: Polish");
$db->query("INSERT INTO `".TABLE_PANEL_LANGUAGE."` SET `language` = 'Polski', `file` = 'lng/polish.lng.php'");
lastStepStatus(0);
updateToVersion('0.9.3-svn3');
}
if(isFroxlorVersion('0.9.3-svn3'))
{
showUpdateStep("Updating from 0.9.3-svn3 to 0.9.3-svn4", false);
showUpdateStep("Adding new DKIM settings");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_algorithm', 'all');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_add_adsp', '1');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_keylength', '1024');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_servicetype', '0');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_add_adsppolicy', '1');");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('dkim', 'dkim_notes', '');");
lastStepStatus(0);
updateToVersion('0.9.3-svn4');
}
if(isFroxlorVersion('0.9.3-svn4'))
{
showUpdateStep("Updating from 0.9.3-svn4 to 0.9.3-svn5", false);
showUpdateStep("Adding new settings");
$db->query("INSERT INTO `" . TABLE_PANEL_SETTINGS . "` (`settinggroup`, `varname`, `value`) VALUES ('system', 'stdsubdomain', '');");
lastStepStatus(0);
updateToVersion('0.9.3-svn5');
}
if(isFroxlorVersion('0.9.3-svn5'))
{
showUpdateStep("Updating from 0.9.3-svn5 to 0.9.4 final");
lastStepStatus(0);
updateToVersion('0.9.4');
}
?>

View File

@@ -45,7 +45,7 @@ class ApsInstaller extends ApsParser
{
$this->db = $db;
$this->db_root = $db_root;
$this->RootDir = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
$this->RootDir = dirname(dirname(__FILE__)) . '/';
$this->Hosts = $settings['system']['mysql_access_host'];
}
@@ -135,20 +135,10 @@ class ApsInstaller extends ApsParser
{
//setup right path and run installation script
if(!is_dir($this->RealPath . $this->DomainPath . '/install_scripts/'))
{
echo 'Directory: '. $this->RealPath . $this->DomainPath . '/install_scripts/ does not exist';
return;
}
chdir($this->RealPath . $this->DomainPath . '/install_scripts/');
$Return = array();
$ReturnStatus = 0;
// make configure-script executable
chmod($this->RealPath . $this->DomainPath . '/install_scripts/configure', 0755);
$Return = safe_exec('php ' . escapeshellarg($this->RealPath . $this->DomainPath . '/install_scripts/configure') . ' install', $ReturnStatus);
$Return = safe_exec('php ' . escapeshellarg($this->RealPath . $this->DomainPath . '/install_scripts/configure install'), $ReturnStatus);
if($ReturnStatus != 0)
{

View File

@@ -37,7 +37,6 @@ class ApsParser
private $userinfo = array();
private $settings = array();
private $db = false;
private $RootDir = '';
/**
* Constructor of class, setup basic variables needed by the class
@@ -52,7 +51,6 @@ class ApsParser
$this->settings = $settings;
$this->userinfo = $userinfo;
$this->db = $db;
$this->RootDir = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
}
/**
@@ -795,8 +793,7 @@ class ApsParser
}
else
{
$moveproblem = str_replace('{$path}', $this->RootDir, $lng['aps']['moveproblem']);
$Errors[] = $moveproblem;
$Errors[] = $lng['aps']['moveproblem'];
}
}
@@ -843,7 +840,7 @@ class ApsParser
{
//split all keywords
$Elements = preg_split('/[ ,;]/', trim($_GET['keyword']));
$Elements = split('[ ,;]', trim($_GET['keyword']));
if(count($Elements) == 1
&& strlen($Elements[0]) == 0)
@@ -1691,11 +1688,10 @@ class ApsParser
$Error.= '<li>' . $lng['aps']['class_zip_missing'] . '</li>';
}
if(!is_writable($this->RootDir.'temp/')
|| !is_writable($this->RootDir.'packages/'))
if(!is_writable('./temp/')
|| !is_writable('./packages/'))
{
$dirpermission = str_replace('{$path}', $this->RootDir, $lng['aps']['dir_permissions']);
$Error.= '<li>' . $dirpermission . '</li>';
$Error.= '<li>' . $lng['aps']['dir_permissions'] . '</li>';
}
if($Error != '')
@@ -1714,14 +1710,7 @@ class ApsParser
return;
}
if(isset($this->userinfo['customerid']))
{
$CustomerId = $this->userinfo['customerid'];
}
else
{
$CustomerId = -1;
}
$CustomerId = $this->userinfo['customerid'];
$AdminId = $this->userinfo['adminid'];
$PackagesPerSite = $this->settings['aps']['items_per_page'];
@@ -2415,8 +2404,7 @@ class ApsParser
{
if(isset($_POST[$FieldId]))
{
$email = strtolower($_POST[$FieldId]);
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false)
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $_POST[$FieldId]))
{
if(!in_array($FieldId, $Error))$Error[] = $FieldId;
}

View File

@@ -31,27 +31,19 @@ class ApsUpdater extends ApsParser
private $RequestDomain = '';
private $RootUrl = '';
private $RootDir = '';
/**
* FroxlorLogger
* @var FroxlorLogger
*/
private $_cronlog = null;
/**
* constructor of class. setup some basic variables needed by class
*
* @param db instance of the database class
* @param cronlog instance of the froxlor logger
* @param db instance of the database class from syscp
*/
public function __construct($db, $cronlog)
public function __construct($db)
{
$this->db = $db;
$this->RequestDomain = 'apscatalog.com';
$this->RootUrl = '/1/';
$this->RootDir = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
$this->_cronlog = $cronlog;
$this->RootDir = dirname(dirname(__FILE__)) . '/';
}
/**
@@ -60,15 +52,13 @@ class ApsUpdater extends ApsParser
public function UpdateHandler()
{
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "Changing directory to '" . $this->RootDir . "'");
chdir($this->RootDir);
//return if allow_url_fopen is disabled
if(!ini_get('allow_url_fopen'))
if(ini_get('allow_url_fopen') == '0')
{
$this->_cronlog->logAction(CRON_ACTION, LOG_ERROR, "The APS updater cronjob requires that allow_url_fopen is enabled for the PHP CLI binary!");
echo "The APS updater cronjob requires that allow_url_fopen is enabled for the PHP CLI binary!\n";
echo ("The APS updater cronjob requires that allow_url_fopen is enabled for the PHP CLI binary!\n");
return;
}
@@ -78,7 +68,6 @@ class ApsUpdater extends ApsParser
if($this->db->num_rows($Result) == 0)
{
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "No tasks for ApsUpdater");
return;
}
@@ -88,99 +77,89 @@ class ApsUpdater extends ApsParser
$this->db->query('DELETE FROM `' . TABLE_APS_TASKS . '` WHERE `Task` = ' . $Task['Task']);
//fetch all vendors
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "Fetching all Vendors from '" . $this->RootUrl . "'");
$Vendors = self::FetchSubUrls($this->RootUrl);
if($Vendors !== false)
foreach($Vendors as $Vendor)
{
foreach($Vendors as $Vendor)
//fetch all applications from vendors
$Applications = self::FetchSubUrls($this->RootUrl . $Vendor);
foreach($Applications as $Application)
{
//fetch all applications from vendors
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "Fetching all from Vendor '" . $Vendor. "'");
$Applications = self::FetchSubUrls($this->RootUrl . $Vendor);
if($Applications !== false)
//get newest version of package which is already installed
$CurrentVersion = '';
$Result = $this->db->query('SELECT * FROM `' . TABLE_APS_PACKAGES . '` WHERE `Name` = "' . $this->db->escape(substr($Application, 0, -1)) . '"');
while($Row = $this->db->fetch_array($Result))
{
foreach($Applications as $Application)
if(version_compare($Row['Version'] . '-' . $Row['Release'], $CurrentVersion) == 1)
{
//get newest version of package which is already installed
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "Checking application '" . substr($Application, 0, -1) . "'");
$CurrentVersion = $Row['Version'] . '-' . $Row['Release'];
}
}
$CurrentVersion = '';
$Result = $this->db->query('SELECT * FROM `' . TABLE_APS_PACKAGES . '` WHERE `Name` = "' . $this->db->escape(substr($Application, 0, -1)) . '"');
if($this->db->num_rows($Result) != 0)
{
//package already installed in system, search for newer version
while($Row = $this->db->fetch_array($Result))
if($Task['Task'] != TASK_SYSTEM_UPDATE)continue;
//fetch different versions of application from distribution server
$NewerVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than current version?
if(version_compare($OnlineVersion, $CurrentVersion) == 1)
{
if(version_compare($Row['Version'] . '-' . $Row['Release'], $CurrentVersion) == 1)
//is new package newer than another one found before?
if(version_compare($OnlineVersion, $NewerVersion) == 1)
{
$CurrentVersion = $Row['Version'] . '-' . $Row['Release'];
$NewerVersion = $OnlineVersion;
}
}
}
if($this->db->num_rows($Result) != 0)
if($NewerVersion != '')
{
//download package as an update
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewerVersion, substr($Application, 0, -1), $NewerVersion);
continue;
}
}
else
{
if($Task['Task'] != TASK_SYSTEM_DOWNLOAD)continue;
//new packages
$NewVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than another one found before?
if(version_compare($OnlineVersion, $NewVersion) == 1)
{
//package already installed in system, search for newer version
if($Task['Task'] != TASK_SYSTEM_UPDATE)continue;
//fetch different versions of application from distribution server
$NewerVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
if($Versions !== false)
{
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than current version?
if(version_compare($OnlineVersion, $CurrentVersion) == 1)
{
//is new package newer than another one found before?
if(version_compare($OnlineVersion, $NewerVersion) == 1)
{
$NewerVersion = $OnlineVersion;
}
}
}
if($NewerVersion != '')
{
//download package as an update
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewerVersion, substr($Application, 0, -1), $NewerVersion);
continue;
}
}
$NewVersion = $OnlineVersion;
}
else
{
if($Task['Task'] != TASK_SYSTEM_DOWNLOAD)continue;
}
//new packages
if($NewVersion != '')
{
//download package as a new one
$NewVersion = '';
$Versions = self::FetchSubUrls($this->RootUrl . $Vendor . $Application);
foreach($Versions as $Version)
{
$OnlineVersion = substr($Version, 0, -1);
//is package newer than another one found before?
if(version_compare($OnlineVersion, $NewVersion) == 1)
{
$NewVersion = $OnlineVersion;
}
}
if($NewVersion != '')
{
//download package as a new one
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewVersion, substr($Application, 0, -1), $NewVersion);
continue;
}
}
self::DownloadPackage($this->RootUrl . $Vendor . $Application . $NewVersion, substr($Application, 0, -1), $NewVersion);
continue;
}
}
}
@@ -202,13 +181,11 @@ class ApsUpdater extends ApsParser
//make url valid
$path = dirname($Url);
$file = urlencode(basename($Url));
$file_url = 'http://' . $this->RequestDomain . $path . '/' . $file . '.aps' . $Downloads[0];
$Url = str_replace(' ', '%20', $Url);
//get content from website url
$this->_cronlog->logAction(CRON_ACTION, LOG_NOTICE, "Downloading '" . $file_url . "'");
$Content = @file_get_contents($file_url);
$Content = @file_get_contents('http://' . $this->RequestDomain . $Url . '.aps' . $Downloads[0]);
if($Content != false)
{
@@ -254,22 +231,21 @@ class ApsUpdater extends ApsParser
//make url valid
$Url = str_replace(' ', '%20', $Url);
$file_url = 'http://' . $this->RequestDomain . $Url;
//get content from website url
$Content = @file($file_url);
$Content = @file('http://' . $this->RequestDomain . $Url);
if($Content !== false)
if($Content != false)
{
foreach($Content as $Temp)
{
//skip empty lines
if($Temp != "\r\n"
&& $Temp != "\r"
&& $Temp != "\n"
&& $Temp != "")
&& $Temp != "\r"
&& $Temp != "\n"
&& $Temp != "")
{
//remove unwanted characters

View File

@@ -134,11 +134,8 @@ class db
$this->showerror('Trying to use database ' . $this->database . ' failed, exiting');
}
}
/*
* this is not for 0.9.x
*/
//mysql_query("SET NAMES utf8", $this->link_id);
//mysql_query("SET CHARACTER SET utf8", $this->link_id);
mysql_query("SET NAMES utf8", $this->link_id);
mysql_query("SET CHARACTER SET utf8", $this->link_id);
}
/**

View File

@@ -29,13 +29,13 @@ class idna_convert_wrapper
* @var object
*/
private $idna_converter;
var $idna_converter;
/**
* Class constructor. Creates a new idna converter
*/
public function __construct()
function idna_convert_wrapper()
{
$this->idna_converter = new idna_convert();
}
@@ -50,7 +50,7 @@ class idna_convert_wrapper
* both seperated by the same string as the input.
*/
public function encode($to_encode)
function encode($to_encode)
{
return $this->_do_action('encode', $to_encode);
}
@@ -65,7 +65,7 @@ class idna_convert_wrapper
* both seperated by the same string as the input.
*/
public function decode($to_decode)
function decode($to_decode)
{
return $this->_do_action('decode', $to_decode);
}
@@ -80,7 +80,7 @@ class idna_convert_wrapper
* @return string The input string after being processed.
*/
private function _do_action($action, $string)
function _do_action($action, $string)
{
$string = trim($string);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -286,25 +286,14 @@ class ticket
if($customerid != - 1)
{
$_mailerror = false;
try {
$mail->SetFrom($this->settings['ticket']['noreply_email'], $this->settings['ticket']['noreply_name']);
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($usr['email'], $usr['firstname'] . ' ' . $usr['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
if ($_mailerror) {
$rstlog = FroxlorLogger::getInstanceOf(array('loginname' => 'ticket_class'), $this->db, $this->settings);
$rstlog->logAction(ADM_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
$mail->From = $this->settings['ticket']['noreply_email'];
$mail->FromName = $this->settings['ticket']['noreply_name'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($usr['email'], $usr['firstname'] . ' ' . $usr['name']);
if(!$mail->Send())
{
standard_error(array('errorsendingmail', $usr['email']));
}
@@ -312,27 +301,15 @@ class ticket
}
else
{
$admin = $this->db->query_first("SELECT `name`, `email` FROM `" . TABLE_PANEL_ADMINS . "` WHERE `adminid`='" . (int)$this->userinfo['adminid'] . "'");
$_mailerror = false;
try {
$mail->SetFrom($this->settings['ticket']['noreply_email'], $this->settings['ticket']['noreply_name']);
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML(str_replace("\n", "<br />", $mail_body));
$mail->AddAddress($admin['email'], $admin['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
if ($_mailerror) {
$rstlog = FroxlorLogger::getInstanceOf(array('loginname' => 'ticket_class'), $this->db, $this->settings);
$rstlog->logAction(ADM_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
$admin = $this->db->query_first("SELECT `email` FROM `" . TABLE_PANEL_ADMINS . "` WHERE `adminid`='" . (int)$this->userinfo['adminid'] . "'");
$mail->From = $this->settings['ticket']['noreply_email'];
$mail->FromName = $this->settings['ticket']['noreply_name'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($admin['email'], $admin['firstname'] . ' ' . $admin['name']);
if(!$mail->Send())
{
standard_error(array('errorsendingmail', $admin['email']));
}
@@ -660,7 +637,7 @@ class ticket
{
if($_cid != 0)
{
$result = $_db->query('SELECT `id` FROM `' . TABLE_PANEL_TICKETS . '` WHERE `customerid` ="'.(int)$_cid.'"');
$result = $_db->query('SELECT `id` FROM `' . TABLE_PANEL_TICKETS . '` WHERE `customer` ="'.(int)$_cid.'"');
$tickets = array();
while($row = $_db->fetch_array($result))
@@ -691,11 +668,7 @@ class ticket
{
if(strtolower($_var) == 'message')
{
return str_replace('script>', 'pre>', htmlspecialchars_decode(nl2br($this->t_data[$_var])));
}
elseif(strtolower($_var) == 'subject')
{
return str_replace('script>', 'pre>', htmlspecialchars_decode(nl2br($this->t_data[$_var])));
return htmlspecialchars_decode(nl2br($this->t_data[$_var]));
}
else
{

View File

@@ -29,7 +29,6 @@ return Array(
'commands' => Array(
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
'mkdir -p ' . $settings['system']['deactivateddocroot'],
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
'a2dismod userdir',
@@ -51,11 +50,8 @@ return Array(
$configcommand['diroptions'],
$configcommand['v_inclighty'],
$configcommand['d_inclighty'],
'lighty-disable-mod cgi',
'lighty-disable-mod fastcgi',
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
'mkdir -p ' . $settings['system']['deactivateddocroot'],
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
),
@@ -72,8 +68,8 @@ return Array(
'label' => 'Bind9',
'commands' => Array(
'apt-get install bind9',
'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
'echo "include \"' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf'
),
'restart' => Array(
'/etc/init.d/bind9 restart'
@@ -97,7 +93,7 @@ return Array(
'postfix' => Array(
'label' => 'Postfix',
'commands' => Array(
'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql',
'apt-get install postfix postfix-mysql libsasl2 libsasl2-modules libsasl2-modules-sql',
'mkdir -p /etc/postfix/sasl',
'mkdir -p /var/spool/postfix/etc/pam.d',
'mkdir -p /var/spool/postfix/var/run/mysqld',
@@ -195,9 +191,6 @@ return Array(
'daemons' => Array(
'proftpd' => Array(
'label' => 'ProFTPd',
'commands' => Array(
'apt-get install proftpd-basic proftpd-mod-mysql'
),
'files' => Array(
'etc_proftpd_modules.conf' => '/etc/proftpd/modules.conf',
'etc_proftpd_proftpd.conf' => '/etc/proftpd/proftpd.conf'
@@ -255,13 +248,17 @@ return Array(
),
'awstats' => Array(
'label' => 'Awstats',
'commands' => Array(
'apt-get install awstats',
'cp /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/lib/cgi-bin/'
),
'files' => Array(
'etc_awstats.model.conf' => '/etc/awstats/awstats.conf'
($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor',
($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats',
($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf')
),
'commands' => Array(
($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '')
),
'restart' => Array(
($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart')
)
),
'libnss' => Array(
'label' => 'libnss (system login with mysql)',

View File

@@ -1,184 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Configfiles
* @version $Id$
*/
return Array(
'freebsd' => Array(
'label' => 'FreeBSD',
'services' => Array(
'http' => Array(
'label' => $lng['admin']['configfiles']['http'],
'daemons' => Array(
'apache2' => Array(
'label' => 'Apache2 Webserver',
'commands' => Array(
'cd /usr/ports/www/apache22',
'make config',
'make install',
'touch ' . $settings['system']['apacheconf_vhost'],
'chown root:0 ' . $settings['system']['apacheconf_vhost'],
'chmod 0600 ' . $settings['system']['apacheconf_vhost'],
'touch ' . $settings['system']['apacheconf_diroptions'],
'chown root:0 ' . $settings['system']['apacheconf_diroptions'],
'chmod 0600 ' . $settings['system']['apacheconf_diroptions'],
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
'echo "accf_http_load=\"YES\"" >> /boot/loader.conf',
'echo "accf_data_load=\"YES\"" >> /boot/loader.conf',
'echo "apache22_enable=\"YES\"" >> /etc/rc.conf',
),
'restart' => Array(
'sh /usr/local/etc/rc.d/apache22 restart'
)
)
)
),
'dns' => Array(
'label' => $lng['admin']['configfiles']['dns'],
'daemons' => Array(
'powerdns' => Array(
'label' => 'PowerDNS',
'commands_1' => Array(
'cd /usr/ports/dns/powerdns',
'make config',
'make install',
'echo "add pdns_enable=\"YES\"" >> /etc/rc.conf',
),
'files' => Array(
'usr_local_etc_pdns_pdns.conf' => '/usr/local/etc/pdns/pdns.conf'
),
'commands' => Array(
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
'chown root:0 ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
'chmod 0600 ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
),
'restart' => Array(
'sh /usr/local/etc/rc.d/pdns restart'
)
),
)
),
'smtp' => Array(
'label' => $lng['admin']['configfiles']['smtp'],
'daemons' => Array(
'postfix' => Array(
'label' => 'Postfix',
'commands_1' => Array(
'cd /usr/ports/mail/postfix',
'make config',
'set Dovecot SASL authentication method',
'set Enable SSL and TLS support',
'set MySQL maps (choose version with WITH_MYSQL_VER)',
'make install'
),
'commands_2' => Array(
'pw groupadd vmail -g 5001 ',
'pw useradd vmail -u 5001 -g 5001 -s/sbin/nologin -d/dev/null',
'mkdir -p ' . $settings['system']['vmail_homedir'],
'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'],
'chmod 0750 ' . $settings['system']['vmail_homedir']
),
'commands_3' => Array(
'echo "sendmail_enable=\"NO\"" >> /etc/rc.conf',
'echo "sendmail_submit_enable=\"NO\"" >> /etc/rc.conf',
'echo "sendmail_outbound_enable=\"NO\"" >> /etc/rc.conf',
'echo "sendmail_msp_queue_enable=\"NO\"" >> /etc/rc.conf',
'echo "postfix_enable=\"YES\"" >> /etc/rc.conf'
),
'files' => Array(
'etc_periodic.conf' => '/etc/periodic.conf',
'usr_local_etc_postfix_main.cf' => '/usr/local/etc/postfix/main.cf',
'usr_local_etc_postfix_mysql-virtual_alias_maps.cf' => '/usr/local/etc/postfix/mysql-virtual_alias_maps.cf',
'usr_local_etc_postfix_mysql-virtual_mailbox_domains.cf' => '/usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf',
'usr_local_etc_postfix_mysql-virtual_mailbox_maps.cf' => '/usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf'
),
'restart' => Array(
'sh /usr/local/etc/rc.d/postfix restart'
)
),
'dkim' => Array(
'label' => 'DomainKey filter',
'commands' => Array(
'cd /usr/ports/mail/dkim-milter/',
'make install clean',
'touch /usr/local/etc/mail/dkim-filter.conf'
),
'files' => Array(
'dkim-filter.conf' => '/usr/local/etc/mail/dkim-filter.conf',
'postfix_dkim_addition.cf' => '/usr/local/etc/postfix/main.cf'
),
'restart' => Array(
'/usr/local/etc/rc.d/milter-dkim restart '
)
)
)
),
'mail' => Array(
'label' => $lng['admin']['configfiles']['mail'],
'daemons' => Array(
'dovecot' => Array(
'label' => 'Dovecot',
'commands_1' => Array(
'cd /usr/ports/mail/dovecot',
'make config',
'set kqueue(2) support ',
'set SSL support ',
'set ManageSieve support (optional)',
'set MySQL support ',
'make install',
'echo "add dovecot_enable=\"YES\"" >> /etc/rc.conf'
),
'files' => Array(
'usr_local_etc_dovecot.conf' => '/usr/local/etc/dovecot.conf',
'usr_local_etc_dovecot-sql.conf' => '/usr/local/etc/dovecot-sql.conf'
),
'commands_2' => Array(
'echo "dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}" >> /usr/local/etc/postfix/master.cf'
),
'restart' => Array(
'sh /usr/local/etc/rc.d/dovecot restart'
)
)
)
),
'ftp' => Array(
'label' => $lng['admin']['configfiles']['ftp'],
'daemons' => Array(
'proftpd' => Array(
'label' => 'ProFTPd',
'files' => Array(
'etc_proftpd_proftpd.conf' => '/etc/proftpd/proftpd.conf'
),
'commands' => Array(
'touch /etc/proftpd/proftpd.conf',
'chown root:0 /etc/proftpd/proftpd.conf',
'chmod 0600 /etc/proftpd/proftpd.conf'
),
'restart' => Array(
'/etc/init.d/proftpd restart'
)
)
)
)
)
)
);
?>

View File

@@ -34,10 +34,9 @@ return Array(
'chown root:0 ' . $settings['system']['apacheconf_diroptions'],
'chmod 0600 ' . $settings['system']['apacheconf_diroptions'],
'mkdir -p ' . $settings['system']['documentroot_prefix'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['logfiles_directory'],
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir']
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
),
'restart' => Array(
'rc-update add apache2 default',
@@ -55,8 +54,7 @@ return Array(
$configcommand['v_inclighty'],
$configcommand['d_inclighty'],
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : ''
'mkdir -p ' . $settings['system']['logfiles_directory']
),
'restart' => Array(
'rc-update add lighttpd default',
@@ -74,10 +72,10 @@ return Array(
'etc_bind_default.zone' => '/etc/bind/default.zone'
),
'commands' => Array(
'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
'chown root:0 ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf',
'chmod 0600 ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
'echo "include \"' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf',
'chown root:0 ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf',
'chmod 0600 ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf'
),
'restart' => Array(
'rc-update add named default',
@@ -131,21 +129,19 @@ return Array(
'dkim' => Array(
'label' => 'DomainKey filter',
'commands_1' => Array(
'emerge dkim-milter',
'emerge --config mail-filter/dkim-milter',
'mkdir -p /etc/postfix/dkim'
),
'files' => Array(
'dkim-filter.conf' => '/etc/mail/dkim-filter/dkim-filter.conf'
'dkim-filter.conf' => '/etc/postfix/dkim/dkim-filter.conf'
),
'commands_2' => Array(
'echo "smtpd_milters = inet:localhost:8891
milter_macro_daemon_name = SIGNING
milter_default_action = accept" >> /etc/postfix/main.cf'
'chgrp postfix /etc/postfix/dkim/dkim-filter.conf',
'echo "smtpd_milters = inet:localhost:8891\n
milter_macro_daemon_name = SIGNING\n
milter_default_action = accept\n" >> /etc/postfix/main.cf'
),
'restart' => Array(
'rc-update add dkim-filter default',
'/etc/init.d/postfix restart'
'/etc/init.d/dkim-filter restart'
)
)
)
@@ -270,13 +266,17 @@ milter_default_action = accept" >> /etc/postfix/main.cf'
),
'awstats' => Array(
'label' => 'Awstats',
'commands' => Array(
'emerge awstats',
'awstats_configure.pl'
),
'files' => Array(
'etc_awstats.model.conf' => '/etc/awstats/awstats.model.conf'
($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor',
($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats',
($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf')
),
'commands' => Array(
($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '')
),
'restart' => Array(
($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart')
)
),
'libnss' => Array(
'label' => 'libnss (system login with mysql)',

View File

@@ -29,10 +29,9 @@ return Array(
'commands' => Array(
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
'a2dismod userdir'
'a2dismod userdir',
),
'restart' => Array(
'/etc/init.d/apache2 restart'
@@ -51,13 +50,10 @@ return Array(
$configcommand['diroptions'],
$configcommand['v_inclighty'],
$configcommand['d_inclighty'],
'lighty-disable-mod cgi',
'lighty-disable-mod fastcgi',
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir']
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
),
'restart' => Array(
'/etc/init.d/lighttpd restart'
@@ -71,8 +67,8 @@ return Array(
'bind' => Array(
'label' => 'Bind9',
'commands' => Array(
'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
'echo "include \"' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf'
),
'restart' => Array(
'/etc/init.d/bind9 restart'
@@ -192,9 +188,6 @@ return Array(
'daemons' => Array(
'proftpd' => Array(
'label' => 'ProFTPd',
'commands' => Array(
'apt-get install proftpd-basic proftpd-mod-mysql'
),
'files' => Array(
'etc_proftpd_modules.conf' => '/etc/proftpd/modules.conf',
'etc_proftpd_proftpd.conf' => '/etc/proftpd/proftpd.conf'
@@ -249,13 +242,17 @@ return Array(
),
'awstats' => Array(
'label' => 'Awstats',
'commands' => Array(
'apt-get install awstats',
'cp /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/lib/cgi-bin/'
),
'files' => Array(
'etc_awstats.model.conf' => '/etc/awstats/awstats.model.conf'
($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor',
($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats',
($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf')
),
'commands' => Array(
($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '')
),
'restart' => Array(
($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart')
)
),
'libnss' => Array(
'label' => 'libnss (system login with mysql)',

View File

@@ -29,10 +29,9 @@ return Array(
'commands' => Array(
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
'a2dismod userdir'
'a2dismod userdir',
),
'restart' => Array(
'/etc/init.d/apache2 restart'
@@ -51,13 +50,10 @@ return Array(
$configcommand['diroptions'],
$configcommand['v_inclighty'],
$configcommand['d_inclighty'],
'lighty-disable-mod cgi',
'lighty-disable-mod fastcgi',
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : '',
'mkdir -p ' . $settings['system']['mod_fcgid_tmpdir'],
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir']
'chmod 1777 ' . $settings['system']['mod_fcgid_tmpdir'],
),
'restart' => Array(
'/etc/init.d/lighttpd restart'
@@ -72,8 +68,8 @@ return Array(
'label' => 'Bind9',
'commands' => Array(
'apt-get install bind9',
'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
'echo "include \"' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf\";" >> /etc/bind/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf'
),
'restart' => Array(
'/etc/init.d/bind9 restart'
@@ -97,7 +93,7 @@ return Array(
'postfix' => Array(
'label' => 'Postfix',
'commands' => Array(
'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql',
'apt-get install postfix postfix-mysql libsasl2 libsasl2-modules libsasl2-modules-sql',
'mkdir -p /etc/postfix/sasl',
'mkdir -p /var/spool/postfix/etc/pam.d',
'mkdir -p /var/spool/postfix/var/run/mysqld',
@@ -195,9 +191,6 @@ return Array(
'daemons' => Array(
'proftpd' => Array(
'label' => 'ProFTPd',
'commands' => Array(
'apt-get install proftpd-basic proftpd-mod-mysql'
),
'files' => Array(
'etc_proftpd_sql.conf' => '/etc/proftpd/sql.conf',
'etc_proftpd_modules.conf' => '/etc/proftpd/modules.conf',
@@ -256,13 +249,17 @@ return Array(
),
'awstats' => Array(
'label' => 'Awstats',
'commands' => Array(
'apt-get install awstats',
'cp /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/lib/cgi-bin/'
),
'files' => Array(
'etc_awstats.model.conf' => '/etc/awstats/awstats.conf'
($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor',
($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats',
($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf')
),
'commands' => Array(
($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '')
),
'restart' => Array(
($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart')
)
),
'libnss' => Array(
'label' => 'libnss (system login with mysql)',

View File

@@ -31,8 +31,7 @@ return Array(
$configcommand['diroptions'],
$configcommand['include'],
'mkdir -p ' . $settings['system']['documentroot_prefix'],
'mkdir -p ' . $settings['system']['logfiles_directory'],
($settings['system']['deactivateddocroot'] != '') ? 'mkdir -p ' . $settings['system']['deactivateddocroot'] : ''
'mkdir -p ' . $settings['system']['logfiles_directory']
),
'restart' => Array(
'/etc/init.d/apache2 restart'
@@ -46,8 +45,8 @@ return Array(
'bind' => Array(
'label' => 'Bind9',
'commands' => Array(
'echo "include \"' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf\";" >> /etc/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'froxlor_bind.conf'
'echo "include \"' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf\";" >> /etc/named.conf',
'touch ' . $settings['system']['bindconf_directory'] . 'syscp_bind.conf'
),
'restart' => Array(
'/etc/init.d/named restart'
@@ -137,11 +136,16 @@ return Array(
),
'awstats' => Array(
'label' => 'Awstats',
'commands' => Array(
'awstats_configure.pl'
),
'files' => Array(
'etc_awstats.model.conf' => '/etc/awstats/awstats.conf'
($settings['system']['mod_log_sql'] == 1 ? 'etc_awstats_awstats.model_log_sql.conf.froxlor' : 'etc_awstats_awstats.model.conf.froxlor') => '/etc/awstats/awstats.model.conf.froxlor',
($settings['system']['mod_log_sql'] == 1 ? 'etc_cron.d_awstats_log_sql' : 'etc_cron.d_awstats') => '/etc/cron.d/awstats',
($settings['system']['webserver'] == 'lighttpd' ? 'etc_lighttpd_froxlor-awstats.conf' : 'etc_apache_vhosts_05_awstats.conf') => ($settings['system']['webserver'] == 'lighttpd' ? '/etc/lighttpd/froxlor-awstats.conf' : '/etc/apache2/sites-enabled/05_awstats.conf')
),
'commands' => Array(
($settings['system']['webserver'] == 'lighttpd' ? 'echo "include \"froxlor-awstats.conf\"" >> /etc/lighttpd/lighttpd.conf' : '')
),
'restart' => Array(
($settings['system']['webserver'] == 'lighttpd' ? '/etc/init.d/lighttpd restart' : '/etc/init.d/apache2 restart')
)
)
)

View File

@@ -45,6 +45,6 @@ else
$cfgPath = 'lib/configfiles/';
$configfiles = Array();
$configfiles = array_merge(include $cfgPath . 'lenny.inc.php', include $cfgPath . 'etch.inc.php', include $cfgPath . 'hardy.inc.php', include $cfgPath . 'gentoo.inc.php', include $cfgPath . 'suse10.inc.php', include $cfgPath . 'freebsd.inc.php');
$configfiles = array_merge(include $cfgPath . 'lenny.inc.php', include $cfgPath . 'etch.inc.php', include $cfgPath . 'hardy.inc.php', include $cfgPath . 'gentoo.inc.php', include $cfgPath . 'suse10.inc.php');
?>

View File

@@ -24,12 +24,6 @@ if(@php_sapi_name() != 'cli'
die('This script will only work in the shell.');
}
// ensure that default timezone is set
if(function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get"))
{
@date_default_timezone_set(@date_default_timezone_get());
}
$lockdir = '/var/run/';
$lockFilename = 'froxlor_' . basename($_SERVER['PHP_SELF'], '.php') . '.lock-';
$lockfName = $lockFilename . getmypid();

View File

@@ -48,7 +48,7 @@ function makePathfield($path, $uid, $gid, $fieldType, $value = '')
if(sizeof($dirList) > 0)
{
if(sizeof($dirList) <= 100)
if(sizeof(dirList) <= 100)
{
$field = '<select name="path">';
foreach($dirList as $key => $dir)

View File

@@ -26,15 +26,13 @@
* @param string The dir which should be created
* @param int The uid of the user
* @param int The gid of the user
* @param bool Place standard-index.html into the new folder
*
* @return bool true if everything went okay, false if something went wrong
*
* @author Florian Lippert <flo@syscp.org>
* @author Martin Burchert <martin.burchert@syscp.org>
*/
function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid, $placeindex = false)
function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid)
{
$returncode = true;
@@ -75,17 +73,6 @@ function mkDirWithCorrectOwnership($homeDir, $dirToCreate, $uid, $gid, $placeind
{
$sdir = makeCorrectDir($sdir);
safe_exec('mkdir -p ' . escapeshellarg($sdir));
/**
* #68
*/
if ($placeindex) {
$loginname = getLoginNameByUid($uid);
if ($loginname !== false) {
storeDefaultIndex($loginname, $sdir, null);
}
}
safe_exec('chown -R ' . (int)$uid . ':' . (int)$gid . ' ' . escapeshellarg($sdir));
}
}

View File

@@ -51,12 +51,11 @@ function safe_exec($exec_string, &$return_value = false)
$settings['system']['apachereload_command'],
$settings['system']['bindreload_command'],
$settings['dkim']['dkimrestart_command'],
$settings['system']['awstats_updateall_command'],
'openssl',
'unzip',
'php',
'rm',
'awstats_buildstaticpages.pl',
'ln'
'rm'
);
//
@@ -76,8 +75,6 @@ function safe_exec($exec_string, &$return_value = false)
die('SECURITY CHECK FAILED!' . "\n" . 'The execute string "' . htmlspecialchars($exec_string) . '" is a possible security risk!' . "\n" . 'Please check your whole server for security problems by hand!' . "\n");
}
/*
* This is not needed anymore, we allow all commands and just check for pipes and stuff
//
// check if command is allowed here
//
@@ -85,7 +82,7 @@ function safe_exec($exec_string, &$return_value = false)
$ok = false;
foreach($allowed_commands as $allowed_command)
{
if(strpos($exec_string, $allowed_command) === 0
if(strpos($exec_string, $allowed_command) == 0
&& (strlen($exec_string) === ($allowed_command_pos = strlen($allowed_command)) || substr($exec_string, $allowed_command_pos, 1) === ' '))
{
$ok = true;
@@ -96,7 +93,6 @@ function safe_exec($exec_string, &$return_value = false)
{
die('SECURITY CHECK FAILED!' . "\n" . 'Your command "' . htmlspecialchars($exec_string) . '" is not allowed!' . "\n" . 'Please check your whole server for security problems by hand!' . "\n");
}
*/
//
// execute the command and return output

View File

@@ -1,50 +0,0 @@
<?php
/**
* store the default index-file in a given destination folder
*
* @param string $loginname customers loginname
* @param string $destination path where to create the file
* @param object $logger FroxlorLogger object
* @param boolean $force force creation whatever the settings say (needed for task #2, create new user)
*
* @return null
*/
function storeDefaultIndex($loginname = null, $destination = null, $logger = null, $force = false)
{
global $db, $settings, $pathtophpfiles;
if ($force
|| (int)$settings['system']['store_index_file_subs'] == 1
) {
$result = $db->query("SELECT `t`.`value`, `c`.`email` AS `customer_email`, `a`.`email` AS `admin_email`, `c`.`loginname` AS `customer_login`, `a`.`loginname` AS `admin_login` FROM `" . TABLE_PANEL_CUSTOMERS . "` AS `c` INNER JOIN `" . TABLE_PANEL_ADMINS . "` AS `a` ON `c`.`adminid` = `a`.`adminid` INNER JOIN `" . TABLE_PANEL_TEMPLATES . "` AS `t` ON `a`.`adminid` = `t`.`adminid` WHERE `varname` = 'index_html' AND `c`.`loginname` = '" . $db->escape($loginname) . "'");
if($db->num_rows($result) > 0)
{
$template = $db->fetch_array($result);
$replace_arr = array(
'SERVERNAME' => $settings['system']['hostname'],
'CUSTOMER' => $template['customer_login'],
'ADMIN' => $template['admin_login'],
'CUSTOMER_EMAIL' => $template['customer_email'],
'ADMIN_EMAIL' => $template['admin_email']
);
$htmlcontent = replace_variables($template['value'], $replace_arr);
$indexhtmlpath = makeCorrectFile($destination . '/index.' . $settings['system']['index_file_extension']);
$index_html_handler = fopen($indexhtmlpath, 'w');
fwrite($index_html_handler, $htmlcontent);
fclose($index_html_handler);
if ($logger !== null) {
$logger->logAction(CRON_ACTION, LOG_NOTICE, 'Creating \'index.' . $settings['system']['index_file_extension'] . '\' for Customer \'' . $template['customer_login'] . '\' based on template in directory ' . escapeshellarg($indexhtmlpath));
}
}
else
{
if ($logger !== null) {
$logger->logAction(CRON_ACTION, LOG_NOTICE, 'Running: cp -a ' . $pathtophpfiles . '/templates/misc/standardcustomer/* ' . escapeshellarg($destination));
}
safe_exec('cp -a ' . $pathtophpfiles . '/templates/misc/standardcustomer/* ' . escapeshellarg($destination));
}
}
return;
}

View File

@@ -19,20 +19,13 @@
function validateFormFieldHidden($fieldname, $fielddata, $newfieldvalue)
{
/**
* don't show error on cronjob-timestamps changing
* because it might be possible that the cronjob ran
* while settings have been edited (bug #52)
*/
if($newfieldvalue === $fielddata['value']
|| $fieldname == 'system_last_tasks_run'
|| $fieldname == 'system_last_traffic_run'
|| $fieldname == 'system_lastcronrun'
) {
if($newfieldvalue === $fielddata['value'])
{
return true;
}
else
{
return 'hiddenfieldvaluechanged';
// TODO: Throw some error that actually makes sense - false would just throw unknown error
return false;
}
}

View File

@@ -27,10 +27,6 @@ function validateFormFieldString($fieldname, $fielddata, $newfieldvalue)
$returnvalue = true;
foreach($newfieldvalues as $single_newfieldvalue)
{
/**
* don't use tabs in value-fields, #81
*/
$single_newfieldvalue = str_replace("\t", " ", $single_newfieldvalue);
$single_returnvalue = validateFormFieldString($fieldname, $fielddata, $single_newfieldvalue);
if($single_returnvalue !== true)
{
@@ -43,11 +39,6 @@ function validateFormFieldString($fieldname, $fielddata, $newfieldvalue)
{
$returnvalue = false;
/**
* don't use tabs in value-fields, #81
*/
$newfieldvalue = str_replace("\t", " ", $newfieldvalue);
if(isset($fielddata['string_type']) && $fielddata['string_type'] == 'mail')
{
$returnvalue = (filter_var($newfieldvalue, FILTER_VALIDATE_EMAIL) == $newfieldvalue);

View File

@@ -60,17 +60,16 @@ function getNextCronjobs()
function includeCronjobs($debugHandler, $pathtophpfiles)
{
global $settings;
$cronjobs = getNextCronjobs();
$jobs_to_run = array();
$cron_path = makeCorrectDir($pathtophpfiles.'/scripts/jobs/');
if($cronjobs !== false
&& is_array($cronjobs)
&& isset($cronjobs[0]))
{
$cron_path = makeCorrectDir($pathtophpfiles.'/scripts/jobs/');
foreach($cronjobs as $cronjob)
{
$cron_file = makeCorrectFile($cron_path.$cronjob);
@@ -78,17 +77,6 @@ function includeCronjobs($debugHandler, $pathtophpfiles)
}
}
/**
* if we're on realtime and cron_tasks is not one
* of the jobs to run, we add it so the changes are being applied
*/
if ($settings['system']['realtime_port'] !== 0) {
$cron_file = makeCorrectFile($cron_path.'/cron_tasks.php');
if (!in_array($cron_file, $jobs_to_run)) {
$jobs_to_run[] = $cron_file;
}
}
return $jobs_to_run;
}

View File

@@ -24,54 +24,38 @@
* @param logFile
* @param siteDomain
* @param hostAliases
* @return null
* @return
* @author Michael Duergner
* @author Berend Dekens
*/
function createAWStatsConf($logFile, $siteDomain, $hostAliases, $customerDocroot)
function createAWStatsConf($logFile, $siteDomain, $hostAliases)
{
global $pathtophpfiles, $settings;
global $pathtophpfiles;
// Generation header
$header = "## GENERATED BY FROXLOR\n";
$header = "## GENERATED BY SYSCP\n";
$header2 = "## Do not remove the line above! This tells Froxlor to update this configuration\n## If you wish to manually change this configuration file, remove the first line to make sure Froxlor won't rebuild this file\n## Generated for domain {SITE_DOMAIN} on " . date('l dS \of F Y h:i:s A') . "\n";
$awstats_dir = makeCorrectDir($customerDocroot.'/awstats/'.$siteDomain.'/');
if(!is_dir($awstats_dir))
{
safe_exec('mkdir -p '.escapeshellarg($awstats_dir));
}
// These are the variables we will replace
$regex = array(
'/\{LOG_FILE\}/',
'/\{SITE_DOMAIN\}/',
'/\{HOST_ALIASES\}/',
'/\{CUSTOMER_DOCROOT\}/'
'/\{HOST_ALIASES\}/'
);
$replace = array(
makeCorrectFile($logFile),
$logFile,
$siteDomain,
$hostAliases,
$awstats_dir
$hostAliases
);
// File names
$domain_file = '/etc/awstats/awstats.' . $siteDomain . '.conf';
$model_file = dirname(dirname(dirname(dirname(__FILE__))));
$model_file.= '/templates/misc/awstatsmodel/';
if($settings['system']['mod_log_sql'] == '1')
{
$model_file.= 'awstats.froxlor.model_log_sql.conf';
} else {
$model_file.= 'awstats.froxlor.model.conf';
}
$model_file = '/etc/awstats/awstats.model.conf.froxlor';
$model_file = makeCorrectFile($model_file);
// Test if the file exists
if(file_exists($domain_file))

View File

@@ -1,21 +0,0 @@
<?php
/**
* returns the customer-id of a customer by given domain
*
* @param string $domain users domain
*
* @return int customers id
*/
function getCustomerIdByDomain($domain = null)
{
global $db;
$result = $db->query_first("SELECT `customerid` FROM `" . TABLE_PANEL_DOMAINS . "` WHERE `domain` = '".$domain."'");
if(is_array($result)
&& isset($result['customerid'])
) {
return $result['customerid'];
}
return false;
}

View File

@@ -1,21 +0,0 @@
<?php
/**
* returns the loginname of a customer by given uid
*
* @param int $uid uid of customer
*
* @return string customers loginname
*/
function getLoginNameByUid($uid = null)
{
global $db;
$result = $db->query_first("SELECT `loginname` FROM `" . TABLE_PANEL_CUSTOMERS . "` WHERE `guid` = '".(int)$uid."'");
if(is_array($result)
&& isset($result['loginname'])
) {
return $result['loginname'];
}
return false;
}

View File

@@ -64,23 +64,21 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '')
}
if($doupdate === true
&& (int)$settings['system']['realtime_port'] !== 0
&& function_exists('socket_create'))
&& (int)$settings['system']['realtime_port'] !== 0)
{
$timeout = 15;
//$socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$socket = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if($socket !== false)
{
// create the request packet
$packet = chr(0) . chr(1) . 'RUN' . chr(0);
// UDP is connectionless, so we just send on it.
//@socket_sendto($socket, $packet, strlen($packet), 0x100, '127.0.0.1', (int)$settings['system']['realtime_port']);
@socket_sendto($socket, $packet, strlen($packet), 0x100, '127.0.0.1', (int)$settings['system']['realtime_port']);
/*
* this is for TCP-Connections
*/
*
$time = time();
while(!@socket_connect($socket, '127.0.0.1', (int)$settings['system']['realtime_port']))
@@ -99,9 +97,7 @@ function inserttask($type, $param1 = '', $param2 = '', $param3 = '')
continue;
}
}
/**
* close socket
*/
*/
@socket_close($socket);
}
}

View File

@@ -30,33 +30,26 @@ function openRootDB($debugHandler, $lockfile)
{
global $db_root;
require dirname(dirname(dirname(__FILE__))).'/userdata.inc.php';
// Legacy sql-root-information
if(isset($sql['root_user']) && isset($sql['root_password']) && (!isset($sql_root) || !is_array($sql_root)))
// If one cronscript needs root, it should say $needrootdb = true before the include
if(isset($needrootdb)
&& $needrootdb === true)
{
$sql_root = array(0 => array('caption' => 'Default', 'host' => $sql['host'], 'user' => $sql['root_user'], 'password' => $sql['root_password']));
unset($sql['root_user']);
unset($sql['root_password']);
$db_root = new db($sql_root[0]['host'], $sql_root[0]['user'], $sql_root[0]['password'], '');
if($db_root->link_id == 0)
{
/**
* Do not proceed further if no database connection could be established
*/
fclose($debugHandler);
unlink($lockfile);
die('root can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...');
}
unset($db_root->password);
fwrite($debugHandler, 'Database-rootconnection established' . "\n");
}
$db_root = new db($sql_root[0]['host'], $sql_root[0]['user'], $sql_root[0]['password'], '');
if($db_root->link_id == 0)
{
/**
* Do not proceed further if no database connection could be established
*/
fclose($debugHandler);
unlink($lockfile);
die('root can\'t connect to mysqlserver. Please check userdata.inc.php! Exiting...');
}
unset($db_root->password);
fwrite($debugHandler, 'Database-rootconnection established' . "\n");
unset($sql);
}
function closeRootDB()

View File

@@ -134,26 +134,26 @@ function showUpdateStep($task = null, $needs_status = true)
* outputs [OK] (success), [??] (warning) or [!!] (failure)
* of the last update-step
*
* @param int status (0 = success, 1 = warning, 2 = failure)
* @param int status (0 = success, 1 = warning, -1 = failure)
*
* @return string formatted output and log-entry
*/
function lastStepStatus($status = -1, $message = '')
function lastStepStatus($status = -1)
{
global $updatelog;
switch($status)
{
case 0:
$status_sign = ($message != '') ? '['.$message.']' : '[OK]';
$status_sign = '[OK]';
$status_color = '1dcd00';
break;
case 1:
$status_sign = ($message != '') ? '['.$message.']' : '[??]';
$status_sign = '[??]';
$status_color = 'db7100';
break;
case 2:
$status_sign = ($message != '') ? '['.$message.']' : '[!!]';
$status_sign = '[!!]';
$status_color = 'ff0000';
break;
default:

View File

@@ -30,17 +30,6 @@ function storeSettingField($fieldname, $fielddata, $newfieldvalue)
{
toggleCronStatus($fielddata['cronmodule'], $newfieldvalue);
}
/*
* satisfy dependencies
*/
if(isset($fielddata['dependency']) && is_array($fielddata['dependency']))
{
if((int)$fielddata['dependency']['onlyif'] == (int)$newfieldvalue)
{
storeSettingField($fielddata['dependency']['fieldname'], $fielddata['dependency']['fielddata'], $newfieldvalue);
}
}
return array($fielddata['settinggroup'] . '.' . $fielddata['varname'] => $newfieldvalue);
}

View File

@@ -29,24 +29,13 @@
*
* @return null
*/
function checkLastGuid()
function checkLastGuid($froxlor_guid = 0)
{
global $log, $cronlog, $db, $settings;
$mylog = null;
if (isset($cronlog) && $cronlog instanceof FroxlorLogger) {
$mylog = $cronlog;
} else {
$mylog = $log;
}
global $cronlog;
$group_lines = array();
$group_guids = array();
$update_to_guid = 0;
$froxlor_guid = 0;
$result = $db->query_first("SELECT MAX(`guid`) as `fguid` FROM `".TABLE_PANEL_CUSTOMERS."`");
$froxlor_guid = $result['fguid'];
$g_file = '/etc/group';
@@ -65,44 +54,28 @@ function checkLastGuid()
foreach($group_guids as $idx => $group)
{
/**
* nogroup | nobody have very high guids
* ignore them
*/
if($group[0] == 'nogroup'
|| $group[0] == 'nobody'
) {
continue;
}
$guid = $group[2];
$guid = isset($group[2]) ? (int)$group[2] : 0;
if($guid > $update_to_guid)
if($guid > $froxlor_guid)
{
$update_to_guid = $guid;
}
}
if($update_to_guid < $froxlor_guid)
if($update_to_guid > $froxlor_guid)
{
$update_to_guid = $froxlor_guid;
if ($update_to_guid != $settings['system']['lastguid'])
{
$mylog->logAction(CRON_ACTION, LOG_NOTICE, 'Updating froxlor last guid to '.$update_to_guid);
saveSetting('system', 'lastguid', $update_to_guid);
$settings['system']['lastguid'] = $update_to_guid;
}
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Updating froxlor last guid to '.$update_to_guid);
saveSetting('system', 'lastguid', $update_to_guid);
}
}
else
{
$mylog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
}
}
else
{
$mylog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'File /etc/group not readable; cannot check for latest guid');
}
}
else

View File

@@ -1,43 +0,0 @@
<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* For the full copyright and license information, please view the COPYING
* file that was distributed with this source code. You can also view the
* COPYING file online at http://files.froxlor.org/misc/COPYING.txt
*
* @copyright (c) the authors
* @author Froxlor team <team@froxlor.org> (2010-)
* @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
* @package Functions
* @version $Id$
*/
/**
* Function validatePassword
*
* if password-min-length is set in settings
* we check against the length, if not matched
* an error message will be output and 'exit' is called
*
* @param string $password the password to validate
*
* @return string either the password or an errormessage+exit
*/
function validatePassword($password = null)
{
global $settings;
if ($settings['panel']['password_min_length'] > 0) {
$password = validate(
$password,
$settings['panel']['password_min_length'], /* replacer needs to be password length, not the fieldname */
'/^.{'.(int)$settings['panel']['password_min_length'].',}$/D',
'notrequiredpasswordlength'
);
}
return $password;
}

View File

@@ -21,7 +21,7 @@
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: text/html; charset=iso-8859-1");
header("Content-type: text/html; charset=utf-8");
// ensure that default timezone is set
if(function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get"))
@@ -49,8 +49,7 @@ $filename = basename($_SERVER['PHP_SELF']);
if(!file_exists('./lib/userdata.inc.php'))
{
$config_hint = file_get_contents('./templates/misc/configurehint.tpl');
die($config_hint);
die('You have to <a href="./install/install.php">configure</a> Froxlor first!');
}
if(!is_readable('./lib/userdata.inc.php'))
@@ -155,10 +154,8 @@ $settings = loadSettings(&$settings_data, &$db);
/*
* when upgrading from syscp, the header-graphic gets lost
*/
if(!isset($settings['admin']['froxlor_graphic'])
|| $settings['admin']['froxlor_graphic'] == ''
) {
$settings['admin']['froxlor_graphic'] = ($settings['admin']['syscp_graphic'] != '') ? $settings['admin']['syscp_graphic'] : 'images/header.gif';
if(!isset($settings['admin']['froxlor_graphic'])) {
$settings['admin']['froxlor_graphic'] = $settings['admin']['syscp_graphic'];
}
/**
@@ -416,10 +413,6 @@ if($page == '')
*/
$mail = new PHPMailer();
// set return-to address and custom sender-name, see #76
$mail->SetFrom($settings['panel']['adminmail'], $settings['panel']['adminmail_defname']);
if ($settings['panel']['adminmail_return'] != '') {
$mail->AddReplyTo($settings['panel']['adminmail_return'], $settings['panel']['adminmail_defname']);
}
$mail->From = $settings['panel']['adminmail'];
?>

View File

@@ -200,11 +200,15 @@ return array (
'label' => $lng['admin']['ipsandports']['ipsandports'],
'required_resources' => 'change_serversettings',
),
/*
* @TODO this is for Froxlor-1.0
*
array (
'url' => 'admin_cronjobs.php?page=overview',
'label' => $lng['admin']['cron']['cronsettings'],
'required_resources' => 'change_serversettings',
),
*/
array (
'url' => 'admin_settings.php?page=rebuildconfigs',
'label' => $lng['admin']['rebuildconf'],

View File

@@ -68,8 +68,7 @@ define('PACKAGE_ENABLED', 2);
// VERSION INFO
$version = '0.9.4';
$version = '0.9';
$dbversion = '2';
$branding = '';
?>

File diff suppressed because it is too large Load Diff

View File

@@ -243,7 +243,7 @@ $lng['error']['domainname'] = $lng['domains']['domainname'];
$lng['question']['question'] = 'Security question';
$lng['question']['admin_customer_reallydelete'] = 'Do you really want to delete the customer %s? This cannot be undone!';
$lng['question']['admin_domain_reallydelete'] = 'Do you really want to delete the domain %s?';
$lng['question']['admin_domain_reallydisablesecuritysetting'] = 'Do you really want to disable these Security settings (OpenBasedir and/or SafeMode)?';
$lng['question']['admin_domain_reallydisablesecuritysetting'] = 'Do you really want to deactivate these Security settings (OpenBasedir and/or SafeMode)?';
$lng['question']['admin_admin_reallydelete'] = 'Do you really want to delete the admin %s? Every customer and domain will be reassigned to your account.';
$lng['question']['admin_template_reallydelete'] = 'Do you really want to delete the template \'%s\'?';
$lng['question']['domains_reallydelete'] = 'Do you really want to delete the domain %s?';
@@ -369,9 +369,9 @@ $lng['serversettings']['webftp_url']['title'] = 'WebFTP URL';
$lng['serversettings']['webftp_url']['description'] = 'What\'s the URL to WebFTP? (has to start with http(s)://)';
$lng['serversettings']['language']['description'] = 'What\'s your standard server language?';
$lng['serversettings']['maxloginattempts']['title'] = 'Max Login Attempts';
$lng['serversettings']['maxloginattempts']['description'] = 'Maximum login attempts after which the account gets disabled.';
$lng['serversettings']['deactivatetime']['title'] = 'Deactivation Time';
$lng['serversettings']['deactivatetime']['description'] = 'Time (sec.) an account gets disabled after too many login tries.';
$lng['serversettings']['maxloginattempts']['description'] = 'Maximum login attempts after which the account gets deactivated.';
$lng['serversettings']['deactivatetime']['title'] = 'Deactivate Time';
$lng['serversettings']['deactivatetime']['description'] = 'Time (sec.) an account gets deactivated after too many login tries.';
$lng['serversettings']['pathedit']['title'] = 'Type of path input';
$lng['serversettings']['pathedit']['description'] = 'Should a path be selected by a dropdown menu or by an input field?';
$lng['serversettings']['nameservers']['title'] = 'Nameservers';
@@ -425,7 +425,7 @@ $lng['panel']['urloverridespath'] = 'URL (overrides path)';
$lng['panel']['pathorurl'] = 'Path or URL';
$lng['error']['sessiontimeoutiswrong'] = 'Only numerical &quot;Session Timeout&quot; is allowed.';
$lng['error']['maxloginattemptsiswrong'] = 'Only numerical &quot;Max Login Attempts&quot; are allowed.';
$lng['error']['deactivatetimiswrong'] = 'Only numerical &quot;Deactivation Time&quot; is allowed.';
$lng['error']['deactivatetimiswrong'] = 'Only numerical &quot;Deactivate Time&quot; is allowed.';
$lng['error']['accountprefixiswrong'] = 'The &quot;Customerprefix&quot; is wrong.';
$lng['error']['mysqlprefixiswrong'] = 'The &quot;SQL Prefix&quot; is wrong.';
$lng['error']['ftpprefixiswrong'] = 'The &quot;FTP Prefix&quot; is wrong.';
@@ -872,7 +872,7 @@ $lng['pwdreminder']['success'] = 'Password reset successfully.<br />You now shou
// ADDED IN 1.2.19-svn18
$lng['serversettings']['allow_password_reset']['title'] = 'Allow password reset by customers';
$lng['pwdreminder']['notallowed'] = 'Password reset is disabled';
$lng['pwdreminder']['notallowed'] = 'Password reset is deactivated';
// ADDED IN 1.2.19-svn20
@@ -950,7 +950,7 @@ $lng['error']['accountnotexisting'] = 'The given email account doesn\'t exist.';
$lng['error']['autoresponderalreadyexists'] = 'There is already an autoresponder configured for this account.';
$lng['error']['invalidautoresponder'] = 'The given account is invalid.';
$lng['serversettings']['autoresponder_active']['title'] = 'Use autoresponder module';
$lng['serversettings']['autoresponder_active']['description'] = 'Do you want to use the autoresponder module?';
$lng['serversettings']['autoresponder_active']['description'] = 'Do you want to use the autoresponder module? Therefore an extra cronjob must be set up.';
$lng['admin']['security_settings'] = 'Security Options';
$lng['admin']['know_what_youre_doing'] = 'Change only, if you know what you\'re doing!';
$lng['admin']['show_version_login']['title'] = 'Show Froxlor version on login';
@@ -983,7 +983,7 @@ $lng['error']['info'] = 'Info';
$lng['admin']['phpconfig']['template_replace_vars'] = 'Variables that will be replaced in the configs';
$lng['admin']['phpconfig']['safe_mode'] = 'Will be replaced with the safe_mode setting of the domain.';
$lng['admin']['phpconfig']['pear_dir'] = 'Will be replaced with the global setting for the pear directory.';
$lng['admin']['phpconfig']['open_basedir_c'] = 'Will insert a ; (semicolon) to comment-out/disable open_basedir when set';
$lng['admin']['phpconfig']['open_basedir_c'] = 'Will insert a ; (semicolon) to comment-out/deactivate open_basedir when set';
$lng['admin']['phpconfig']['open_basedir'] = 'Will be replaced with the open_basedir setting of the domain.';
$lng['admin']['phpconfig']['tmp_dir'] = 'Will be replaced with the temporary directory of the domain.';
$lng['admin']['phpconfig']['open_basedir_global'] = 'Will be replaced with the global value of the path which will be attached to the open_basedir.';
@@ -1110,7 +1110,7 @@ $lng['aps']['invalidzipfile'] = '<strong>Errors for <em>%s</em></strong><br/><ul
$lng['aps']['successpackageupdate'] = '<strong><em>%s</em> successfully installed as a Package update</strong>';
$lng['aps']['successpackageinstall'] = '<strong><em>%s</em> successfully installed as a new Package</strong>';
$lng['aps']['class_zip_missing'] = 'SimpleXML Class, exec function or ZIP Functions missing or not enabled! For further information about this problem look into the handbook for this module.';
$lng['aps']['dir_permissions'] = 'The PHP/Webserver process must be able to write in the directory {$path}temp/ and {$path}packages/';
$lng['aps']['dir_permissions'] = 'The PHP/Webserver process must be able to write in the directory /var/www/froxlor/temp/ and /var/www/froxlor/packages/';
$lng['aps']['initerror'] = '<strong>There are some problems with this module:</strong><ul>%s</ul>Fix these problems, otherwise the module cannot be used!';
$lng['aps']['iderror'] = 'Wrong id specified!';
$lng['aps']['nopacketsforinstallation'] = 'There are no packages to install.';
@@ -1192,7 +1192,7 @@ $lng['error']['admindoesntexist'] = 'The admin you have chosen doesn\'t exist.';
// ADDED IN 1.2.19-svn37
$lng['serversettings']['system_realtime_port']['title'] = 'Port for realtime Froxlor';
$lng['serversettings']['system_realtime_port']['description'] = 'Froxlor connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature is disabled.<br />See also: <a href="http://wiki.froxlor.org/doc/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['system_realtime_port']['description'] = 'Froxlor connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature ist deactivated.<br />See also: <a href="https://wiki.froxlor.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['session_allow_multiple_login']['title'] = 'Allow multiple login';
$lng['serversettings']['session_allow_multiple_login']['description'] = 'If activated a user could login multiple times.';
$lng['serversettings']['panel_allow_domain_change_admin']['title'] = 'Allow moving domains between admins';
@@ -1262,6 +1262,22 @@ $lng['update']['update'] = 'Froxlor Update';
$lng['update']['proceed'] = 'Proceed';
$lng['update']['update_information'] = 'The Froxlor files have been updated to version <strong>%newversion</strong>. The installed version is <strong>%curversion</strong>.<br /><br />Customers will not be able to log in until the update has been finished.<br /><strong>Proceed?</strong>';
$lng['update']['noupdatesavail'] = '<strong>You already have the latest Froxlor version.</strong>';
$lng['admin']['cron']['cronsettings'] = 'Cronjob settings';
$lng['cron']['cronname'] = 'cronjob-name';
$lng['cron']['lastrun'] = 'last run';
$lng['cron']['interval'] = 'interval';
$lng['cron']['isactive'] = 'enabled';
$lng['admin']['cron']['add'] = 'Add a new cronjob';
$lng['cron']['description'] = 'description';
$lng['crondesc']['cron_unknown_desc'] = 'no description given';
$lng['crondesc']['cron_tasks'] = 'generating of configfiles';
$lng['crondesc']['cron_legacy'] = 'legacy (old) cronjob';
$lng['crondesc']['cron_apsinstaller'] = 'APS-installer';
$lng['crondesc']['cron_autoresponder'] = 'e-mail autoresponder';
$lng['crondesc']['cron_apsupdater'] = 'updating APS packages';
$lng['crondesc']['cron_traffic'] = 'traffic calculation';
$lng['crondesc']['cron_ticketsreset'] = 'resetting ticket-counters';
$lng['crondesc']['cron_ticketarchive'] = 'archiving old tickets';
$lng['admin']['specialsettingsforsubdomains'] = 'Apply specialsettings to all subdomains (*.example.com)';
$lng['serversettings']['specialsettingsforsubdomains']['description'] = 'If yes these custom vhost-settings will be added to all subdomains; if no subdomain-specialsettings are being removed.';
$lng['tasks']['outstanding_tasks'] = 'Outstanding cron-tasks';
@@ -1274,77 +1290,4 @@ $lng['tasks']['noneoutstanding'] = 'There are currently no outstanding tasks for
$lng['ticket']['nonexistingcustomer'] = '(deleted customer)';
$lng['admin']['ticket_nocustomeraddingavailable'] = 'It\'s not possible to open a new support-ticket currently. You first need to add at least one customer.';
// ADDED IN FROXLOR 0.9.1
$lng['admin']['accountdata'] = 'Account Data';
$lng['admin']['contactdata'] = 'Contact Data';
$lng['admin']['servicedata'] = 'Service Data';
// ADDED IN FROXLOR 0.9.2
$lng['admin']['newerversionavailable'] = 'There is a newer version of Froxlor available';
// ADDED IN FROXLOR 0.9.3
$lng['emails']['noemaildomainaddedyet'] = 'You do not have a (email-)domain in your account yet.';
$lng['error']['hiddenfieldvaluechanged'] = 'The value for the hidden field &quot;%s&quot; changed while editing the settings.<br /><br />This is usually not a big problem but the settings could not be saved because of this.';
// ADDED IN FROXLOR 0.9.3-svn1
$lng['serversettings']['panel_password_min_length']['title'] = 'Minimum password length';
$lng['serversettings']['panel_password_min_length']['description'] = 'Here you can set a minimum length for passwords. \'0\' means: no minimum length required.';
$lng['error']['notrequiredpasswordlength'] = 'The given password is too short. Please enter at least %s characters.';
$lng['serversettings']['system_store_index_file_subs']['title'] = 'Store default index file also to new subfolders';
$lng['serversettings']['system_store_index_file_subs']['description'] = 'If enabled, the default index-file is being stored to every subdomain-path newly created (not if the folder already exists!)';
// ADDED IN FROXLOR 0.9.3-svn2
$lng['serversettings']['adminmail_return']['title'] = 'Reply-To address';
$lng['serversettings']['adminmail_return']['description'] = 'Define an e-mail address as reply-to-address for mails sent by the panel.';
$lng['serversettings']['adminmail_defname'] = 'Panel e-mail sender name';
// ADDED IN FROXLOR 0.9.3-svn3
$lng['dkim']['dkim_algorithm']['title'] = 'Allowed Hash Algorithms';
$lng['dkim']['dkim_algorithm']['description'] = 'Define allowed hash algorithms, chose "All" for all algorithms or one or more from the other available algorithms';
$lng['dkim']['dkim_servicetype'] = 'Service Types';
$lng['dkim']['dkim_keylength']['title'] = 'Key-length';
$lng['dkim']['dkim_keylength']['description'] = 'Attention: If you change this values, you need to delete all the private/public keys in "'.$settings['dkim']['dkim_prefix'].'"';
$lng['dkim']['dkim_notes']['title'] = 'DKIM Notes';
$lng['dkim']['dkim_notes']['description'] = 'Notes that might be of interest to a human, e.g. a URL like http://www.dnswatch.info. No interpretation is made by any program. This tag should be used sparingly due to space limitations in DNS. This is intended for use by administrators, not end users.';
$lng['dkim']['dkim_add_adsp']['title'] = 'Add DKIM ADSP entry';
$lng['dkim']['dkim_add_adsp']['description'] = 'If you don\'t know what this is, leave it "enabled"';
$lng['dkim']['dkim_add_adsppolicy']['title'] = 'ADSP policy';
$lng['dkim']['dkim_add_adsppolicy']['description'] = 'For more information about this setting see <a href="http://wiki.froxlor.org/contrib/dkim-adsp-policies">http://wiki.froxlor.org/contrib/dkim-adsp-policies</a>';
$lng['admin']['cron']['cronsettings'] = 'Cronjob settings';
$lng['cron']['cronname'] = 'cronjob-name';
$lng['cron']['lastrun'] = 'last run';
$lng['cron']['interval'] = 'interval';
$lng['cron']['isactive'] = 'enabled';
$lng['cron']['description'] = 'description';
$lng['crondesc']['cron_unknown_desc'] = 'no description given';
$lng['crondesc']['cron_tasks'] = 'generating of configfiles';
$lng['crondesc']['cron_legacy'] = 'legacy (old) cronjob';
$lng['crondesc']['cron_apsinstaller'] = 'APS-installer';
$lng['crondesc']['cron_autoresponder'] = 'e-mail autoresponder';
$lng['crondesc']['cron_apsupdater'] = 'updating APS packages';
$lng['crondesc']['cron_traffic'] = 'traffic calculation';
$lng['crondesc']['cron_ticketsreset'] = 'resetting ticket-counters';
$lng['crondesc']['cron_ticketarchive'] = 'archiving old tickets';
$lng['cronmgmt']['seconds'] = 'seconds';
$lng['cronmgmt']['minutes'] = 'minutes';
$lng['cronmgmt']['hours'] = 'hours';
$lng['cronmgmt']['days'] = 'days';
$lng['cronmgmt']['weeks'] = 'weeks';
$lng['cronmgmt']['months'] = 'months';
$lng['admin']['cronjob_edit'] = 'Edit cronjob';
$lng['cronjob']['cronjobsettings'] = 'Cronjob settings';
$lng['cronjob']['cronjobinterval'] = 'Runtime interval';
$lng['panel']['options'] = 'options';
$lng['admin']['warning'] = 'WARNING - Please note!';
$lng['cron']['changewarning'] = 'Changing these values can have a negative cause to the behavior of Froxlor and its automated tasks.<br /><br />Please, only change values here if you are *damn sure* you know what you are doing.';
$lng['serversettings']['stdsubdomainhost']['title'] = 'Customer standard subdomain';
$lng['serversettings']['stdsubdomainhost']['description'] = 'What hostname should be used to create standard subdomains for customer. If empty, the system-hostname is used.';
?>

View File

@@ -955,7 +955,7 @@ $lng['error']['accountnotexisting'] = 'Der angegebene E-Mail-Account existiert n
$lng['error']['autoresponderalreadyexists'] = 'F&uuml;r dieses Konto existiert bereits eine Abwesenheitsnachricht.';
$lng['error']['invalidautoresponder'] = 'Das angegebene Konto ist ung&uuml;ltig.';
$lng['serversettings']['autoresponder_active']['title'] = 'Abwesenheitsnachrichten-Modul verwenden';
$lng['serversettings']['autoresponder_active']['description'] = 'M&ouml;chten Sie das Abwesenheitsnachrichten-Modul verwenden?';
$lng['serversettings']['autoresponder_active']['description'] = 'M&ouml;chten Sie das Abwesenheitsnachrichten-Modul verwenden? Dazu muss ein separater Cronjob eingerichtet sein.';
$lng['admin']['show_version_login']['title'] = 'Zeige Froxlor Version beim Login';
$lng['admin']['show_version_login']['description'] = 'Zeige Froxlor Version in der Fu&szlig;zeile der Loginseite';
$lng['admin']['show_version_footer']['title'] = 'Zeige Froxlor Version in Fu&szlig;zeile';
@@ -1065,7 +1065,7 @@ $lng['aps']['notazipfile'] = 'Die hochgeladene Datei ist keine g&uuml;ltige ZIP-
$lng['aps']['filetoobig'] = 'Die Datei ist zu gro&szlig;.';
$lng['aps']['filenotcomplete'] = 'Die Datei wurde nicht vollst&auml;ndig hochgeladen.';
$lng['aps']['phperror'] = 'Es trat ein PHP interner Fehler auf. Der Upload Fehlercode lautet #';
$lng['aps']['moveproblem'] = 'Die hochgeladene Datei konnte nicht aus dem tempor&auml;ren Ordner verschoben werden. Pr&uuml;fen Sie ob alle Rechte korrekt gesetzt sind. Dies gilt insbesondere f&uuml; die Ordner {$path}temp/ und {$path}packages/.';
$lng['aps']['moveproblem'] = 'Die hochgeladene Datei konnte nicht aus dem tempor&auml;ren Ordner verschoben werden. Pr&uuml;fen Sie ob alle Rechte korrekt gesetzt sind. Dies gilt insbesondere f&uuml; die Ordner /var/www/froxlor/temp/ und /var/www/froxlor/packages/.';
$lng['aps']['uploaderrors'] = '<strong>Fehler f&uuml;r die Datei <em>%s</em></strong><br/><ul>%s</ul>';
$lng['aps']['nospecialchars'] = 'Sonderzeichen sind im Suchausdruck nicht erlaubt!';
$lng['aps']['noitemsfound'] = 'Es wurden keine Pakete gefunden!';
@@ -1115,7 +1115,7 @@ $lng['aps']['invalidzipfile'] = '<strong>Fehler f&uuml;r <em>%s</em></strong><br
$lng['aps']['successpackageupdate'] = '<strong><em>%s</em> erfolgreich als Paketupdate installiert</strong>';
$lng['aps']['successpackageinstall'] = '<strong><em>%s</em> erfolgreich als neues Paket installiert</strong>';
$lng['aps']['class_zip_missing'] = 'SimpleXML Klasse, exec Funktion oder ZIP Funktionen nicht vorhanden bzw. aktiviert! F&uuml;r genauere Informationen zu diesem Problem schauen Sie bitte in das Handbuch zu diesem Modul.';
$lng['aps']['dir_permissions'] = 'Der PHP bzw. Webserver Prozess muss Schreibrechte f&uuml;r {$path}temp/ und {$path}packages/ haben.';
$lng['aps']['dir_permissions'] = 'Der PHP bzw. Webserver Prozess muss Schreibrechte f&uuml;r /var/www/froxlor/temp/ und /var/www/froxlor/packages/ haben.';
$lng['aps']['initerror'] = '<strong>Es gibt ein paar Probleme mit diesem Modul:</strong><ul>%s</ul>Beheben Sie diese Probleme oder das Modul kann nicht genutzt werden!';
$lng['aps']['iderror'] = 'Es wurde eine falsche Id &uuml;bergeben!';
$lng['aps']['nopacketsforinstallation'] = 'Es wurden keine Pakete zur Installation gefunden.';
@@ -1196,7 +1196,7 @@ $lng['error']['admindoesntexist'] = 'Der ausgew&auml;hlte Admin existiert nicht.
// ADDED IN 1.2.19-svn37
$lng['serversettings']['system_realtime_port']['title'] = 'Port f&uuml;r Realtime Froxlor';
$lng['serversettings']['system_realtime_port']['description'] = 'Dieser Port auf localhost wird bei jedem neuen Cron-Task kontaktiert. Wenn der Wert 0 (Null) ist, dann ist dieses Feature deaktiviert.<br />Siehe dazu auch: <a href="http://wiki.froxlor.org/doc/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['system_realtime_port']['description'] = 'Dieser Port auf localhost wird bei jedem neuen Cron-Task kontaktiert. Wenn der Wert 0 (Null) ist, dann ist dieses Feature deaktiviert.<br />Siehe dazu auch: <a href="https://wiki.froxlor.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['session_allow_multiple_login']['title'] = 'Erlaube gleichzeitigen Login';
$lng['serversettings']['session_allow_multiple_login']['description'] = 'Wenn diese Option aktiviert ist, k&ouml;nnen sich Nutzer mehrmals gleichzeitig anmelden.';
$lng['serversettings']['panel_allow_domain_change_admin']['title'] = 'Erlaube Verschieben von Domains unter Admins';
@@ -1242,64 +1242,10 @@ $lng['update']['update'] = 'Froxlor Aktualisierung';
$lng['update']['proceed'] = 'Ausf&uuml;hren';
$lng['update']['update_information'] = 'Die Froxlor Dateien wurden aktualisiert. Neue Version ist <strong>%newversion</strong>. Die bisher installierte Version ist <strong>%curversion</strong><br /><br />Ein Kunden-Login ist vor Abschluss des Aktualisierungsvorganges nicht m&oouml;glich.<br /><strong>Aktualisierung ausf&uuml;hren?</strong>';
$lng['update']['noupdatesavail'] = '<strong>Ihre Froxlor-Version ist aktuell.</strong>';
$lng['admin']['specialsettingsforsubdomains'] = '&Uuml;bernehme Einstellungen f&uuml;r alle Subdomains (*.beispiel.de)';
$lng['serversettings']['specialsettingsforsubdomains']['description'] = 'Wenn ja, werden die individuellen Einstellungen f&uuml;r alle Subdomains &uuml;bernommen; wenn nein, werden Subdomain-Specialsettings entfernt.';
$lng['tasks']['outstanding_tasks'] = 'Ausstehende Cron-Aufgaben';
$lng['tasks']['rebuild_webserverconfig'] = 'Neuerstellung der Webserver-Konfiguration';
$lng['tasks']['adding_customer'] = 'Erstelle neuen Kunden %loginname%';
$lng['tasks']['rebuild_bindconfig'] = 'Neuerstellung der Bind-Konfiguration';
$lng['tasks']['creating_ftpdir'] = 'Erstelle Verzeichnis f&uuml;r neuen FTP-Benutzer';
$lng['tasks']['deleting_customerfiles'] = 'L&ouml;schen von Kunden-Dateien %loginname%';
$lng['tasks']['noneoutstanding'] = 'Zur Zeit gibt es keine ausstehenden Aufgaben f&uuml;r Froxlor';
$lng['ticket']['nonexistingcustomer'] = '(gel&ouml;schter Kunde)';
$lng['admin']['ticket_nocustomeraddingavailable'] = 'Es k&ouml;nnen derzeit keine neuen Support-Tickets er&ouml;ffnet werden. Sie m&uuml;ssen zuerst einen Kunden anlegen';
// ADDED IN FROXLOR 0.9.1
$lng['admin']['accountdata'] = 'Benutzerdaten';
$lng['admin']['contactdata'] = 'Kontaktdaten';
$lng['admin']['servicedata'] = 'Dienstleistungsdaten';
// ADDED IN FROXLOR 0.9.2
$lng['admin']['newerversionavailable'] = 'Eine neuere Version von Froxlor wurde ver&ouml;ffentlicht';
// ADDED IN FROXLOR 0.9.3
$lng['emails']['noemaildomainaddedyet'] = 'Sie haben bisher noch keine (E-Mail-)Domain in Ihrem Konto.';
$lng['error']['hiddenfieldvaluechanged'] = 'Der Wert des verborgenen Feldes &quot;%s&quot; hat sich w&auml;hrend dem &Auml;ndern der Einstellungen ge&auml;ndert.<br /><br />Dies ist im Grunde kein schwerwiegendes Problem, allerdings konnten so die Einstellungen nicht gespeichert werden.';
// ADDED IN FROXLOR 0.9.3-svn1
$lng['serversettings']['panel_password_min_length']['title'] = 'Mindestl&auml;nge von Passw&ouml;rtern';
$lng['serversettings']['panel_password_min_length']['description'] = 'Hier k&ouml;nnen Sie die Mindestl&auml;nge f&uuml;r Passw&ouml;rter festlegen. \'0\' bedeutet: Keine Mindestl&auml;nge';
$lng['error']['notrequiredpasswordlength'] = 'Das Passwort ist zu kurz. Bitte geben Sie mindestens %s Zeichen an.';
$lng['serversettings']['system_store_index_file_subs']['title'] = 'Erstelle Index-Datei auch in neuen Unterordnern';
$lng['serversettings']['system_store_index_file_subs']['description'] = 'Wenn aktiviert, wird f&uuml;r jede Subdomain mit neuem Unterordner die Standard-Index Datei angelegt.';
// ADDED IN FROXLOR 0.9.3-svn2
$lng['serversettings']['adminmail_return']['title'] = 'Antwort-Adresse';
$lng['serversettings']['adminmail_return']['description'] = 'Standard-Antwort-Adresse f&uuml;r E-Mails aus dem Panel.';
$lng['serversettings']['adminmail_defname'] = 'Panel Absender Name';
// ADDED IN FROXLOR 0.9.3-svn3
$lng['dkim']['dkim_algorithm']['title'] = 'G&uuml;ltige Hash Algorithmen';
$lng['dkim']['dkim_algorithm']['description'] = 'W&auml;hlen sie einen Algorithmus, "All" f&uuml;r alle Algorithmen oder Einen oder Mehrere von den verf&uuml;gbaren Algorithmen';
$lng['dkim']['dkim_servicetype'] = 'Service Typen';
$lng['dkim']['dkim_keylength']['title'] = 'Schl&uuml;ssel-L&auml;nge';
$lng['dkim']['dkim_keylength']['description'] = 'Achtung: Bei &Auml;nderung dieser Einstellung m&uuml;ssen alle private/public Schl&uuml;ssel in "'.$settings['dkim']['dkim_prefix'].'" gel&ouml;scht werden.';
$lng['dkim']['dkim_notes']['title'] = 'DKIM Notiz';
$lng['dkim']['dkim_notes']['description'] = 'Eine Notiz, welche f&uuml;r Menschen interessant sein k&ouml;nnte, Z.B. eine URL wie http://www.dnswatch.info. Es gibt keine programmgesteuerte Interpretation f&uuml;r dieses Feld. Gehen sie sparsam mit der Anzahl der Zeichen um, da es Einschr&auml;nkungen seitens des DNS Dienstes gibt. Dieses Feld ist f&uuml;r Administratoren gedacht, nicht f&uuml;r Benutzer.';
$lng['dkim']['dkim_add_adsp']['title'] = 'DKIM ADSP Eintrag hinzuf&uuml;gen';
$lng['dkim']['dkim_add_adsp']['description'] = 'Wenn unsicher oder unbekannt, belassen sie es auf "aktiviert"';
$lng['dkim']['dkim_add_adsppolicy']['title'] = 'ADSP Richtlinie';
$lng['dkim']['dkim_add_adsppolicy']['description'] = 'Mehr Informationen zu dieser Einstellung (englisch) <a href="http://wiki.froxlor.org/contrib/dkim-adsp-policies">http://wiki.froxlor.org/contrib/dkim-adsp-policies</a>';
$lng['admin']['cron']['cronsettings'] = 'Cronjob Einstellungen';
$lng['cron']['cronname'] = 'Cronjob-Name';
$lng['cron']['lastrun'] = 'zuletzt gestartet';
$lng['cron']['interval'] = 'Intervall';
$lng['cron']['interval'] = 'Interval';
$lng['cron']['isactive'] = 'Aktiv';
$lng['admin']['cron']['add'] = 'Cronjob hinzuf&uuml;gen';
$lng['cron']['description'] = 'Beschreibung';
@@ -1312,20 +1258,16 @@ $lng['crondesc']['cron_apsupdater'] = 'Aktualisieren der APS Pakete';
$lng['crondesc']['cron_traffic'] = 'Traffic-Berechnung';
$lng['crondesc']['cron_ticketsreset'] = 'Zur&uuml;cksetzen der Ticket-Z&auml;hler';
$lng['crondesc']['cron_ticketarchive'] = 'Archivieren alter Tickets';
$lng['cronmgmt']['seconds'] = 'Sekunden';
$lng['cronmgmt']['minutes'] = 'Minuten';
$lng['cronmgmt']['hours'] = 'Stunden';
$lng['cronmgmt']['days'] = 'Tage';
$lng['cronmgmt']['weeks'] = 'Wochen';
$lng['cronmgmt']['months'] = 'Monate';
$lng['admin']['cronjob_edit'] = 'Cronjob bearbeiten';
$lng['cronjob']['cronjobsettings'] = 'Cronjob Einstellungen';
$lng['cronjob']['cronjobinterval'] = 'Laufzeit-Intervall';
$lng['panel']['options'] = 'Optionen';
$lng['admin']['warning'] = 'ACHTUNG - Wichtiger Hinweis!';
$lng['cron']['changewarning'] = '&Auml;nderungen an diesen Werten kann einen negativen Effekt auf das Verhalten von Froxlor und seinen automatisierten Aufgaben haben.<br /><br />Also bitte nur etwas &auml;ndern, wenn du dir *verdammt sicher* bist das du weisst was du tust.';
$lng['serversettings']['stdsubdomainhost']['title'] = 'Kunden Standard-Subdomain';
$lng['serversettings']['stdsubdomainhost']['description'] = 'Welcher Hostname soll f&uuml;r das Erstellen der Kunden-Standard-Subdomain verwendet werden? Falls leer wird der System-Hostname verwendet.';
$lng['admin']['specialsettingsforsubdomains'] = '&Uuml;bernehme Einstellungen f&uuml;r alle Subdomains (*.beispiel.de)';
$lng['serversettings']['specialsettingsforsubdomains']['description'] = 'Wenn ja, werden die individuellen Einstellungen f&uuml;r alle Subdomains &uuml;bernommen; wenn nein, werden Subdomain-Specialsettings entfernt.';
$lng['tasks']['outstanding_tasks'] = 'Ausstehende Cron-Aufgaben';
$lng['tasks']['rebuild_webserverconfig'] = 'Neuerstellung der Webserver-Konfiguration';
$lng['tasks']['adding_customer'] = 'Erstelle neuen Kunden %loginname%';
$lng['tasks']['rebuild_bindconfig'] = 'Neuerstellung der Bind-Konfiguration';
$lng['tasks']['creating_ftpdir'] = 'Erstelle Verzeichnis f&uuml;r neuen FTP-Benutzer';
$lng['tasks']['deleting_customerfiles'] = 'L&ouml;schen von Kunden-Dateien %loginname%';
$lng['tasks']['noneoutstanding'] = 'Zur Zeit gibt es keine ausstehenden Aufgaben f&uuml;r Froxlor';
$lng['ticket']['nonexistingcustomer'] = '(gel&ouml;schter Kunde)';
$lng['admin']['ticket_nocustomeraddingavailable'] = 'Es k&ouml;nnen derzeit keine neuen Support-Tickets er&ouml;ffnet werden. Sie m&uuml;ssen zuerst einen Kunden anlegen';
?>

22
lng/phpmailer.lang-en.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
/**
* PHPMailer language file.
* English Version
*/
$PHPMAILER_LANG = array();
$PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' . 'recipient email address.';
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
$PHPMAILER_LANG["execute"] = 'Could not execute: ';
$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
$PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' . 'recipients failed: ';
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.';
$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.';
$PHPMAILER_LANG["file_access"] = 'Could not access file: ';
$PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: ';
$PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';
?>

File diff suppressed because it is too large Load Diff

View File

@@ -860,7 +860,7 @@ $lng['error']['accountnotexisting'] = 'Esta conta n&atilde;o existe.';
$lng['error']['autoresponderalreadyexists'] = 'J&aacute; existe um auto-responder configurado para esta conta.';
$lng['error']['invalidautoresponder'] = 'Esta determinada est&aacute; inv&aacute;lida.';
$lng['serversettings']['autoresponder_active']['title'] = 'Usar m&oacute;dulo de auto-responder';
$lng['serversettings']['autoresponder_active']['description'] = 'Voc&ecirc; deseja utilizar o m&oacute;dulo do auto-responder?';
$lng['serversettings']['autoresponder_active']['description'] = 'Voc&ecirc; deseja utilizar o m&oacute;dulo do auto-responder? Uma tarefa extra no cron deve ser configurada.';
$lng['admin']['security_settings'] = 'Op&ccedil;&otilde;es de Seguran&ccedil;a';
$lng['admin']['know_what_youre_doing'] = 'Somente altere, se voc&ecirc; sabe o que est&aacute; fazendo';
$lng['admin']['show_version_login']['title'] = 'Mostrar vers&atilde;o do Froxlor no login';
@@ -1084,7 +1084,7 @@ $lng['aps']['noinstancesexisting'] = 'N&atilde;o existem est&acirc;ncias para ad
$lng['error']['customerdoesntexist'] = 'O cliente que voc&ecirc; escolheu n&atilde;o existe';
$lng['error']['admindoesntexist'] = 'O administrador que voc&ecirc; escolheu n&atilde;o existe';
$lng['serversettings']['system_realtime_port']['title'] = 'Porta para Froxlor em tempo real';
$lng['serversettings']['system_realtime_port']['description'] = 'Froxlor connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature is disabled.<br />See also: <a href="http://wiki.froxlor.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['system_realtime_port']['description'] = 'Froxlor connects to this port at localhost everytime a new cron task is scheduled. If value is 0 (zero), this feature ist deactivated.<br />See also: <a href="https://wiki.froxlor.org/contrib/realtime">Make Froxlor work in realtime (Froxlor Wiki)</a>';
$lng['serversettings']['session_allow_multiple_login']['title'] = 'AAtiva login m&uacute;ltiplo';
$lng['serversettings']['session_allow_multiple_login']['description'] = 'Se ativado um usu&aacute;rio pode ter m&uacute;ltiplos logins';
$lng['serversettings']['panel_allow_domain_change_admin']['title'] = 'Ativa mover dom&iacute;nios entre admins';

View File

@@ -32,7 +32,7 @@ fwrite($debugHandler, 'Cronfiles have been included' . "\n");
* so users in the database don't conflict with system users
*/
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Checking system\'s last guid');
checkLastGuid();
checkLastGuid($settings['system']['lastguid']);
/*
* shutdown cron

View File

@@ -17,7 +17,7 @@
* @version $Id$
*/
$Aps = new ApsUpdater($db, $cronlog);
$Aps = new ApsUpdater($db);
$Aps->UpdateHandler();
?>

View File

@@ -209,25 +209,28 @@ if($db->num_rows($result) > 0)
continue;
}
$_mailerror = false;
try {
$mail->SetFrom($to, $to);
$mail->AddReplyTo($to, $to);
$mail->Subject = $row['subject'];
$mail->AltBody = $message;
$mail->MsgHTML(html_entity_decode($message));
$mail->AddAddress($from, $from);
$mail->AddCustomHeader('Precedence: bulk');
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
if ($_mailerror) {
//send mail with mailer class
$mail->From = $to;
$mail->FromName = $to;
$mail->Subject = $row['subject'];
$mail->Body = html_entity_decode($message);
$mail->AddAddress($from, $from);
$mail->AddCustomHeader('Precedence: bulk');
// set correct return path
$mail->Sender = $to;
if(!$mail->Send())
{
if($mail->ErrorInfo != '')
{
$mailerr_msg = $mail->ErrorInfo;
}
else
{
$mailerr_msg = $from;
}
$cronlog->logAction(CRON_ACTION, LOG_WARNING, "Error sending autoresponder mail: " . $mailerr_msg);
}

View File

@@ -226,10 +226,12 @@ class bind
$zonefile.= $this->settings['spf']['spf_entry'] . "\n";
}
/**
* generate dkim-zone-entries
*/
$zonefile.= $this->generateDkim($domain);
if($this->settings['dkim']['use_dkim'] == '1'
&& $domain['dkim'] == '1'
&& $domain['dkim_pubkey'] != '')
{
$zonefile.= 'dkim_' . $domain['dkim_id'] . '._domainkey IN TXT "v=DKIM1; k=rsa; p=' . trim(preg_replace('/-----BEGIN PUBLIC KEY-----(.+)-----END PUBLIC KEY-----/s', '$1', str_replace("\n", '', $domain['dkim_pubkey']))) . '"' . "\n";
}
$nssubdomains = $this->db->query('SELECT `domain` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `isbinddomain`=\'1\' AND `domain` LIKE \'%.' . $domain['domain'] . '\'');
@@ -270,88 +272,6 @@ class bind
return $zonefile;
}
private function generateDkim($domain)
{
$zone_dkim = '';
if($this->settings['dkim']['use_dkim'] == '1'
&& $domain['dkim'] == '1'
&& $domain['dkim_pubkey'] != '')
{
// start
$dkim_txt = 'v=DKIM1;';
// algorithm
$algorithm = explode(',', $this->settings['dkim']['dkim_algorithm']);
$alg = '';
foreach($algorithm as $a)
{
if($a == 'all')
{
break;
}
else
{
$alg.=$a.':';
}
}
if($alg != '')
{
$alg = substr($alg, 0, -1);
$dkim_txt.= 'h='.$alg.';';
}
// notes
if(trim($this->settings['dkim']['dkim_notes'] != ''))
{
$dkim_txt.= 'n='.trim($this->settings['dkim']['dkim_notes']).';';
}
// key
$dkim_txt.= 'k=rsa;p='.trim(preg_replace('/-----BEGIN PUBLIC KEY-----(.+)-----END PUBLIC KEY-----/s', '$1', str_replace("\n", '', $domain['dkim_pubkey']))).';';
// service-type
if($this->settings['dkim']['dkim_servicetype'] == '1')
{
$dkim_txt.= 's=email;';
}
// end-part
$dkim_txt.='t=s';
// split if necessary
$txt_record_split='';
$lbr=50;
for($pos=0; $pos<=strlen($dkim_txt)-1; $pos+=$lbr)
{
$txt_record_split.= (($pos==0) ? '("' : "\t\t\t\t\t \"") . substr($dkim_txt, $pos, $lbr) . (($pos>=strlen($dkim_txt)-$lbr) ? '")' : '"' ) ."\n";
}
// dkim-entry
$zone_dkim .= 'dkim_' . $domain['dkim_id'] . '._domainkey IN TXT ' . $txt_record_split;
// adsp-entry
if($this->settings['dkim']['dkim_add_adsp'] == "1")
{
$zone_dkim .= '_adsp._domainkey IN TXT "dkim=';
switch((int)$this->settings['dkim']['dkim_add_adsppolicy'])
{
case 0:
$zone_dkim .= 'unknown"'. "\n";
break;
case 1:
$zone_dkim .= 'all"'. "\n";
break;
case 2:
$zone_dkim .= 'discardable"'. "\n";
break;
}
}
}
return $zone_dkim;
}
public function writeDKIMconfigs()
{
@@ -369,7 +289,7 @@ class bind
while($domain = $this->db->fetch_array($result_domains))
{
$privkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id']);
$privkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.private');
$pubkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.public');
if($domain['dkim_privkey'] == ''
@@ -377,8 +297,8 @@ class bind
{
$max_dkim_id = $this->db->query_first("SELECT MAX(`dkim_id`) as `max_dkim_id` FROM `" . TABLE_PANEL_DOMAINS . "`");
$domain['dkim_id'] = (int)$max_dkim_id['max_dkim_id'] + 1;
$privkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id']);
safe_exec('openssl genrsa -out ' . escapeshellarg($privkey_filename) . ' ' . $this->settings['dkim']['dkim_keylength']);
$privkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.private');
safe_exec('openssl genrsa -out ' . escapeshellarg($privkey_filename) . ' 1024');
$domain['dkim_privkey'] = file_get_contents($privkey_filename);
safe_exec("chmod 0640 " . escapeshellarg($privkey_filename));
$pubkey_filename = makeCorrectFile($this->settings['dkim']['dkim_prefix'] . '/dkim_' . $domain['dkim_id'] . '.public');

View File

@@ -61,25 +61,6 @@ class apache
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'reloading apache');
safe_exec($this->settings['system']['apachereload_command']);
}
/**
* define a standard <Directory>-statement, bug #32
*/
private function _createStandardDirectoryEntry()
{
$vhosts_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/05_froxlor_dirfix_nofcgid.conf');
if(!isset($this->virtualhosts_data[$vhosts_filename]))
{
$this->virtualhosts_data[$vhosts_filename] = '';
}
$this->virtualhosts_data[$vhosts_filename].= '# ' . basename($vhosts_filename) . "\n" . '# Created ' . date('d.m.Y H:i') . "\n" . '# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.' . "\n" . "\n";
$this->virtualhosts_data[$vhosts_filename].= ' <Directory "' . $this->settings['system']['documentroot_prefix'] . '">' . "\n";
$this->virtualhosts_data[$vhosts_filename].= ' Order allow,deny' . "\n";
$this->virtualhosts_data[$vhosts_filename].= ' allow from all' . "\n";
$this->virtualhosts_data[$vhosts_filename].= ' </Directory>' . "\n";
}
public function createIpPort()
{
@@ -98,7 +79,7 @@ class apache
fwrite($this->debugHandler, ' apache::createIpPort: creating ip/port settings for ' . $ipport . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'creating ip/port settings for ' . $ipport);
$vhosts_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/10_froxlor_ipandport_' . trim(str_replace(':', '.', $row_ipsandports['ip']), '.') . '.' . $row_ipsandports['port'] . '.conf');
$vhosts_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/10_syscp_ipandport_' . trim(str_replace(':', '.', $row_ipsandports['ip']), '.') . '.' . $row_ipsandports['port'] . '.conf');
if(!isset($this->virtualhosts_data[$vhosts_filename]))
{
@@ -121,32 +102,11 @@ class apache
{
$this->virtualhosts_data[$vhosts_filename].= '<VirtualHost ' . $ipport . '>' . "\n";
/**
* add 'real'-vhost content here, like doc-root :)
*/
$mypath = makeCorrectDir(dirname(dirname(dirname(__FILE__))));
$this->virtualhosts_data[$vhosts_filename].= 'DocumentRoot "'.$mypath.'"'."\n";
if($row_ipsandports['vhostcontainer_servername_statement'] == '1')
{
$this->virtualhosts_data[$vhosts_filename].= ' ServerName ' . $this->settings['system']['hostname'] . "\n";
}
/**
* dirprotection, see #72
* @TODO deferred until 0.9.5, needs more testing
$this->virtualhosts_data[$vhosts_filename].= "\t<Directory \"'.$mypath.'(images|packages|templates)\">\n";
$this->virtualhosts_data[$vhosts_filename].= "\t\tAllow from all\n";
$this->virtualhosts_data[$vhosts_filename].= "\t\tOptions -Indexes\n";
$this->virtualhosts_data[$vhosts_filename].= "\t</Directory>\n";
$this->virtualhosts_data[$vhosts_filename].= "\t<Directory \"'.$mypath.'*\">\n";
$this->virtualhosts_data[$vhosts_filename].= "\t\tOrder Deny,Allow\n";
$this->virtualhosts_data[$vhosts_filename].= "\t\tDeny from All\n";
$this->virtualhosts_data[$vhosts_filename].= "\t</Directory>\n";
* end of dirprotection
*/
if($row_ipsandports['specialsettings'] != '')
{
$this->virtualhosts_data[$vhosts_filename].= $row_ipsandports['specialsettings'] . "\n";
@@ -189,13 +149,9 @@ class apache
$this->virtualhosts_data[$vhosts_filename].= '</VirtualHost>' . "\n";
$this->logger->logAction(CRON_ACTION, LOG_DEBUG, $ipport . ' :: inserted vhostcontainer');
}
unset($vhosts_filename);
}
/**
* bug #32
*/
$this->_createStandardDirectoryEntry();
}
/*
@@ -339,26 +295,20 @@ class apache
{
if($domain['parentdomainid'] == '0')
{
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['domain']) . '"' . "\n";
if($this->settings['system']['awstats_enabled'] == '1')
{
// @TODO see if this is correct for awstats
$stats_text.= ' Alias /awstats "' . makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['domain']) . '"' . "\n";
}
else
{
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['domain']) . '"' . "\n";
$stats_text.= createAWStatsVhost($domain['domain'], $this->settings);
}
}
else
{
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['parentdomain']) . '"' . "\n";
if($this->settings['system']['awstats_enabled'] == '1')
{
// @TODO see if this is correct for awstats
$stats_text.= ' Alias /awstats "' . makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['parentdomain']) . '"' . "\n";
}
else
{
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['parentdomain']) . '"' . "\n";
$stats_text.= createAWStatsVhost($domain['parentdomain'], $this->settings);
}
}
}
@@ -366,14 +316,12 @@ class apache
{
if($domain['customerroot'] != $domain['documentroot'])
{
if($this->settings['system']['awstats_enabled'] == '1')
{
$stats_text.= ' Alias /awstats "' . makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['domain']) . '"' . "\n";
}
else
{
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer') . '"' . "\n";
}
$stats_text.= ' Alias /webalizer "' . makeCorrectFile($domain['customerroot'] . '/webalizer') . '"' . "\n";
}
if($this->settings['system']['awstats_enabled'] == '1')
{
$stats_text.= createAWStatsVhost($domain['domain'], $this->settings);
}
}
@@ -416,14 +364,10 @@ class apache
{
// The normal access/error - logging is enabled
$error_log = makeCorrectFile($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-error.log');
// Create the logfile if it does not exist (fixes #46)
touch($error_log);
chown($error_log, $this->settings['system']['httpuser']);
chgrp($error_log, $this->settings['system']['httpgroup']);
$access_log = makeCorrectFile($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log');
// Create the logfile if it does not exist (fixes #46)
touch($access_log);
chown($access_log, $this->settings['system']['httpuser']);
chgrp($access_log, $this->settings['system']['httpgroup']);
@@ -434,56 +378,51 @@ class apache
if($this->settings['system']['awstats_enabled'] == '1')
{
if((int)$domain['parentdomainid'] == 0)
{
// prepare the aliases and subdomains for stats config files
// prepare the aliases for stats config files
$server_alias = '';
$alias_domains = $this->db->query('SELECT `domain`, `iswildcarddomain`, `wwwserveralias` FROM `' . TABLE_PANEL_DOMAINS . '`
WHERE `aliasdomain`=\'' . $domain['id'] . '\'
OR `parentdomainid` =\''. $domain['id']. '\'');
while(($alias_domain = $this->db->fetch_array($alias_domains)) !== false)
$server_alias = '';
$alias_domains = $this->db->query('SELECT `domain`, `iswildcarddomain`, `wwwserveralias` FROM `' . TABLE_PANEL_DOMAINS . '` WHERE `aliasdomain`=\'' . $domain['id'] . '\'');
while(($alias_domain = $this->db->fetch_array($alias_domains)) !== false)
{
$server_alias.= ' ' . $alias_domain['domain'] . ' ';
if($alias_domain['iswildcarddomain'] == '1')
{
$server_alias.= ' ' . $alias_domain['domain'] . ' ';
if($alias_domain['iswildcarddomain'] == '1')
{
$server_alias.= '*.' . $domain['domain'];
}
else
{
if($alias_domain['wwwserveralias'] == '1')
{
$server_alias.= 'www.' . $alias_domain['domain'];
}
else
{
$server_alias.= '';
}
}
}
if($domain['iswildcarddomain'] == '1')
{
$alias = '*.' . $domain['domain'];
$server_alias.= '*.' . $domain['domain'];
}
else
{
if($domain['wwwserveralias'] == '1')
if($alias_domain['wwwserveralias'] == '1')
{
$alias = 'www.' . $domain['domain'];
$server_alias.= 'www.' . $alias_domain['domain'];
}
else
{
$alias = '';
$server_alias.= '';
}
}
// After inserting the AWStats information,
// be sure to build the awstats conf file as well
createAWStatsConf($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log', $domain['domain'], $alias . $server_alias, $domain['customerroot']);
}
if($domain['iswildcarddomain'] == '1')
{
$alias = '*.' . $domain['domain'];
}
else
{
if($domain['wwwserveralias'] == '1')
{
$alias = 'www.' . $domain['domain'];
}
else
{
$alias = '';
}
}
// After inserting the AWStats information, be sure to build the awstats conf file as well
createAWStatsConf($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log', $domain['domain'], $alias . $server_alias);
}
return $logfiles_text;
@@ -497,11 +436,11 @@ class apache
{
if($ssl_vhost === true)
{
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/20_froxlor_ssl_vhost_' . $domain['domain'] . '.conf');
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/20_syscp_ssl_vhost_' . $domain['domain'] . '.conf');
}
else
{
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/20_froxlor_normal_vhost_' . $domain['domain'] . '.conf');
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/20_syscp_normal_vhost_' . $domain['domain'] . '.conf');
}
return $vhost_filename;
@@ -597,7 +536,7 @@ class apache
}
}
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true);
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid']);
$vhost_content.= $this->getWebroot($domain);
$vhost_content.= $this->composePhpOptions($domain);
$vhost_content.= $this->getStats($domain);
@@ -629,7 +568,7 @@ class apache
public function createVirtualHosts()
{
$result_domains = $this->db->query("SELECT `d`.*, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `d`.`phpsettingid`, `c`.`adminid`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled`, `d`.`mod_fcgid_starter`, `d`.`mod_fcgid_maxrequests` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) " . "LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) " . "WHERE `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC");
$result_domains = $this->db->query("SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`documentroot`, `d`.`ssl`, `d`.`parentdomainid`, `d`.`ipandport`, `d`.`ssl_ipandport`, `d`.`ssl_redirect`, `d`.`isemaildomain`, `d`.`iswildcarddomain`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`openbasedir_path`, `d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `d`.`phpsettingid`, `c`.`adminid`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled`, `d`.`mod_fcgid_starter`, `d`.`mod_fcgid_maxrequests` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) " . "LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) " . "WHERE `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC");
while($domain = $this->db->fetch_array($result_domains))
{
@@ -707,7 +646,7 @@ class apache
{
$row_diroptions['path'] = makeCorrectDir($row_diroptions['path']);
mkDirWithCorrectOwnership($row_diroptions['customerroot'], $row_diroptions['path'], $row_diroptions['guid'], $row_diroptions['guid']);
$diroptions_filename = makeCorrectFile($this->settings['system']['apacheconf_diroptions'] . '/40_froxlor_diroption_' . md5($row_diroptions['path']) . '.conf');
$diroptions_filename = makeCorrectFile($this->settings['system']['apacheconf_diroptions'] . '/40_syscp_diroption_' . md5($row_diroptions['path']) . '.conf');
if(!isset($this->diroptions_data[$diroptions_filename]))
{
@@ -952,7 +891,7 @@ class apache
if($vhost_filename != '.'
&& $vhost_filename != '..'
&& !in_array($vhost_filename, $this->known_vhostfilenames)
&& preg_match('/^(05|10|20|30)_(froxlor|syscp)_(dirfix|ipandport|normal_vhost|wildcard_vhost|ssl_vhost)_(.+)\.conf$/', $vhost_filename)
&& preg_match('/^(10|20|30)_syscp_(ipandport|normal_vhost|wildcard_vhost|ssl_vhost)_(.+)\.conf$/', $vhost_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)))
{
fwrite($this->debugHandler, ' apache::wipeOutOldVhostConfigs: unlinking ' . $vhost_filename . "\n");
@@ -983,7 +922,7 @@ class apache
if($diroptions_filename != '.'
&& $diroptions_filename != '..'
&& !in_array($diroptions_filename, $this->known_diroptionsfilenames)
&& preg_match('/^40_(froxlor|syscp)_diroption_(.+)\.conf$/', $diroptions_filename)
&& preg_match('/^40_syscp_diroption_(.+)\.conf$/', $diroptions_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_diroptions'] . '/' . $diroptions_filename)))
{
fwrite($this->debugHandler, ' apache::wipeOutOldDiroptionConfigs: unlinking ' . $diroptions_filename . "\n");

View File

@@ -62,13 +62,13 @@ class lighttpd
public function reload()
{
fwrite($this->debugHandler, ' lighttpd::reload: reloading lighttpd' . "\n");
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'reloading lighttpd');
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'reloading apache');
safe_exec($this->settings['system']['apachereload_command']);
}
public function createIpPort()
{
$query = "SELECT * FROM `" . TABLE_PANEL_IPSANDPORTS . "` ORDER BY `ip` ASC, `port` ASC";
$query = "SELECT `id`, `ip`, `port`, `listen_statement`, `namevirtualhost_statement`, `vhostcontainer`, " . " `vhostcontainer_servername_statement`, `specialsettings`, `ssl`, `ssl_cert_file` " . " FROM `" . TABLE_PANEL_IPSANDPORTS . "` ORDER BY `ip` ASC, `port` ASC";
$result_ipsandports = $this->db->query($query);
while($row_ipsandports = $this->db->fetch_array($result_ipsandports))
@@ -88,9 +88,9 @@ class lighttpd
$this->logger->logAction(CRON_ACTION, LOG_INFO, 'creating ip/port settings for ' . $ip . ":" . $port);
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/10_froxlor_ipandport_' . trim(str_replace(':', '.', $row_ipsandports['ip']), '.') . '.' . $row_ipsandports['port'] . '.conf');
if(!isset($this->lighttpd_data[$vhost_filename]))
if(!isset($this->lighttpd_data[$vhosts_filename]))
{
$this->lighttpd_data[$vhost_filename] = '';
$this->lighttpd_data[$vhosts_filename] = '';
}
$this->lighttpd_data[$vhost_filename].= '$SERVER["socket"] == "' . $ip . ':' . $port . '" {' . "\n";
@@ -100,52 +100,15 @@ class lighttpd
$this->lighttpd_data[$vhost_filename].= 'server.port = ' . $port . "\n";
$this->lighttpd_data[$vhost_filename].= 'server.bind = "' . $ip . '"' . "\n";
}
if($row_ipsandports['vhostcontainer'] == '1')
{
$myhost = str_replace('.', '\.', $this->settings['system']['hostname']);
$this->lighttpd_data[$vhost_filename].= '# Froxlor default vhost' . "\n";
$this->lighttpd_data[$vhost_filename].= '$HTTP["host"] =~ "^(?:www\.|)' . $myhost . '$" {' . "\n";
$mypath = makeCorrectDir(dirname(dirname(dirname(__FILE__))));
$this->lighttpd_data[$vhost_filename].= ' server.document-root = "'.$mypath.'"'."\n";
/**
* dirprotection, see #72
* @TODO use better regex for this, deferred until 0.9.5
*
$this->lighttpd_data[$vhost_filename].= ' $HTTP["url"] =~ "^/(.+)\/(.+)\.php" {' . "\n";
$this->lighttpd_data[$vhost_filename].= ' url.access-deny = ("")' . "\n";
$this->lighttpd_data[$vhost_filename].= ' }' . "\n";
*/
if($row_ipsandports['specialsettings'] != '')
{
$this->lighttpd_data[$vhost_filename].= $row_ipsandports['specialsettings'] . "\n";
}
$this->lighttpd_data[$vhost_filename].= '}' . "\n";
}
if($row_ipsandports['ssl'] == '1')
{
$this->lighttpd_data[$vhost_filename].= 'ssl.engine = "enable"' . "\n";
$this->lighttpd_data[$vhost_filename].= 'ssl.pemfile = "' . $row_ipsandports['ssl_cert_file'] . '"' . "\n";
}
/**
* this function will create a new file which will be included
* if $this->settings['system']['apacheconf_vhost'] is a folder
* refs #70
*/
$vhosts = $this->createLighttpdHosts($row_ipsandports['ip'], $row_ipsandports['port'], $row_ipsandports['ssl'], $vhost_filename);
if($vhosts !== null && is_array($vhosts) && isset($vhosts[0]))
{
foreach($vhosts as $vhost) {
$this->lighttpd_data[$vhost_filename].= ' include "'.$vhost.'"'."\n";
}
}
$this->createLighttpdHosts($row_ipsandports['ip'], $row_ipsandports['port'], $row_ipsandports['ssl'], $vhost_filename);
$this->lighttpd_data[$vhost_filename].= $this->needed_htpasswds[$row_ipsandports['id']] . "\n";
$this->lighttpd_data[$vhost_filename].= '}' . "\n";
}
}
@@ -156,7 +119,6 @@ class lighttpd
$htpasswd_query = "SELECT * FROM " . TABLE_PANEL_HTPASSWDS . " WHERE `path` LIKE '" . $domain['documentroot'] . "%'";
$result_htpasswds = $this->db->query($htpasswd_query);
$htaccess_text = '';
while($row_htpasswds = $this->db->fetch_array($result_htpasswds))
{
$row_htpasswds['path'] = makeCorrectDir($row_htpasswds['path']);
@@ -183,10 +145,6 @@ class lighttpd
$htaccess_text.= ' ,' . "\n";
}
if(!isset($this->needed_htpasswds[$filename])) {
$this->needed_htpasswds[$filename] = '';
}
if(!strstr($this->needed_htpasswds[$filename], $row_htpasswds['username'] . ':' . $row_htpasswds['password']))
{
$this->needed_htpasswds[$filename].= $row_htpasswds['username'] . ':' . $row_htpasswds['password'] . "\n";
@@ -198,7 +156,7 @@ class lighttpd
$htaccess_text.= ' (' . "\n";
$htaccess_text.= ' "method" => "basic",' . "\n";
$htaccess_text.= ' "realm" => "Restricted Area",' . "\n";
$htaccess_text.= ' "require" => "user=' . $row_htpasswds['username'] . '"' . "\n";
$htaccess_text.= ' "require" => "user=' . $row_htpasswds[username] . '"' . "\n";
$htaccess_text.= ' )' . "\n";
}
}
@@ -230,62 +188,37 @@ class lighttpd
if($ssl == '0')
{
$query2 = "SELECT `d`.*, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) WHERE `d`.`ipandport`='" . $ipandport['id'] . "' AND `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
$query2 = "SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`documentroot`, `d`.`ssl`, `d`.`parentdomainid`, `d`.`ipandport`, `d`.`ssl_ipandport`, `d`.`ssl_redirect`, `d`.`isemaildomain`, `d`.`iswildcarddomain`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`openbasedir_path`, `d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) WHERE `d`.`ipandport`='" . $ipandport['id'] . "' AND `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
}
else
{
$query2 = "SELECT `d`.*, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) WHERE `d`.`ssl_ipandport`='" . $ipandport['id'] . "' AND `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
$query2 = "SELECT `d`.`id`, `d`.`domain`, `d`.`customerid`, `d`.`documentroot`, `d`.`ssl`, `d`.`parentdomainid`, `d`.`ipandport`, `d`.`ssl_ipandport`, `d`.`ssl_redirect`, `d`.`isemaildomain`, `d`.`iswildcarddomain`, `d`.`wwwserveralias`, `d`.`openbasedir`, `d`.`openbasedir_path`, `d`.`safemode`, `d`.`speciallogfile`, `d`.`specialsettings`, `pd`.`domain` AS `parentdomain`, `c`.`loginname`, `c`.`guid`, `c`.`email`, `c`.`documentroot` AS `customerroot`, `c`.`deactivated`, `c`.`phpenabled` AS `phpenabled` FROM `" . TABLE_PANEL_DOMAINS . "` `d` LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_DOMAINS . "` `pd` ON (`pd`.`id` = `d`.`parentdomainid`) WHERE `d`.`ssl_ipandport`='" . $ipandport['id'] . "' AND `d`.`aliasdomain` IS NULL ORDER BY `d`.`iswildcarddomain`, `d`.`domain` ASC";
}
$included_vhosts = array();
$result_domains = $this->db->query($query2);
while($domain = $this->db->fetch_array($result_domains))
{
if (is_dir($this->settings['system']['apacheconf_vhost']))
{
safe_exec('mkdir -p '.escapeshellarg(makeCorrectDir($this->settings['system']['apacheconf_vhost'].'/vhosts/')));
// determine correct include-path:
// e.g. '/etc/lighttpd/conf-enabled/vhosts/ has to become'
// 'conf-enabled/vhosts/' (damn debian, but luckily works too on other distros)
$_tmp_path = substr(makeCorrectDir($this->settings['system']['apacheconf_vhost']), 0, -1);
$_pos = strrpos($_tmp_path, '/');
$_inc_path = substr($_tmp_path, $_pos+1);
$vhost_filename = makeCorrectFile($this->settings['system']['apacheconf_vhost'].'/vhosts/50_'.$domain['domain'].'.conf');
$included_vhosts[] = $_inc_path.'/vhosts/50_'.$domain['domain'].'.conf';
}
if(!isset($this->lighttpd_data[$vhost_filename]))
{
$this->lighttpd_data[$vhost_filename] = '';
}
$query = "SELECT * FROM " . TABLE_PANEL_IPSANDPORTS . " WHERE `id`='" . $domain['ipandport'] . "'";
$ipandport = $this->db->query_first($query);
$domain['ip'] = $ipandport['ip'];
$domain['port'] = $ipandport['port'];
$domain['ssl_cert_file'] = $ipandport['ssl_cert_file'];
if((!empty($this->lighttpd_data[$vhost_filename])
&& !is_dir($this->settings['system']['apacheconf_vhost']))
|| is_dir($this->settings['system']['apacheconf_vhost'])
) {
if(!empty($this->lighttpd_data[$vhost_filename]))
{
if($ssl == '1')
{
$ssl_vhost = true;
$ips_and_ports_index = 'ssl_ipandport';
}
else
{
$ssl_vhost = false;
$ips_and_ports_index = 'ipandport';
}
$this->lighttpd_data[$vhost_filename].= $this->getVhostContent($domain, $ssl_vhost);
$this->lighttpd_data[$vhost_filename].= isset($this->needed_htpasswds[$domain[$ips_and_ports_index]]) ? $this->needed_htpasswds[$domain[$ips_and_ports_index]] . "\n" : '';
}
}
return $included_vhosts;
}
protected function getVhostContent($domain, $ssl_vhost = false)
@@ -320,55 +253,24 @@ class lighttpd
$ipport = $domain['ip'] . ':' . $domain['port'];
}
$vhost_content = '';
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid']);
$vhost_content.= $this->getServerNames($domain) . " {\n";
if(preg_match('/^https?\:\/\//', $domain['documentroot']))
{
$vhost_content.= ' url.redirect = (' . "\n";
$vhost_content.= ' "^/(.*)$" => "'. $this->idnaConvert->encode($domain['documentroot']) . '$1"'. "\n";
$vhost_content.= ' )' . "\n";
}
else
{
mkDirWithCorrectOwnership($domain['customerroot'], $domain['documentroot'], $domain['guid'], $domain['guid'], true);
$vhost_content.= $this->getWebroot($domain, $ssl_vhost);
$vhost_content.= $this->create_htaccess($domain);
$vhost_content.= $this->create_pathOptions($domain);
$vhost_content.= $this->composePhpOptions($domain);
$vhost_content.= $this->getStats($domain);
$vhost_content.= $this->getLogFiles($domain);
}
$vhost_content.= $this->getWebroot($domain, $ssl_vhost);
if ($domain['specialsettings'] != "") {
$vhost_content.= $domain['specialsettings'] . "\n";
}
$vhost_content.= $this->create_htaccess($domain);
$vhost_content.= $this->create_pathOptions($domain);
$vhost_content.= $this->composePhpOptions($domain);
$vhost_content.= $this->getLogFiles($domain);
$vhost_content.= '}' . "\n";
return $vhost_content;
}
protected function getLogFiles($domain)
{
$logfiles_text = '';
if($domain['speciallogfile'] == '1'
&& $this->settings['system']['mod_log_sql'] != '1')
{
if($domain['parentdomainid'] == '0')
{
$speciallogfile = '-' . $domain['domain'];
}
else
{
$speciallogfile = '-' . $domain['parentdomain'];
}
}
else
{
$speciallogfile = '';
}
if($this->settings['system']['mod_log_sql'] == 1)
{
@@ -378,70 +280,32 @@ class lighttpd
else
{
// The normal access/error - logging is enabled
// error log cannot be set conditionally see
// https://redmine.lighttpd.net/issues/665
$access_log = makeCorrectFile($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log');
// Create the logfile if it does not exist (fixes #46)
touch($access_log);
chown($access_log, $this->settings['system']['httpuser']);
chgrp($access_log, $this->settings['system']['httpgroup']);
$filename = makeCorrectFile($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-error.log');
$logfiles_text.= ' accesslog.filename = "' . $access_log . '"' . "\n";
}
if($this->settings['system']['awstats_enabled'] == '1')
{
if((int)$domain['parentdomainid'] == 0)
if(!is_file($filename))
{
// prepare the aliases and subdomains for stats config files
$server_alias = '';
$alias_domains = $this->db->query('SELECT `domain`, `iswildcarddomain`, `wwwserveralias` FROM `' . TABLE_PANEL_DOMAINS . '`
WHERE `aliasdomain`=\'' . $domain['id'] . '\'
OR `parentdomainid` =\''. $domain['id']. '\'');
while(($alias_domain = $this->db->fetch_array($alias_domains)) !== false)
{
$server_alias.= ' ' . $alias_domain['domain'] . ' ';
if($alias_domain['iswildcarddomain'] == '1')
{
$server_alias.= '*.' . $domain['domain'];
}
else
{
if($alias_domain['wwwserveralias'] == '1')
{
$server_alias.= 'www.' . $alias_domain['domain'];
}
else
{
$server_alias.= '';
}
}
}
if($domain['iswildcarddomain'] == '1')
{
$alias = '*.' . $domain['domain'];
}
else
{
if($domain['wwwserveralias'] == '1')
{
$alias = 'www.' . $domain['domain'];
}
else
{
$alias = '';
}
}
// After inserting the AWStats information,
// be sure to build the awstats conf file as well
createAWStatsConf($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log', $domain['domain'], $alias . $server_alias, $domain['customerroot']);
$ourFileHandle = fopen($filename, 'w') or die("can't open file");
fclose($ourFileHandle);
}
chown($filename, $this->settings['system']['httpuser']);
chgrp($filename, $this->settings['system']['httpgroup']);
//access log
$filename = makeCorrectFile($this->settings['system']['logfiles_directory'] . $domain['loginname'] . $speciallogfile . '-access.log');
if(!is_file($filename))
{
$ourFileHandle = fopen($filename, 'w') or die("can't open file");
fclose($ourFileHandle);
}
$logfiles_text.= ' accesslog.filename = "' . $filename . '"' . "\n";
chown($filename, $this->settings['system']['httpuser']);
chgrp($filename, $this->settings['system']['httpgroup']);
}
return $logfiles_text;
@@ -662,60 +526,6 @@ class lighttpd
return $webroot_text;
}
/*
* Lets set the text part for the stats software
*/
protected function getStats($domain)
{
$stats_text = '';
if($domain['speciallogfile'] == '1'
&& $this->settings['system']['mod_log_sql'] != '1')
{
if($domain['parentdomainid'] == '0')
{
if($this->settings['system']['awstats_enabled'] == '1')
{
// @TODO see if this is correct for awstats
$stats_text.= ' alias.url = ( "/awstats/" => "'.makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['domain']).'" )' . "\n";
}
else
{
$stats_text.= ' alias.url = ( "/webalizer/" => "'.makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['domain']).'" )' . "\n";
}
}
else
{
if($this->settings['system']['awstats_enabled'] == '1')
{
// @TODO see if this is correct for awstats
$stats_text.= ' alias.url = ( "/awstats/" => "'.makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['parentdomain']).'" )' . "\n";
}
else
{
$stats_text.= ' alias.url = ( "/webalizer/" => "'.makeCorrectFile($domain['customerroot'] . '/webalizer/' . $domain['parentdomain']).'" )' . "\n";
}
}
}
else
{
if($domain['customerroot'] != $domain['documentroot'])
{
if($this->settings['system']['awstats_enabled'] == '1')
{
$stats_text.= ' alias.url = ( "/awstats/" => "'.makeCorrectFile($domain['customerroot'] . '/awstats/' . $domain['domain']).'" )' . "\n";
}
else
{
$stats_text.= ' alias.url = ( "/webalizer/" => "'.makeCorrectFile($domain['customerroot'] . '/webalizer').'" )' . "\n";
}
}
}
return $stats_text;
}
public function writeConfigs()
{
@@ -805,7 +615,7 @@ class lighttpd
if($vhost_filename != '.'
&& $vhost_filename != '..'
&& !in_array($vhost_filename, $this->known_filenames)
&& preg_match('/^(05|10|20|30)_(froxlor|syscp)_(dirfix|ipandport|normal_vhost|wildcard_vhost|ssl_vhost)_(.+)\.conf$/', $vhost_filename)
&& preg_match('/^(10|20|30)_froxlor_ipandport_(.+)\.conf$/', $vhost_filename)
&& file_exists(makeCorrectFile($this->settings['system']['apacheconf_vhost'] . '/' . $vhost_filename)))
{
fwrite($this->debugHandler, ' lighttpd::wipeOutOldConfigs: unlinking ' . $vhost_filename . "\n");

View File

@@ -55,34 +55,14 @@ while($row = $db->fetch_array($result_tasks))
{
$awstatsclean['header'] = "## GENERATED BY FROXLOR\n";
$awstatsclean['path'] = '/etc/awstats';
/**
* dont do anyting if the directory not exists
* (e.g. awstats not installed yet or whatever)
* fixes #45
*/
if (is_dir($awstatsclean['path']))
{
$awstatsclean['dir'] = dir($awstatsclean['path']);
while($awstatsclean['entry'] = $awstatsclean['dir']->read()) {
$awstatsclean['fullentry'] = $awstatsclean['path'].'/'.$awstatsclean['entry'];
/**
* dont do anything if the file does not exist
*/
if (file_exists($awstatsclean['fullentry']))
{
$awstatsclean['fh'] = fopen($awstatsclean['fullentry'], 'r');
$awstatsclean['headerRead'] = fgets($awstatsclean['fh'], strlen($awstatsclean['header'])+1);
fclose($awstatsclean['fh']);
if($awstatsclean['headerRead'] == $awstatsclean['header']) {
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Removing awstats configuration ".$awstatsclean['fullentry']." for re-creation");
@unlink($awstatsclean['fullentry']);
}
}
else
{
$cronlog->logAction(CRON_ACTION, LOG_WARNING, "File '".$awstatsclean['fullentry']."' could not be found, please check if you followed all the instructions on the configuration page");
}
$awstatsclean['dir'] = dir($awstatsclean['path']);
while($awstatsclean['entry'] = $awstatsclean['dir']->read()) {
$awstatsclean['fullentry'] = $awstatsclean['path'].'/'.$awstatsclean['entry'];
$awstatsclean['fh'] = fopen($awstatsclean['fullentry'], 'r');
$awstatsclean['headerRead'] = fgets($awstatsclean['fh'], strlen($awstatsclean['header'])+1);
fclose($awstatsclean['fh']);
if($awstatsclean['headerRead'] == $awstatsclean['header']) {
@unlink($awstatsclean['fullentry']);
}
}
unset($awstatsclean);
@@ -141,14 +121,35 @@ while($row = $db->fetch_array($result_tasks))
{
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: mkdir -p ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/webalizer'));
safe_exec('mkdir -p ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/webalizer'));
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: mkdir -p ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/awstats'));
safe_exec('mkdir -p ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/awstats'));
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: mkdir -p ' . escapeshellarg($settings['system']['vmail_homedir'] . $row['data']['loginname']));
safe_exec('mkdir -p ' . escapeshellarg($settings['system']['vmail_homedir'] . $row['data']['loginname']));
//check if admin of customer has added template for new customer directories
$destdir = makeCorrectDir($settings['system']['documentroot_prefix'] . '/' . $row['data']['loginname']);
storeDefaultIndex($row['data']['loginname'], $destdir, $cronlog, true);
$result = $db->query("SELECT `t`.`value`, `c`.`email` AS `customer_email`, `a`.`email` AS `admin_email`, `c`.`loginname` AS `customer_login`, `a`.`loginname` AS `admin_login` FROM `" . TABLE_PANEL_CUSTOMERS . "` AS `c` INNER JOIN `" . TABLE_PANEL_ADMINS . "` AS `a` ON `c`.`adminid` = `a`.`adminid` INNER JOIN `" . TABLE_PANEL_TEMPLATES . "` AS `t` ON `a`.`adminid` = `t`.`adminid` WHERE `varname` = 'index_html' AND `c`.`loginname` = '" . $db->escape($row['data']['loginname']) . "'");
if($db->num_rows($result) > 0)
{
$template = $db->fetch_array($result);
$replace_arr = array(
'SERVERNAME' => $settings['system']['hostname'],
'CUSTOMER' => $template['customer_login'],
'ADMIN' => $template['admin_login'],
'CUSTOMER_EMAIL' => $template['customer_email'],
'ADMIN_EMAIL' => $template['admin_email']
);
$htmlcontent = replace_variables($template['value'], $replace_arr);
$indexhtmlpath = $settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/index.' . $settings['system']['index_file_extension'];
$index_html_handler = fopen($indexhtmlpath, 'w');
fwrite($index_html_handler, $htmlcontent);
fclose($index_html_handler);
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Creating \'index.' . $settings['system']['index_file_extension'] . '\' for Customer \'' . $template['customer_login'] . '\' based on template in directory ' . escapeshellarg($indexhtmlpath));
}
else
{
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: cp -a ' . $pathtophpfiles . '/templates/misc/standardcustomer/* ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/'));
safe_exec('cp -a ' . $pathtophpfiles . '/templates/misc/standardcustomer/* ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname'] . '/'));
}
$cronlog->logAction(CRON_ACTION, LOG_NOTICE, 'Running: chown -R ' . (int)$row['data']['uid'] . ':' . (int)$row['data']['gid'] . ' ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname']));
safe_exec('chown -R ' . (int)$row['data']['uid'] . ':' . (int)$row['data']['gid'] . ' ' . escapeshellarg($settings['system']['documentroot_prefix'] . $row['data']['loginname']));
@@ -165,7 +166,7 @@ while($row = $db->fetch_array($result_tasks))
}
/**
* TYPE=4 MEANS THAT SOMETHING IN THE BIND CONFIG HAS CHANGED. REBUILD froxlor_bind.conf
* TYPE=4 MEANS THAT SOMETHING IN THE BIND CONFIG HAS CHANGED. REBUILD syscp_bind.conf
*/
elseif ($row['type'] == '4')
{

View File

@@ -17,134 +17,6 @@
* @version $Id$
*/
function awstatsDoSingleDomain($domain, $outputdir)
{
global $cronlog;
$returnval = 0;
$domainconfig = '/etc/awstats/awstats.' . $domain . '.conf';
if(file_exists($domainconfig))
{
$outputdir = makeCorrectDir($outputdir . '/' . $domain);
if(!is_dir($outputdir))
{
safe_exec('mkdir -p ' . escapeshellarg($outputdir));
}
/**
* check for correct paths of awstats_buildstaticpages.pl
*/
$awbsp = '/usr/bin/awstats_buildstaticpages.pl';
/**
* debian...pffff, #87
*/
if (!file_exists($awbsp)) {
$awbsp = '/usr/lib/cgi-bin/awstats_buildstaticpages.pl';
}
if (!file_exists($awbsp)) {
echo "WANRING: Necessary awstats_buildstaticpages.pl script could not be found, no traffic is being calculated and no stats are generated";
$cronlog->logAction(CRON_ACTION, LOG_WARNING, "Necessary awstats_buildstaticpages.pl script could not be found, no traffic is being calculated and no stats are generated");
exit;
}
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Running awstats_buildstaticpages.pl for domain '".$domain."' (Output: '".$outputdir."')");
safe_exec($awbsp.' -update -config=' . $domain . ' -dir='.escapeshellarg($outputdir));
/**
* index file is saved like 'awstats.[domain].html',
* so link a index.html to it
*/
$original_index = makeCorrectFile($outputdir.'/awstats.'.$domain.'.html');
$new_index = makeCorrectFile($outputdir.'/index.html');
if(!file_exists($new_index)) {
safe_exec('ln -s '.escapeshellarg($original_index).' '.escapeshellarg($new_index));
}
/**
* statistics file looks like: 'awstats[month][year].[domain].txt'
*/
$file = makeCorrectFile($outputdir.'/awstats'.date('mY', time()).'.'.$domain.'.txt');
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$file."'");
if (file_exists($file)) {
$content = @file_get_contents($file);
if ($content !== false) {
$content_array = explode("\n", $content);
$count_bdw = false;
foreach($content_array as $line)
{
if(trim($line) == '' // skip empty lines
|| substr(trim($line), 0, 1) == '#' // skip comments
) {
continue;
}
$parts = explode(' ', $line);
if(isset($parts[0])
&& strtoupper($parts[0]) == 'BEGIN_DOMAIN'
) {
$count_bdw = true;
}
if ($count_bdw) {
if(isset($parts[0])
&& strtoupper($parts[0]) == 'END_DOMAIN'
) {
$count_bdw = false;
break;
} elseif (isset($parts[3])) {
$returnval += floatval($parts[3]);
}
}
}
}
}
}
return $returnval;
}
function callAwstatsGetTraffic($domain, $outputdir, $caption, $usersdomainlist)
{
global $settings, $db, $cronlog;
$returnval = 0;
foreach($usersdomainlist as $domainid => $singledomain)
{
// as we check for the config-model awstats will only parse
// 'real' domains and no subdomains which are aliases in the
// model-config-file.
$returnval += awstatsDoSingleDomain($singledomain, $outputdir);
}
/**
* now, because this traffic is being saved daily, we have to
* subtract the values from all the month's values to return
* a sane value for our panel_traffic and to remain the whole stats
* (awstats overwrites the customers .html stats-files)
*/
$customerid = getCustomerIdByDomain($domain);
if($customerid !== false)
{
$result = $db->query_first("SELECT SUM(`http`) as `trafficmonth` FROM `" . TABLE_PANEL_TRAFFIC . "`
WHERE `customerid` = '".(int)$customerid."'
AND `year`='".date('Y', time())."'
AND `month`='".date('m', time())."'");
if(is_array($result)
&& isset($result['trafficmonth'])
) {
$returnval = ($returnval - floatval($result['trafficmonth']));
}
}
return floatval($returnval);
}
/**
* Function which make webalizer statistics and returns used traffic since last run
*
@@ -157,7 +29,7 @@ function callAwstatsGetTraffic($domain, $outputdir, $caption, $usersdomainlist)
function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlist)
{
global $settings, $cronlog;
global $settings;
$returnval = 0;
if(file_exists($settings['system']['logfiles_directory'] . $logfile . '-access.log'))
@@ -165,7 +37,6 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis
$domainargs = '';
foreach($usersdomainlist as $domainid => $domain)
{
// hide referer
$domainargs.= ' -r ' . escapeshellarg($domain);
}
@@ -198,7 +69,6 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis
$verbosity = '-Q';
}
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Running webalizer for domain '".$caption."'");
safe_exec('webalizer ' . $verbosity . ' -p -o ' . escapeshellarg($outputdir) . ' -n ' . escapeshellarg($caption) . $domainargs . ' ' . escapeshellarg($settings['system']['logfiles_directory'] . $logfile . '-access.log'));
/**
@@ -210,7 +80,6 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis
$httptraffic = array();
$webalizer_hist = @file_get_contents($outputdir . 'webalizer.hist');
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$webalizer_hist."'");
$webalizer_hist_rows = explode("\n", $webalizer_hist);
foreach($webalizer_hist_rows as $webalizer_hist_row)
{
@@ -239,7 +108,6 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis
reset($httptraffic);
$httptrafficlast = array();
$webalizer_lasthist = @file_get_contents($outputdir . 'webalizer.hist.1');
$cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$webalizer_lasthist."'");
$webalizer_lasthist_rows = explode("\n", $webalizer_lasthist);
foreach($webalizer_lasthist_rows as $webalizer_lasthist_row)
{
@@ -361,3 +229,4 @@ function safeSQLLogfile($domains, $loginname)
$db->query("DELETE FROM access_log " . $where);
return true;
}

View File

@@ -165,14 +165,7 @@ while($row = $db->fetch_array($result))
unset($domainlist[$row['customerid']][$domainid]);
}
if($settings['system']['awstats_enabled'] == '1')
{
$httptraffic+= floatval(callAwstatsGetTraffic($domain, $row['documentroot'] . '/webalizer/' . $domain . '/', $domain, $domainlist[$row['customerid']]));
}
else
{
$httptraffic+= floatval(callWebalizerGetTraffic($row['loginname'] . '-' . $domain, $row['documentroot'] . '/webalizer/' . $domain . '/', $domain, $domainlist[$row['customerid']]));
}
$httptraffic+= floatval(callWebalizerGetTraffic($row['loginname'] . '-' . $domain, $row['documentroot'] . '/webalizer/' . $domain . '/', $domain, $domainlist[$row['customerid']]));
}
}
@@ -183,14 +176,7 @@ while($row = $db->fetch_array($result))
safeSQLLogfile($domainlist[$row['customerid']], $row['loginname']);
}
if($settings['system']['awstats_enabled'] == '1')
{
$httptraffic+= floatval(callAwstatsGetTraffic($caption, $row['documentroot'] . '/awstats/', $caption, $domainlist[$row['customerid']]));
}
else
{
$httptraffic+= floatval(callWebalizerGetTraffic($row['loginname'], $row['documentroot'] . '/webalizer/', $caption, $domainlist[$row['customerid']]));
}
$httptraffic+= floatval(callWebalizerGetTraffic($row['loginname'], $row['documentroot'] . '/webalizer/', $caption, $domainlist[$row['customerid']]));
}
/**

View File

@@ -26,7 +26,7 @@ $yesterday = time() - (60 * 60 * 24);
require (dirname(__FILE__) . '/../lib/class.phpmailer.php');
$mail = new PHPMailer();
$mail->SetFrom($settings['panel']['adminmail'], 'Froxlor Administrator');
$mail->From = $settings['panel']['adminmail'];
// Warn the customers at 90% traffic-usage
@@ -82,26 +82,15 @@ while($row = $db->fetch_array($result))
AND `templategroup`='mails'
AND `varname`='trafficninetypercent_mailbody'");
$mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['mailbody']), $replace_arr));
$_mailerror = false;
try {
$mail->SetFrom($row['adminmail'], $row['adminname']);
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML($mail_body);
$mail->AddAddress($row['email'], $row['firstname'] . ' ' . $row['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $row['adminmail'];
$mail->FromName = $row['adminname'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($row['email'], $row['firstname'] . ' ' . $row['name']);
if($_mailerror)
if(!$mail->Send())
{
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $_mailerror);
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mail->ErrorInfo);
standard_error('errorsendingmail', $row["email"]);
}
@@ -161,25 +150,15 @@ while($row = $db->fetch_array($result))
AND `templategroup`='mails'
AND `varname`='trafficninetypercent_mailbody'");
$mail_body = html_entity_decode(replace_variables((($result2['value'] != '') ? $result2['value'] : $lng['mails']['trafficninetypercent']['mailbody']), $replace_arr));
$_mailerror = false;
try {
$mail->SetFrom($row['email'], $row['firstname'] . " " . $row['name']);
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML($mail_body);
$mail->AddAddress($row['email'], $row['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $row['email'];
$mail->FromName = $row['firstname'] . " " . $row['name'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($row['email'], $row['name']);
if ($_mailerror) {
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
if(!$mail->Send())
{
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mail->ErrorInfo);
standard_error('errorsendingmail', $row["email"]);
}
@@ -210,25 +189,15 @@ while($row = $db->fetch_array($result))
$mail_body.= '---------------------------------------------' . "\n";
$mail_body.= sprintf('%-15s', $row['loginname']) . ' ' . sprintf('%-12d', $row['traffic_used_total']) . ' (' . sprintf('%00.3f%%', (($row['traffic_used_total'] * 100) / $row['traffic'])) . ') ' . $row['traffic'] . "\n";
$_mailerror = false;
try {
$mail->SetFrom($row['email'], $row['name']);
$mail->Subject = $mail_subject;
$mail->AltBody = $mail_body;
$mail->MsgHTML($mail_body);
$mail->AddAddress($row['email'], $row['name']);
$mail->Send();
} catch(phpmailerException $e) {
$mailerr_msg = $e->errorMessage();
$_mailerror = true;
} catch (Exception $e) {
$mailerr_msg = $e->getMessage();
$_mailerror = true;
}
$mail->From = $row['email'];
$mail->FromName = $row['name'];
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AddAddress($row['email'], $row['name']);
if ($_mailerror) {
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mailerr_msg);
if(!$mail->Send())
{
$cronlog->logAction(CRON_ACTION, LOG_ERR, "Error sending mail: " . $mail->ErrorInfo);
standard_error('errorsendingmail', $row["email"]);
}

View File

@@ -1,5 +1,5 @@
<tr class="" onmouseover="this.className='RowOverSelected';" onmouseout="this.className='';">
<td class="field_name_border_left"><if $row['adminid'] != $userinfo['userid']><a href="$filename?s=$s&amp;page=$page&amp;action=su&amp;id={$row['adminid']}" target="_blank">{$row['loginname']}</a></if><if $row['adminid'] == $userinfo['userid']>{$row['loginname']}</if></td>
<td class="field_name_border_left<if $highlight_row>_red</if>"><if $row['adminid'] != $userinfo['userid']><a href="$filename?s=$s&amp;page=$page&amp;action=su&amp;id={$row['adminid']}" target="_blank">{$row['loginname']}</a></if><if $row['adminid'] == $userinfo['userid']>{$row['loginname']}</if></td>
<td class="field_name">{$row['name']}</td>
<td class="field_name"><b><font color="green">{$row['customers_used']}</font></b>/<b><font color="#FD6204">{$row['customers']}</font></b><br /><b><font color="green">{$row['domains_used']}</font></b>/<b><font color="#FD6204">{$row['domains']}</font></b></td>
<td class="field_name"><b><font color="green">{$row['diskspace_used']}</font></b>/<b><font color="#FD6204">{$row['diskspace']}</font></b> (MB)<br /><b><font color="green">{$row['traffic_used']}</font></b>/<b><font color="#FD6204">{$row['traffic']}</font></b> (GB)</td>

View File

@@ -1,48 +0,0 @@
$header
<form method="post" action="$filename">
<input type="hidden" name="s" value="$s" />
<input type="hidden" name="page" value="$page" />
<input type="hidden" name="action" value="$action" />
<input type="hidden" name="id" value="$id" />
<input type="hidden" name="send" value="send" />
<table cellpadding="5" cellspacing="4" border="0" align="center" class="maintable">
<tr>
<td class="maintitle" colspan="2"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['admin']['cronjob_edit']}</b></td>
</tr>
<tr>
<td class="maintitle_apply_left">
<b><img src="images/title.gif" alt="" />&nbsp;{$lng['cronjob']['cronjobsettings']}</b>
</td>
<td class="maintitle_apply_right" nowrap="nowrap">
<input class="bottom" type="reset" value="{$lng['panel']['reset']}" /><input class="bottom" type="submit" value="{$lng['panel']['save']}" />
</td>
</tr>
<tr>
<td class="main_field_name">Cronjob:</td>
<if $change_cronfile == 1 >
<td class="main_field_display" nowrap="nowrap"><input type="text" name="cronfile" value="{$result['cronfile']}" /></td>
<else>
<td class="main_field_display" nowrap="nowrap">{$result['cronfile']}</td>
</if>
</tr>
<tr>
<td class="main_field_name">{$lng['admin']['activated']}:</td>
<td class="main_field_display" nowrap="nowrap">{$isactive}</td>
</tr>
<tr>
<td class="main_field_name">{$lng['cronjob']['cronjobinterval']}:</td>
<td class="main_field_display" nowrap="nowrap">
<input type="text" name="interval_value" value="{$interval_value}" />&nbsp;
<select class="dropdown_noborder" name="interval_interval">$interval_interval</select>
</td>
</tr>
<tr>
<td class="maintitle_apply_right" nowrap="nowrap" colspan="2">
<input class="bottom" type="reset" value="{$lng['panel']['reset']}" /><input class="bottom" type="submit" value="{$lng['panel']['save']}" />
</td>
</tr>
</table>
</form>
<br />
<br />
$footer

View File

@@ -1,35 +1,30 @@
$header
<form action="$filename" method="post">
<input type="hidden" name="s" value="$s"/>
<input type="hidden" name="page" value="$page"/>
<table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable">
<tr>
<td class="maintitle"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['admin']['warning']}</b></td>
</tr>
<tr>
<td class="field_name_border_left">
<span style="font-weight: bold; color: #ff0000;">
{$lng['cron']['changewarning']}
</span>
</td>
</tr>
</table>
<br />
<br />
<table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable">
<tr>
<td class="maintitle" colspan="5"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['admin']['cron']['cronsettings']}</b></td>
</tr>
<tr>
<td class="field_display_border_left">{$lng['cron']['description']}</td>
<td class="field_display">{$lng['cron']['lastrun']}</td>
<td class="field_display">{$lng['cron']['interval']}</td>
<td class="field_display">{$lng['cron']['isactive']}</td>
<td class="field_display">{$lng['panel']['options']}</td>
</tr>
$crons
</table>
</form>
<br />
<br />
$footer
$header
<form action="$filename" method="post">
<input type="hidden" name="s" value="$s"/>
<input type="hidden" name="page" value="$page"/>
<table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable">
<tr>
<td class="maintitle_search_left" colspan="4"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['admin']['cron']['cronsettings']}</b></td>
<td class="maintitle_search_right" colspan="2">{$searchcode}</td>
</tr>
<tr>
<td class="field_display_border_left">{$lng['cron']['description']}</td>
<td class="field_display">{$lng['cron']['lastrun']}&nbsp;&nbsp;{$arrowcode['c.lastrun']}</td>
<td class="field_display">{$lng['cron']['interval']}&nbsp;&nbsp;{$arrowcode['c.interval']}</td>
<td class="field_display">{$lng['cron']['isactive']}&nbsp;&nbsp;{$arrowcode['c.isactive']}</td>
<td class="field_display_search" colspan="2">{$sortcode}</td>
</tr>
$crons
<if $pagingcode != ''>
<tr>
<td class="field_display_border_left" colspan="6" style=" text-align: center; ">{$pagingcode}</td>
</tr>
</if>
<tr>
<td class="field_display_border_left" colspan="6"><a href="$filename?page=$page&amp;action=add&amp;s=$s">{$lng['admin']['cron']['add']}</a></td>
</tr>
</table>
</form>
<br />
<br />
$footer

View File

@@ -1,7 +1,8 @@
<tr class="" onmouseover="this.className='RowOverSelected';" onmouseout="this.className='';">
<td class="field_name_border_left">{$description}</td>
<td class="field_name">{$row['lastrun']}</td>
<td class="field_name">{$row['interval']}</td>
<td class="field_name">{$row['isactive']}</td>
<td class="field_name"><a href="$filename?s=$s&amp;page=$page&amp;action=edit&amp;id={$row['id']}">{$lng['panel']['edit']}</a></td>
</tr>
<tr class="" onmouseover="this.className='RowOverSelected';" onmouseout="this.className='';">
<td class="field_name_border_left">{$description}</td>
<td class="field_name">{$row['lastrun']}</td>
<td class="field_name">{$row['interval']}</td>
<td class="field_name">{$row['isactive']}</td>
<td class="field_name"><a href="$filename?s=$s&amp;page=$page&amp;action=edit&amp;id={$row['id']}">{$lng['panel']['edit']}</a></td>
<td class="field_name"><if $vendor != 'froxlor'><a href="$filename?s=$s&amp;page=$page&amp;action=delete&amp;id={$row['id']}">{$lng['panel']['delete']}</a></if></td>
</tr>

View File

@@ -1,5 +1,5 @@
<tr class="" onmouseover="this.className='RowOverSelected';" onmouseout="this.className='';">
<td class="field_name_border_left"><font size="-1">{$row['domain']}<if (isset($row['standardsubdomain']) && $row['standardsubdomain'] == $row['id'])> ({$lng['admin']['stdsubdomain']})</if></font></td>
<td class="field_name_border_left<if $highlight_row>_red</if>"><font size="-1">{$row['domain']}<if (isset($row['standardsubdomain']) && $row['standardsubdomain'] == $row['id'])> ({$lng['admin']['stdsubdomain']})</if></font></td>
<td class="field_name"><font size="-1">{$row['ipandport']}</font></td>
<td class="field_name"><font size="-1">{$row['customername']} (<a href="admin_customers.php?s=$s&amp;page=customers&amp;action=su&amp;id={$row['customerid']}" target="_blank">{$row['loginname']}</a>)</font></td>
<td class="field_name"><a href="$filename?s=$s&amp;page=$page&amp;action=edit&amp;id={$row['id']}">{$lng['panel']['edit']}</a></td>

View File

@@ -119,25 +119,16 @@ $header
{$cron_last_runs}
<tr>
<td class="field_name_border_left">{$lng['admin']['installedversion']}:</td>
<td class="field_display">{$version}{$branding}</td>
<td class="field_display">{$version}</td>
</tr>
<tr>
<td class="field_name_border_left">{$lng['admin']['latestversion']}:</td>
<if $isnewerversion != 0 >
<td class="field_display"><a href="$lookfornewversion_link"><strong>$lookfornewversion_lable</strong></a></td>
<else>
<td class="field_display"><a href="$lookfornewversion_link">$lookfornewversion_lable</a></td>
</if>
<td class="field_display"><a href="$lookfornewversion_link">$lookfornewversion_lable</a></td>
</tr>
<if $isnewerversion != 0 >
<if $lookfornewversion_addinfo != ''>
<tr>
<td class="field_name_border_left" colspan="2"><strong>{$lng['admin']['newerversionavailable']}</strong></td>
<td class="field_name_border_left" colspan="2">$lookfornewversion_addinfo</td>
</tr>
<if $lookfornewversion_addinfo != ''>
<tr>
<td class="field_name_border_left" colspan="2">$lookfornewversion_addinfo</td>
</tr>
</if>
</if>
</table>
<br />

View File

@@ -43,11 +43,15 @@ $header
<td class="main_field_display" nowrap="nowrap">$namevirtualhost_statement</td>
</tr>
<tr>
<td class="main_field_name">{$lng['admin']['ipsandports']['create_vhostcontainer']}:</td>
<td class="main_field_name">{$lng['admin']['ipsandports']['create_vhostcontainer']}:
<if $settings['system']['webserver'] == 'lighttpd'><div style="color:red">{$lng['panel']['not_supported']}lighttpd</div></if>
</td>
<td class="main_field_display" nowrap="nowrap">$vhostcontainer</td>
</tr>
<tr>
<td class="main_field_name" valign="top">{$lng['admin']['ownvhostsettings']}:<br /><font size="1">{$lng['serversettings']['default_vhostconf']['description']}</font></td>
<td class="main_field_name" valign="top">{$lng['admin']['ownvhostsettings']}:<br /><font size="1">{$lng['serversettings']['default_vhostconf']['description']}</font>
<if $settings['system']['webserver'] == 'lighttpd'><div style="color:red">{$lng['panel']['not_supported']}lighttpd</div></if>
</td>
<td class="main_field_display" nowrap="nowrap"><textarea class="textarea_border" rows="12" cols="60" name="specialsettings">{$result['specialsettings']}</textarea></td>
</tr>
<tr>

View File

@@ -5,23 +5,23 @@ $header
<input type="hidden" name="send" value="send" />
<table cellpadding="5" cellspacing="0" border="0" align="center" class="maintable">
<tr>
<td class="maintitle_search_left" colspan="5"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['ticket']['archivesearch']}</b></td>
<td class="maintitle_search_left"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['ticket']['archivesearch']}</b></td>
<td class="maintitle_search_right">&nbsp;</td>
</tr>
<if 0 < $tickets_count >
<tr>
<td class="field_display_border_left">{$lng['ticket']['archivedtime']}</td>
<td class="field_display">{$lng['ticket']['ticket_answers']}</td>
<td class="field_display">{$lng['ticket']['subject']}</td>
<td class="field_display">{$lng['ticket']['lastreplier']}</td>
<td class="field_display">{$lng['ticket']['priority']}</td>
<td class="field_display_search">&nbsp;</td>
</tr>
$tickets
</if>
<if $tickets_count < 1 >
<if 0 < $tickets_count >
<tr>
<td class="field_display_border_left">{$lng['ticket']['archivedtime']}</td>
<td class="field_display">{$lng['ticket']['ticket_answers']}</td>
<td class="field_display">{$lng['ticket']['subject']}</td>
<td class="field_display">{$lng['ticket']['lastreplier']}</td>
<td class="field_display">{$lng['ticket']['priority']}</td>
<td class="field_display_search">&nbsp;</td>
</tr>
$tickets
</if>
<if $tickets_count < 1 >
<tr>
<td class="field_display_border_left" colspan="6">{$lng['ticket']['noresults']}</td>
<td class="field_display_border_left" colspan="2">{$lng['ticket']['noresults']}</td>
</tr>
</if>
</table>

View File

@@ -15,7 +15,7 @@ $header
</if>
<tr>
<td class="field_display_border_left">{$lng['ticket']['category']}&nbsp;&nbsp;{$arrowcode['name']}</td>
<td class="field_display">{$lng['ticket']['ticketcount']}&nbsp;&nbsp;<if $categories_count < 0 >{$arrowcode['ticketcount']}</if></td>
<td class="field_display">{$lng['ticket']['ticketcount']}&nbsp;&nbsp;{$arrowcode['ticketcount']}</td>
<td class="field_display_search" colspan="2">{$sortcode}</td>
</tr>
$ticketcategories

View File

@@ -2,7 +2,7 @@
</td>
</tr>
<tr>
<td class="field_name_center"><a href="{$redirect_url}">{$lng['success']['clickheretocontinue']}</a></td>
<td class="field_name"><a href="{$redirect_url}">{$lng['success']['clickheretocontinue']}</a></td>
</tr>
</table>
<br />

View File

@@ -1,3 +1,3 @@
<tr>
<td class="title" colspan="4">&nbsp;&nbsp;&nbsp;&nbsp;<b>{$row['domain']}</b> [<a href="http://{$row['domain']}/{$statsapp}" target="_blank">{$lng['domains']['statstics']}</a>]</td>
<td class="title" colspan="4">&nbsp;&nbsp;&nbsp;&nbsp;<b>{$row['domain']}</b> [<a href="http://{$row['domain']}/webalizer" target="_blank">{$lng['domains']['statstics']}</a>]</td>
</tr>

View File

@@ -7,23 +7,17 @@ $header
<tr>
<td class="maintitle" colspan="2"><b><img src="images/title.gif" alt="" />&nbsp;{$lng['emails']['emails_add']}</b></td>
</tr>
<if $domains != '' >
<tr>
<td class="main_field_name">{$lng['emails']['emailaddress']}:</td>
<td class="main_field_display" nowrap="nowrap"><input type="text" name="email_part" value="" size="15" /> @ <select class="dropdown_noborder" name="domain">$domains</select></td>
</tr>
<tr>
<td class="main_field_name">{$lng['emails']['iscatchall']}</td>
<td class="main_field_display" nowrap="nowrap">$iscatchall</td>
</tr>
<tr>
<td class="main_field_confirm" colspan="2"><input type="hidden" name="send" value="send" /><input type="submit" class="bottom" value="{$lng['emails']['emails_add']}" /></td>
</tr>
<else
<tr>
<td class="main_field_name" colspan="2">{$lng['emails']['noemaildomainaddedyet']}</td>
</tr>
</if>
<tr>
<td class="main_field_name">{$lng['emails']['emailaddress']}:</td>
<td class="main_field_display" nowrap="nowrap"><input type="text" name="email_part" value="" size="15" /> @ <select class="dropdown_noborder" name="domain">$domains</select></td>
</tr>
<tr>
<td class="main_field_name">{$lng['emails']['iscatchall']}</td>
<td class="main_field_display" nowrap="nowrap">$iscatchall</td>
</tr>
<tr>
<td class="main_field_confirm" colspan="2"><input type="hidden" name="send" value="send" /><input type="submit" class="bottom" value="{$lng['emails']['emails_add']}" /></td>
</tr>
</table>
</form>
<br />

View File

@@ -6,7 +6,7 @@
<td width="100%" class="footer">
<br />Froxlor
<if ($settings['admin']['show_version_login'] == '1' && $filename == 'index.php') || ($filename != 'index.php' && $settings['admin']['show_version_footer'] == '1')>
{$version}{$branding}
{$version}
</if>
&copy; 2009-2010 by <a href="http://www.froxlor.org/" target="_blank">the Froxlor Team</a>
<br />Theme based on work by: Luca Piona and Luca Longinotti

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<if $settings['panel']['no_robots'] == '0'>
<meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="GOOGLEBOT" content="nosnippet" />

View File

@@ -0,0 +1,14 @@
ScriptAlias /awstats/ "/usr/lib/cgi-bin/"
ScriptAlias /awstats "/usr/lib/cgi-bin/awstats.pl"
ScriptAlias /awstats.pl "/usr/lib/cgi-bin/awstats.pl"
Alias /awstats-icon/ "/usr/share/awstats/icon/"
<Directory "/usr/lib/cgi-bin">
Options ExecCGI
AllowOverride None
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>

View File

@@ -1,8 +0,0 @@
# for Froxlor and AWStats to work together
# you have to change the following line
# look for
DirData="/some/folder/"
# and comment this out with a hash (#)
#DirData="/some/folder/"

View File

@@ -4,7 +4,6 @@ LogFormat = 1
LogSeparator=" "
SiteDomain="{SITE_DOMAIN}"
HostAliases="{HOST_ALIASES}"
DirData="{CUSTOMER_DOCROOT}"
# Include local configuration options identical for all virtual hosts
Include "/etc/awstats/awstats.model.conf"
Include "/etc/awstats/awstats.conf.local"

View File

@@ -4,7 +4,6 @@ LogFormat = "%host %virtualname %logname %time1 %methodurl %code %bytesd %refere
LogSeparator=" "
SiteDomain="{SITE_DOMAIN}"
HostAliases="{HOST_ALIASES}"
DirData="{CUSTOMER_DOCROOT}"
# Include local configuration options identical for all virtual hosts
Include "/etc/awstats/awstats.model.conf"
Include "/etc/awstats/awstats.conf.local"

View File

@@ -0,0 +1,6 @@
#
# Set PATH, otherwise restart-scripts won't find start-stop-daemon
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/10 * * * * www-data [ -x /usr/bin/awstats_updateall.pl ] && /usr/bin/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl -configdir=/etc/awstats -excludeconf=awstats.model.conf.froxlor,awstats.conf

View File

@@ -0,0 +1,6 @@
#
# Set PATH, otherwise restart-scripts won't find start-stop-daemon
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
45 0 * * * www-data [ -x /usr/bin/awstats_updateall.pl ] && /usr/bin/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl -configdir=/etc/awstats -excludeconf=awstats.model.conf.froxlor,awstats.conf

Some files were not shown because too many files have changed in this diff Show More