Compare commits
2 Commits
upstream/3
...
upstream/3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e3d35fd6e | ||
|
|
8948a800bb |
674
LICENSE
Normal file
674
LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. 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
|
||||
them 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 prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. 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.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey 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;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If 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 convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU 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 that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
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.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
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.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
NagiosQL
|
||||
Copyright (C) 2018 Martin
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
NagiosQL Copyright (C) 2018 Martin
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
98
admin.php
98
admin.php
@@ -1,46 +1,54 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin main site
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 1;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("functions/prepend_adm.php");
|
||||
require("functions/prepend_content.php");
|
||||
//
|
||||
// Include Content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('NagiosQL Administration'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('Welcome to NagiosQL, the administration module that can be used to easily create, modify and delete configuration files for Nagios. The data is stored in a database and can be written directly to the standard files at any time you want.'));
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Admin main site
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp
|
||||
* @var HTML_Template_IT $maintp
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $setGITVersion from prepend_adm.php -> Application GIT subversion string
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$preRelPath = strstr(filter_input(INPUT_SERVER, 'PHP_SELF'), 'admin.php', true);
|
||||
$preBasePath = strstr(filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'), 'admin.php', true);
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 1;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Include Content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('NagiosQL Administration'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('DESC', translate('Welcome to NagiosQL, the administration module that can be used to easily '
|
||||
. 'create, modify and delete configuration files for Nagios. The data is stored in a database '
|
||||
. 'and can be written directly to the standard files at any time you want.'));
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion - GIT Version: $setGITVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,43 +1,49 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Administration overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 7;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Administration'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('Functions to administrate NagiosQL V3'));
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Administration overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 7;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Administration'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('DESC', translate('Functions to administrate NagiosQL V3'));
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,77 +1,101 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Alarming overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 3;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Alarming'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('To define contact data, contact templates and contact groups and time periods.'));
|
||||
$conttp->setVariable("STATISTICS",translate('Statistical datas'));
|
||||
$conttp->setVariable("TYPE",translate('Group'));
|
||||
$conttp->setVariable("ACTIVE",translate('Active'));
|
||||
$conttp->setVariable("INACTIVE",translate('Inactive'));
|
||||
//
|
||||
// Include statistical data
|
||||
// ========================
|
||||
// Get read access groups
|
||||
$strAccess = $myVisClass->getAccGroups('read');
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=14")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Contact data'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contact WHERE active='1' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contact WHERE active='0' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Alarming overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var int $chkDomainId from prepend_adm.php
|
||||
* @var string $setFileVersion from prepend_adm.php
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 3;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Alarming'));
|
||||
$conttp->setVariable('DESC', translate('To define contact data, contact templates and contact groups and time '
|
||||
. 'periods.'));
|
||||
$conttp->setVariable('STATISTICS', translate('Statistical datas'));
|
||||
$conttp->setVariable('TYPE', translate('Group'));
|
||||
$conttp->setVariable('ACTIVE', translate('Active'));
|
||||
$conttp->setVariable('INACTIVE', translate('Inactive'));
|
||||
/*
|
||||
Include statistical data
|
||||
*/
|
||||
/* Get read access groups */
|
||||
$strAccess = $myVisClass->getAccessGroups('read');
|
||||
$intGroupId14 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=14');
|
||||
$intGroupId15 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=15');
|
||||
$intGroupId16 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=16');
|
||||
$intGroupId17 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=17');
|
||||
if ($myVisClass->checkAccountGroup($intGroupId14, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Contact data'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contact` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contact` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=15")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Contact groups'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contactgroup WHERE active='1' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contactgroup WHERE active='0' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intGroupId15, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Contact groups'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contactgroup` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contactgroup` '
|
||||
. "WHERE active='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=16")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Time periods'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_timeperiod WHERE active='1' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_timeperiod WHERE active='0' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intGroupId16, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Time periods'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_timeperiod` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_timeperiod` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=17")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Contact templates'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contacttemplate WHERE active='1' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_contacttemplate WHERE active='0' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intGroupId17, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Contact templates'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contacttemplate` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_contacttemplate` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
$conttp->parse("statistics");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->parse('statistics');
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
332
admin/cgicfg.php
332
admin/cgicfg.php
@@ -1,153 +1,185 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : File editor cgi.cfg
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 29;
|
||||
$preContent = "admin/nagioscfg.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intRemoveTmp = 0;
|
||||
$strConfig = "";
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Get configuration set ID
|
||||
// ========================
|
||||
$arrConfigSet = $myConfigClass->getConfigSets();
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
$myConfigClass->getConfigData($intConfigId,"method",$intMethod);
|
||||
$myConfigClass->getConfigData($intConfigId,"nagiosbasedir",$strBaseDir);
|
||||
$strConfigfile = str_replace("//","/",$strBaseDir."/cgi.cfg");
|
||||
$strLocalBackup = str_replace("//","/",$strBaseDir."/cgi.cfg_old_").date("YmdHis",time());
|
||||
//
|
||||
// Convert Windows to UNIX
|
||||
// =======================
|
||||
$chkTaFileText = str_replace("\r\n","\n",$chkTaFileText);
|
||||
//
|
||||
// Process data
|
||||
// ============
|
||||
if ($chkTaFileText != "") {
|
||||
if ($intMethod == 1) {
|
||||
if (file_exists($strBaseDir) && (is_writable($strBaseDir) && (is_writable($strConfigfile)))) {
|
||||
// Backup config file
|
||||
$intReturn = $myConfigClass->moveFile("nagiosbasic","cgi.cfg",$intConfigId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Write configuration
|
||||
$resFile = fopen($strConfigfile,"w");
|
||||
fputs($resFile,$chkTaFileText);
|
||||
fclose($resFile);
|
||||
$myVisClass->processMessage("<span style=\"color:green\">".translate('Configuration file successfully written!')."</span>",$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:')." ".$strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions)!'),$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed:')." ".$strConfigfile);
|
||||
}
|
||||
} else if (($intMethod == 2) || ($intMethod == 3)) {
|
||||
// Backup config file
|
||||
$intReturn = $myConfigClass->moveFile("nagiosbasic","cgi.cfg",$intConfigId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Write file to temporary
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_cgi');
|
||||
$resFile = fopen($strFileName,"w");
|
||||
fputs($resFile,$chkTaFileText);
|
||||
fclose($resFile);
|
||||
// Copy configuration to remoty system
|
||||
$intReturn = $myConfigClass->configCopy($strConfigfile,$intConfigId,$strFileName,1);
|
||||
if ($intReturn == 0) {
|
||||
$myVisClass->processMessage("<span style=\"color:green\">".translate('Configuration file successfully written!')."</span>",$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:')." ".$strConfigfile);
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions on remote system)!'),$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed (remote):')." ".$strConfigfile);
|
||||
unlink($strFileName);
|
||||
}
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Cgi configuration file editor
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var string $chkTaFileText from prepend_content.php -> Text area
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 29;
|
||||
$preContent = 'admin/nagioscfg.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intRemoveTmp = 0;
|
||||
$intMethod = 0;
|
||||
$strConfig = '';
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Get configuration set ID
|
||||
*/
|
||||
$intMethod = 0;
|
||||
$strMethod = '';
|
||||
$myConfigClass->getConfigTargets($arrConfigSet);
|
||||
$intConfigId = (int)$arrConfigSet[0];
|
||||
if ($myConfigClass->getConfigValues($intConfigId, 'method', $strMethod) === 0) {
|
||||
$intMethod = (int)$strMethod;
|
||||
}
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('CGI configuration file'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Include input form
|
||||
// ===================
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("MAINSITE",$_SESSION['SETS']['path']['base_url']."admin.php");
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
}
|
||||
//
|
||||
// Open configuration
|
||||
// ==================
|
||||
if ($intMethod == 1) {
|
||||
if (file_exists($strConfigfile) && is_readable($strConfigfile)) {
|
||||
$resFile = fopen($strConfigfile,"r");
|
||||
if ($resFile) {
|
||||
while(!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile,1024);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the data file (check the permissions)!'),$strErrorMessage);
|
||||
}
|
||||
} else if (($intMethod == 2) || ($intMethod == 3)) {
|
||||
// Write file to temporary
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_cgi');
|
||||
// Copy configuration from remoty system
|
||||
$intReturn = $myConfigClass->configCopy($strConfigfile,$intConfigId,$strFileName,0);
|
||||
if ($intReturn == 0) {
|
||||
$resFile = fopen($strFileName,"r");
|
||||
if (is_resource($resFile)) {
|
||||
while(!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile,1024);
|
||||
}
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the temporary file'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration read failed (remote):')." ".$strErrorMessage);
|
||||
if (file_exists($strFileName)) unlink($strFileName);
|
||||
}
|
||||
$myConfigClass->getConfigValues($intConfigId, 'nagiosbasedir', $strBaseDir);
|
||||
$strConfigfile = str_replace('//', '/', $strBaseDir . '/cgi.cfg');
|
||||
$strLocalBackup = str_replace('//', '/', $strBaseDir . '/cgi.cfg_old_') . date('YmdHis');
|
||||
/*
|
||||
Convert Windows LF to UNIX LF
|
||||
*/
|
||||
$chkTaFileText = str_replace("\r\n", "\n", $chkTaFileText);
|
||||
/*
|
||||
Process data
|
||||
*/
|
||||
if (($chkTaFileText !== '') && ($arrConfigSet[0] !== 0)) {
|
||||
if ($intMethod === 1) {
|
||||
if (file_exists($strBaseDir) && (is_writable($strBaseDir) && is_writable($strConfigfile))) {
|
||||
/* Backup config file */
|
||||
$intReturn = $myConfigClass->moveFile('nagiosbasic', 'cgi.cfg', $intConfigId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Write configuration */
|
||||
$resFile = fopen($strConfigfile, 'wb');
|
||||
fwrite($resFile, $chkTaFileText);
|
||||
fclose($resFile);
|
||||
$myVisClass->processMessage('<span style="color:green">' . translate('Configuration file successfully '
|
||||
. 'written!') . '</span>', $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:') . ' ' . $strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the '
|
||||
. 'permissions)!'), $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed:') . ' ' . $strConfigfile);
|
||||
}
|
||||
} elseif (($intMethod === 2) || ($intMethod === 3)) {
|
||||
/* Backup config file */
|
||||
$intReturn1 = $myConfigClass->moveFile('nagiosbasic', 'cgi.cfg', $intConfigId);
|
||||
if ($intReturn1 === 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Write file to temporary */
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_cgi');
|
||||
$resFile = fopen($strFileName, 'wb');
|
||||
fwrite($resFile, $chkTaFileText);
|
||||
fclose($resFile);
|
||||
/* Copy configuration to remoty system */
|
||||
$intReturn2 = $myConfigClass->remoteFileCopy($strConfigfile, $intConfigId, $strFileName, 1);
|
||||
if ($intReturn2 === 0) {
|
||||
$myVisClass->processMessage('<span style="color:green">' . translate('Configuration file successfully '
|
||||
. 'written!') . '</span>', $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:') . ' ' . $strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions '
|
||||
. 'on remote system)!'), $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed (remote):') . ' ' . $strConfigfile);
|
||||
}
|
||||
unlink($strFileName);
|
||||
}
|
||||
} elseif ($arrConfigSet[0] === 0) {
|
||||
$myVisClass->processMessage(translate('There are no nagios configuration files in common domain, please select a ' .
|
||||
'valid domain to edit this files!'), $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable("DAT_NAGIOS_CONFIG",$strConfig);
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("naginsert");
|
||||
$conttp->show("naginsert");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('CGI configuration file'));
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('MAINSITE', $_SESSION['SETS']['path']['base_url'] . 'admin.php');
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
/*
|
||||
Open configuration
|
||||
*/
|
||||
if ($intMethod === 1) {
|
||||
if (file_exists($strConfigfile) && is_readable($strConfigfile)) {
|
||||
$resFile = fopen($strConfigfile, 'rb');
|
||||
if ($resFile) {
|
||||
while (!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile, 1024);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the data file (check the permissions)!'), $strErrorMessage);
|
||||
}
|
||||
} elseif (($intMethod === 2) || ($intMethod === 3)) {
|
||||
/* Write file to temporary */
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_cgi');
|
||||
/* Copy configuration from remoty system */
|
||||
$myConfigClass->strErrorMessage = '';
|
||||
$intReturn = $myConfigClass->remoteFileCopy($strConfigfile, $intConfigId, $strFileName);
|
||||
if ($intReturn === 0) {
|
||||
$resFile = fopen($strFileName, 'rb');
|
||||
if (is_resource($resFile)) {
|
||||
while (!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile, 1024);
|
||||
}
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the temporary file'), $strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration read failed (remote):') . ' ' . $strErrorMessage);
|
||||
if (file_exists($strFileName)) {
|
||||
unlink($strFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
$conttp->setVariable('DAT_NAGIOS_CONFIG', $strConfig);
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('naginsert');
|
||||
$conttp->show('naginsert');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,152 +1,244 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Command definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 18;
|
||||
$preContent = "admin/checkcommands.tpl.htm";
|
||||
$preSearchSession = 'checkcommand';
|
||||
$preTableName = 'tbl_command';
|
||||
$preKeyField = 'command_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `command_line`='$chkTfValue2', `command_type`=$chkSelValue1, $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New command inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Command modified:')." ".$chkTfValue1);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Check command definitions
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Command name
|
||||
* @var string $chkTfSpValue1 from prepend_content.php -> Command definition
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Command type
|
||||
* @var string $chkTaArg1Info from prepend_content.php -> Command argument 1 information
|
||||
* @var string $chkTaArg2Info from prepend_content.php -> Command argument 2 information
|
||||
* @var string $chkTaArg3Info from prepend_content.php -> Command argument 3 information
|
||||
* @var string $chkTaArg4Info from prepend_content.php -> Command argument 4 information
|
||||
* @var string $chkTaArg5Info from prepend_content.php -> Command argument 5 information
|
||||
* @var string $chkTaArg6Info from prepend_content.php -> Command argument 6 information
|
||||
* @var string $chkTaArg7Info from prepend_content.php -> Command argument 7 information
|
||||
* @var string $chkTaArg8Info from prepend_content.php -> Command argument 8 information
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 18;
|
||||
$preContent = 'admin/checkcommands.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'checkcommand';
|
||||
$preTableName = 'tbl_command';
|
||||
$preKeyField = 'command_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intDataWarning = 0;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `command_line`='$chkTfSpValue1', "
|
||||
. "`command_type`=$chkSelValue1, $preSQLCommon1, `arg1_info`='$chkTaArg1Info', "
|
||||
. "`arg2_info`='$chkTaArg2Info', `arg3_info`='$chkTaArg3Info', `arg4_info`='$chkTaArg4Info', "
|
||||
. "`arg5_info`='$chkTaArg5Info', `arg6_info`='$chkTaArg6Info', `arg7_info`='$chkTaArg7Info', "
|
||||
. "`arg8_info`='$chkTaArg8Info'";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfSpValue1 !== '')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New command inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Command modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Command definitions'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
$conttp->setVariable("NO_TYPE",translate('unclassified'));
|
||||
$conttp->setVariable("CHECK_TYPE",translate('check command'));
|
||||
$conttp->setVariable("MISC_TYPE",translate('misc command'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
// Insert command type
|
||||
if ($arrModifyData['command_type'] == 1) {$conttp->setVariable("CHECK_TYPE_SELECTED","selected");}
|
||||
if ($arrModifyData['command_type'] == 2) {$conttp->setVariable("MISC_TYPE_SELECTED","selected");}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Command name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Command line'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `command_line` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `command_line` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `command_line`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'command_line',40);
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
$intNoTime = 0;
|
||||
if ($chkModus === 'add') {
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
$conttp->setVariable('TITLE', translate('Command definitions'));
|
||||
$conttp->setVariable('NO_TYPE', translate('unclassified'));
|
||||
$conttp->setVariable('CHECK_TYPE', translate('check command'));
|
||||
$conttp->setVariable('MISC_TYPE', translate('misc command'));
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
/* Insert command type */
|
||||
if ((int)$arrModifyData['command_type'] === 1) {
|
||||
$conttp->setVariable('CHECK_TYPE_SELECTED', 'selected');
|
||||
}
|
||||
if ((int)$arrModifyData['command_type'] === 2) {
|
||||
$conttp->setVariable('MISC_TYPE_SELECTED', 'selected');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Command definitions'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Command name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Command line'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
$strSearchWhere = '';
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' "
|
||||
. "OR `command_line` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `command_line` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `command_line`, `register`, `active`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere "
|
||||
. "AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'command_line', 40);
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,86 +1,94 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Command line visualization
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preNoMain = 1;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
$strCommandLine = " ";
|
||||
$intCount = 0;
|
||||
//
|
||||
// Get database values
|
||||
// ===================
|
||||
if (isset($_GET['cname']) && ($_GET['cname'] != "")) {
|
||||
$strResult = $myDBClass->getFieldData("SELECT command_line FROM tbl_command WHERE id='".filter_var($_GET['cname'], FILTER_SANITIZE_NUMBER_INT)."'");
|
||||
if (($strResult != false) && ($strResult != "")) {
|
||||
$strCommandLine = $strResult;
|
||||
$intCount = substr_count($strCommandLine,"ARG");
|
||||
if (substr_count($strCommandLine,"ARG8") != 0) {
|
||||
$intCount = 8;
|
||||
} else if (substr_count($strCommandLine,"ARG7") != 0) {
|
||||
$intCount = 7;
|
||||
} else if (substr_count($strCommandLine,"ARG6") != 0) {
|
||||
$intCount = 6;
|
||||
} else if (substr_count($strCommandLine,"ARG5") != 0) {
|
||||
$intCount = 5;
|
||||
} else if (substr_count($strCommandLine,"ARG4") != 0) {
|
||||
$intCount = 4;
|
||||
} else if (substr_count($strCommandLine,"ARG3") != 0) {
|
||||
$intCount = 3;
|
||||
} else if (substr_count($strCommandLine,"ARG2") != 0) {
|
||||
$intCount = 2;
|
||||
} else if (substr_count($strCommandLine,"ARG1") != 0) {
|
||||
$intCount = 1;
|
||||
} else {
|
||||
$intCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Command line visualization
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass
|
||||
* /
|
||||
* /*
|
||||
* Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preNoMain = 1;
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
$strCommandLine = ' ';
|
||||
$intCount = 0;
|
||||
/*
|
||||
Get database values
|
||||
*/
|
||||
if (isset($_GET['cname']) && ($_GET['cname'] !== '')) {
|
||||
$strResult = $myDBClass->getFieldData("SELECT command_line FROM tbl_command WHERE id='" .
|
||||
filter_var($_GET['cname'], FILTER_SANITIZE_NUMBER_INT) . "'");
|
||||
if ($strResult !== '') {
|
||||
$strCommandLine = $strResult;
|
||||
$intCount = substr_count($strCommandLine, 'ARG');
|
||||
if (substr_count($strCommandLine, 'ARG8') !== 0) {
|
||||
$intCount = 8;
|
||||
} elseif (substr_count($strCommandLine, 'ARG7') !== 0) {
|
||||
$intCount = 7;
|
||||
} elseif (substr_count($strCommandLine, 'ARG6') !== 0) {
|
||||
$intCount = 6;
|
||||
} elseif (substr_count($strCommandLine, 'ARG5') !== 0) {
|
||||
$intCount = 5;
|
||||
} elseif (substr_count($strCommandLine, 'ARG4') !== 0) {
|
||||
$intCount = 4;
|
||||
} elseif (substr_count($strCommandLine, 'ARG3') !== 0) {
|
||||
$intCount = 3;
|
||||
} elseif (substr_count($strCommandLine, 'ARG2') !== 0) {
|
||||
$intCount = 2;
|
||||
} elseif (substr_count($strCommandLine, 'ARG1') !== 0) {
|
||||
$intCount = 1;
|
||||
} else {
|
||||
$intCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Commandline</title>
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Commandline</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #EDF5FF;
|
||||
margin: 3px;
|
||||
border: none;
|
||||
}
|
||||
-->
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #EDF5FF;
|
||||
margin: 3px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
</head>
|
||||
<body>
|
||||
<?php echo $strCommandLine; ?>
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
parent.argcount = <?php echo $intCount; ?>;
|
||||
//-->
|
||||
</script>
|
||||
<?php echo $strCommandLine; ?>
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
parent.argcount = <?php echo $intCount; ?>;
|
||||
//-->
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,59 +1,74 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Commands overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 4;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Check commands'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('To define check and misc commands, notification commands and special commands.'));
|
||||
$conttp->setVariable("STATISTICS",translate('Statistical datas'));
|
||||
$conttp->setVariable("TYPE",translate('Group'));
|
||||
$conttp->setVariable("ACTIVE",translate('Active'));
|
||||
$conttp->setVariable("INACTIVE",translate('Inactive'));
|
||||
//
|
||||
// Include statistical data
|
||||
// ========================
|
||||
// Get read access groups
|
||||
$strAccess = $myVisClass->getAccGroups('read');
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=18")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Check commands'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_command WHERE active='1' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM tbl_command WHERE active='0' AND config_id=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Commands overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var int $chkDomainId from prepend_adm.php
|
||||
* @var string $setFileVersion from prepend_adm.php
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 4;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Check commands'));
|
||||
$conttp->setVariable('DESC', translate('To define check and misc commands, notification commands and special '
|
||||
. 'commands.'));
|
||||
$conttp->setVariable('STATISTICS', translate('Statistical datas'));
|
||||
$conttp->setVariable('TYPE', translate('Group'));
|
||||
$conttp->setVariable('ACTIVE', translate('Active'));
|
||||
$conttp->setVariable('INACTIVE', translate('Inactive'));
|
||||
/*
|
||||
Include statistical data
|
||||
*/
|
||||
/* Get read access groups */
|
||||
$strAccess = $myVisClass->getAccessGroups('read');
|
||||
$intGroupId = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=18');
|
||||
if ($myVisClass->checkAccountGroup($intGroupId, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Check commands'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_command` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_command` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
$conttp->parse("statistics");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->parse('statistics');
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,42 +1,101 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin configuration target administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 36;
|
||||
$preContent = "admin/configtargets.tpl.htm";
|
||||
$preTableName = 'tbl_configtarget';
|
||||
$preKeyField = 'target';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intIsError = 0;
|
||||
$strPathMessage = "";
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Process path values (add slashes)
|
||||
// =================================
|
||||
$chkTfValue8 = $myVisClass->addSlash($chkTfValue8);
|
||||
$chkTfValue9 = $myVisClass->addSlash($chkTfValue9);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Admin configuration target administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Configuration target name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Configuration target description
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Server name
|
||||
* @var string $chkTfValue5 from prepend_content.php -> User name
|
||||
* @var string $chkTfValue6 from prepend_content.php -> Password
|
||||
* @var string $chkTfValue7 from prepend_content.php -> ssh key file path
|
||||
* @var string $chkTfValue8 from prepend_content.php -> Base directory
|
||||
* @var string $chkTfValue9 from prepend_content.php -> Host configuration directory
|
||||
* @var string $chkTfValue10 from prepend_content.php -> Service configuration directory
|
||||
* @var string $chkTfValue11 from prepend_content.php -> Backup directory
|
||||
* @var string $chkTfValue12 from prepend_content.php -> Host backup directory
|
||||
* @var string $chkTfValue13 from prepend_content.php -> Service backup directory
|
||||
* @var string $chkTfValue14 from prepend_content.php -> Nagios base directory
|
||||
* @var string $chkTfValue15 from prepend_content.php -> Import directory
|
||||
* @var string $chkTfValue16 from prepend_content.php -> Picture directory
|
||||
* @var string $chkTfValue17 from prepend_content.php -> Command file
|
||||
* @var string $chkTfValue18 from prepend_content.php -> Binary file
|
||||
* @var string $chkTfValue19 from prepend_content.php -> Nagios PID file
|
||||
* @var string $chkTfValue20 from prepend_content.php -> Nagios configuration file
|
||||
* @var string $chkTfValue21 from prepend_content.php -> CGI configuration file
|
||||
* @var string $chkTfValue22 from prepend_content.php -> Ressource file
|
||||
* @var string $chkTfValue23 from prepend_content.php -> ssh port
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Configuration access method (file based, ssh, ftp)
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Nagios version
|
||||
* @var int $chkChbValue1 from prepend_content.php -> Use secure ftp
|
||||
* @var int $chkSelAccGr from prepend_content.php -> Access group selector
|
||||
*/
|
||||
|
||||
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 36;
|
||||
$preContent = 'admin/configtargets.htm.tpl';
|
||||
$preListTpl = 'admin/datalist_common.htm.tpl';
|
||||
$preTableName = 'tbl_configtarget';
|
||||
$preKeyField = 'target';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intIsError = 0;
|
||||
$strPathMessage = '';
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Process path values (add slashes)
|
||||
*/
|
||||
$chkTfValue8 = $myVisClass->addSlash($chkTfValue8);
|
||||
$chkTfValue9 = $myVisClass->addSlash($chkTfValue9);
|
||||
$chkTfValue10 = $myVisClass->addSlash($chkTfValue10);
|
||||
$chkTfValue11 = $myVisClass->addSlash($chkTfValue11);
|
||||
$chkTfValue12 = $myVisClass->addSlash($chkTfValue12);
|
||||
@@ -44,244 +103,302 @@ $chkTfValue13 = $myVisClass->addSlash($chkTfValue13);
|
||||
$chkTfValue14 = $myVisClass->addSlash($chkTfValue14);
|
||||
$chkTfValue15 = $myVisClass->addSlash($chkTfValue15);
|
||||
$chkTfValue16 = $myVisClass->addSlash($chkTfValue16);
|
||||
//
|
||||
// Check if the permissions and other parameters
|
||||
// =============================================
|
||||
if (($chkModus == "modify" || $chkModus == "insert")) {
|
||||
if ($chkDataId != 0) {
|
||||
if ($chkSelValue1 == 1) {
|
||||
$arrPaths = array($chkTfValue8,$chkTfValue9,$chkTfValue10,$chkTfValue11,$chkTfValue12,$chkTfValue13);
|
||||
foreach ($arrPaths AS $elem) {
|
||||
if (!$myConfigClass->dir_is_writable($elem)) {
|
||||
$myVisClass->processMessage($elem." ".translate("is not writeable"),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
}
|
||||
// Nagios base configuration files
|
||||
if (!is_writable($chkTfValue20)) {
|
||||
$myVisClass->processMessage(str_replace(" "," ",translate("Nagios config file")." ".$chkTfValue20." ".translate("is not writeable")),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
} else {
|
||||
$intCheck = 0;
|
||||
if (file_exists($chkTfValue20) && is_readable($chkTfValue20)) {
|
||||
$resFile = fopen($chkTfValue20,'r');
|
||||
while (!feof($resFile)) {
|
||||
$strLine = trim(fgets($resFile));
|
||||
if ((substr_count($strLine,'cfg_dir') != 0) || (substr_count($strLine,'cfg_file') != 0)) {
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
fclose($resFile);
|
||||
}
|
||||
if ($intCheck == 0) {
|
||||
$myVisClass->processMessage(str_replace(" "," ",translate("Nagios config file")." ".$chkTfValue20." ".translate("is not a valid configuration file!")),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
}
|
||||
if (!is_writable($chkTfValue14."cgi.cfg")) {
|
||||
$myVisClass->processMessage(str_replace(" "," ",translate("Cgi config file")." ".$chkTfValue14."cgi.cfg"." ".translate("is not writeable")),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
|
||||
}
|
||||
// Check SSH Method
|
||||
if (($chkSelValue1 == 3) && !function_exists('ssh2_connect')) {
|
||||
$myVisClass->processMessage(translate('SSH module not loaded!'),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
// Check FTP Method
|
||||
if (($chkSelValue1 == 2) && !function_exists('ftp_connect')) {
|
||||
$myVisClass->processMessage(translate('FTP module not loaded!'),$strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
if ($intIsError == 1) {
|
||||
$chkModus = "add";
|
||||
$chkSelModify = "errormodify";
|
||||
}
|
||||
}
|
||||
/*
|
||||
Check Port Value
|
||||
*/
|
||||
if ((int)$chkTfValue23 === 0) {
|
||||
$chkTfValue23 = 22;
|
||||
}
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `server`='$chkTfValue4', `method`='$chkSelValue1',
|
||||
`user`='$chkTfValue5', `password`='$chkTfValue6', `ssh_key_path`='$chkTfValue7', `basedir`='$chkTfValue8',
|
||||
`hostconfig`='$chkTfValue9', `serviceconfig`='$chkTfValue10', `backupdir`='$chkTfValue11',
|
||||
`hostbackup`='$chkTfValue12', `servicebackup`='$chkTfValue13', `nagiosbasedir`='$chkTfValue14',
|
||||
`importdir`='$chkTfValue15', `picturedir`='$chkTfValue16', `commandfile`='$chkTfValue17',
|
||||
`binaryfile`='$chkTfValue18', `pidfile`='$chkTfValue19', `conffile`='$chkTfValue20', `version`=$chkSelValue2,
|
||||
`access_group`=$chkSelAccGr, `active`='$chkActive',
|
||||
`last_modified`=NOW()";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "") && (($chkTfValue4 != "") || ($chkDataId == 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New Domain inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Domain modified:')." ".$chkTfValue1);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/*
|
||||
Check the permissions and other parameters
|
||||
*/
|
||||
if (($chkModus === 'modify' || $chkModus === 'insert') && $chkDataId !== 0) {
|
||||
if ($chkSelValue1 === 1) {
|
||||
$arrPaths = array($chkTfValue8, $chkTfValue9, $chkTfValue10, $chkTfValue11, $chkTfValue12, $chkTfValue13);
|
||||
foreach ($arrPaths as $elem) {
|
||||
if ($myConfigClass->isDirWriteable($elem) === 1) {
|
||||
$myVisClass->processMessage($elem . ' ' . translate('is not writeable'), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
}
|
||||
/* Nagios base configuration files */
|
||||
if (!is_writable($chkTfValue20)) {
|
||||
$myVisClass->processMessage(str_replace(' ', ' ', translate('Nagios config file') . ' ' . $chkTfValue20
|
||||
. ' ' . translate('is not writeable')), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
} else {
|
||||
$intCheck = 0;
|
||||
if (file_exists($chkTfValue20) && is_readable($chkTfValue20)) {
|
||||
$resFile = fopen($chkTfValue20, 'rb');
|
||||
while (!feof($resFile)) {
|
||||
$strLine = trim(fgets($resFile));
|
||||
if ((substr_count($strLine, 'cfg_dir') !== 0) || (substr_count($strLine, 'cfg_file') !== 0)) {
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
fclose($resFile);
|
||||
}
|
||||
if ($intCheck === 0) {
|
||||
$myVisClass->processMessage(str_replace(' ', ' ', translate('Nagios config file') . ' ' .
|
||||
$chkTfValue20 . ' ' . translate('is not a valid configuration file!')), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
}
|
||||
if (!is_writable($chkTfValue14)) {
|
||||
$myVisClass->processMessage(str_replace(' ', ' ', translate('Nagios base directory') . ' ' .
|
||||
$chkTfValue14 . ' ' . translate('is not writeable')), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
if (!is_writable($chkTfValue21)) {
|
||||
$myVisClass->processMessage(str_replace(' ', ' ', translate('Nagios cgi config file') . ' ' .
|
||||
$chkTfValue21 . ' ' . translate('is not writeable')), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
if (!is_readable($chkTfValue22)) {
|
||||
$myVisClass->processMessage(str_replace(' ', ' ', translate('Nagios resource config file') . ' ' .
|
||||
$chkTfValue22 . ' ' . translate('is not readable')), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
}
|
||||
/* Check SSH Method */
|
||||
if (($chkSelValue1 === 3) && !function_exists('ssh2_connect')) {
|
||||
$myVisClass->processMessage(translate('SSH module not loaded!'), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
/* Check FTP Method */
|
||||
if (($chkSelValue1 === 2) && !function_exists('ftp_connect')) {
|
||||
$myVisClass->processMessage(translate('FTP module not loaded!'), $strPathMessage);
|
||||
$intIsError = 1;
|
||||
}
|
||||
if ($intIsError === 1) {
|
||||
$chkModus = 'add';
|
||||
$chkSelModify = 'errormodify';
|
||||
}
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Configuration domain administration'));
|
||||
if ($intIsError == 1) $conttp->setVariable("PATHMESSAGE","<h2 style=\"padding-bottom:5px;\">".translate("Warning, at least one error occured, please check!")."</h2>".$strPathMessage);
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Single view
|
||||
// ===========
|
||||
if ($chkModus == "add") {
|
||||
// Process acces group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable("CLASS_NAME_1","elementHide");
|
||||
$conttp->setVariable("CLASS_NAME_2","elementHide");
|
||||
$conttp->setVariable("FILL_ALLFIELDS",translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable("FILL_ILLEGALCHARS",translate('The following field contains not permitted characters:'));
|
||||
// Insert data from database in "modify" mode
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,0,'');
|
||||
// Connection method
|
||||
if ($arrModifyData['method'] == 1) $conttp->setVariable("FILE_SELECTED","selected");
|
||||
if ($arrModifyData['method'] == 2) {
|
||||
$conttp->setVariable("FTP_SELECTED","selected");
|
||||
$conttp->setVariable("CLASS_NAME_1","elementShow");
|
||||
}
|
||||
if ($arrModifyData['method'] == 3) {
|
||||
$conttp->setVariable("SFTP_SELECTED","selected");
|
||||
$conttp->setVariable("CLASS_NAME_1","elementShow");
|
||||
$conttp->setVariable("CLASS_NAME_2","elementShow");
|
||||
}
|
||||
// Nagios version
|
||||
if ($arrModifyData['version'] == 1) $conttp->setVariable("VER_SELECTED_1","selected");
|
||||
if ($arrModifyData['version'] == 2) $conttp->setVariable("VER_SELECTED_2","selected");
|
||||
if ($arrModifyData['version'] == 3) $conttp->setVariable("VER_SELECTED_3","selected");
|
||||
// Domain localhost cant' be renamed
|
||||
if ($arrModifyData[$preKeyField] == "localhost") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
} else if ($arrModifyData[$preKeyField] == "common") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("COMMON_INVISIBLE","class=\"elementHide\"");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
}
|
||||
}
|
||||
if ($chkSelModify == "errormodify") {
|
||||
$conttp->setVariable("DAT_TARGET",$chkTfValue1);
|
||||
// Domain localhost cant' be renamed
|
||||
if ($chkTfValue1 == "localhost") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
} else if ($chkTfValue1 == "common") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("COMMON_INVISIBLE","class=\"elementHide\"");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
} else {
|
||||
$conttp->setVariable("LOCKCLASS","inpmust");
|
||||
}
|
||||
$conttp->setVariable("DAT_ALIAS",$chkTfValue2);
|
||||
$conttp->setVariable("DAT_SERVER",$chkTfValue4);
|
||||
// Connection method
|
||||
if ($chkSelValue1 == 1) $conttp->setVariable("FILE_SELECTED","selected");
|
||||
if ($chkSelValue1 == 2) {
|
||||
$conttp->setVariable("FTP_SELECTED","selected");
|
||||
$conttp->setVariable("CLASS_NAME_1","elementShow");
|
||||
}
|
||||
if ($chkSelValue1 == 3) {
|
||||
$conttp->setVariable("SFTP_SELECTED","selected");
|
||||
$conttp->setVariable("CLASS_NAME_1","elementShow");
|
||||
$conttp->setVariable("CLASS_NAME_2","elementShow");
|
||||
}
|
||||
$conttp->setVariable("DAT_USER",$chkTfValue5);
|
||||
$conttp->setVariable("DAT_SSH_KEY_PATH",$chkTfValue7);
|
||||
$conttp->setVariable("DAT_BASEDIR",$chkTfValue8);
|
||||
$conttp->setVariable("DAT_HOSTCONFIG",$chkTfValue9);
|
||||
$conttp->setVariable("DAT_SERVICECONFIG",$chkTfValue10);
|
||||
$conttp->setVariable("DAT_BACKUPDIR",$chkTfValue11);
|
||||
$conttp->setVariable("DAT_HOSTBACKUP",$chkTfValue12);
|
||||
$conttp->setVariable("DAT_SERVICEBACKUP",$chkTfValue13);
|
||||
$conttp->setVariable("DAT_NAGIOSBASEDIR",$chkTfValue14);
|
||||
$conttp->setVariable("DAT_IMPORTDIR",$chkTfValue15);
|
||||
$conttp->setVariable("DAT_COMMANDFILE",$chkTfValue17);
|
||||
$conttp->setVariable("DAT_BINARYFILE",$chkTfValue18);
|
||||
$conttp->setVariable("DAT_PIDFILE",$chkTfValue19);
|
||||
$conttp->setVariable("DAT_CONFFILE",$chkTfValue20);
|
||||
$conttp->setVariable("DAT_PICTUREDIR",$chkTfValue16);
|
||||
// NagiosQL version
|
||||
if ($chkSelValue2 == 1) $conttp->setVariable("VER_SELECTED_1","selected");
|
||||
if ($chkSelValue2 == 2) $conttp->setVariable("VER_SELECTED_2","selected");
|
||||
if ($chkSelValue2 == 3) $conttp->setVariable("VER_SELECTED_3","selected");
|
||||
// Hidden variables
|
||||
$conttp->setVariable("MODUS",$_POST['modus']);
|
||||
$conttp->setVariable("DAT_ID",$_POST['hidId']);
|
||||
$conttp->setVariable("LIMIT",$_POST['hidLimit']);
|
||||
// Active
|
||||
if (isset ($_POST['chbActive'])) {
|
||||
$conttp->setVariable("ACT_CHECKED","checked");
|
||||
} else {
|
||||
$conttp->setVariable("ACT_CHECKED","");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `server`='$chkTfValue4', "
|
||||
. "`port`='$chkTfValue23', `method`='$chkSelValue1', `user`='$chkTfValue5', `password`='$chkTfValue6', "
|
||||
. "`ssh_key_path`='$chkTfValue7', `ftp_secure`=$chkChbValue1, `basedir`='$chkTfValue8', "
|
||||
. "`hostconfig`='$chkTfValue9', `serviceconfig`='$chkTfValue10', `backupdir`='$chkTfValue11', "
|
||||
. "`hostbackup`='$chkTfValue12', `servicebackup`='$chkTfValue13', `nagiosbasedir`='$chkTfValue14', "
|
||||
. "`importdir`='$chkTfValue15', `picturedir`='$chkTfValue16', `commandfile`='$chkTfValue17', "
|
||||
. "`binaryfile`='$chkTfValue18', `pidfile`='$chkTfValue19', `conffile`='$chkTfValue20', "
|
||||
. "`cgifile`='$chkTfValue21', `resourcefile`='$chkTfValue22',`version`=$chkSelValue2, "
|
||||
. "`access_group`=$chkSelAccGr, `active`='$chkActive',`last_modified`=NOW()";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '') && (($chkTfValue4 !== '') || ($chkDataId === 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New Domain inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Domain modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Configuration target'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `nodelete`, `access_group` FROM `$preTableName` WHERE `access_group` IN ($strAccess)
|
||||
$strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,'','',1);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Single view
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
/* Process acces group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable('TITLE', translate('Configuration domain administration'));
|
||||
if ($intIsError === 1) {
|
||||
$conttp->setVariable('PATHMESSAGE', '<h2 style="padding-bottom:5px;">' . translate('Warning, at least one ' .
|
||||
'error occured, please check!') . '</h2>' . $strPathMessage);
|
||||
}
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementHide');
|
||||
$conttp->setVariable('FILL_ALLFIELDS', translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable('FILL_ILLEGALCHARS', translate('The following field contains illegal characters:'));
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, 0, '');
|
||||
/* Connection method */
|
||||
if ((int)$arrModifyData['method'] === 1) {
|
||||
$conttp->setVariable('FILE_SELECTED', 'selected');
|
||||
}
|
||||
if ((int)$arrModifyData['method'] === 2) {
|
||||
$conttp->setVariable('FTP_SELECTED', 'selected');
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementShow');
|
||||
}
|
||||
if ((int)$arrModifyData['method'] === 3) {
|
||||
$conttp->setVariable('SFTP_SELECTED', 'selected');
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementHide');
|
||||
}
|
||||
if ((int)$arrModifyData['ftp_secure'] === 1) {
|
||||
$conttp->setVariable('FTPS_CHECKED', 'checked');
|
||||
}
|
||||
/* Nagios version */
|
||||
$conttp->setVariable('VER_SELECTED_' . $arrModifyData['version'], 'selected');
|
||||
/* Domain localhost can't be renamed */
|
||||
if ($arrModifyData[$preKeyField] === 'localhost') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
} elseif ($arrModifyData[$preKeyField] === 'common') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('COMMON_INVISIBLE', 'class="elementHide"');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
}
|
||||
}
|
||||
if ($chkSelModify === 'errormodify') {
|
||||
$conttp->setVariable('DAT_TARGET', $chkTfValue1);
|
||||
/* Domain localhost can't be renamed */
|
||||
if ($chkTfValue1 === 'localhost') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
} elseif ($chkTfValue1 === 'common') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('COMMON_INVISIBLE', 'class="elementHide"');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
} else {
|
||||
$conttp->setVariable('LOCKCLASS', 'inpmust');
|
||||
}
|
||||
$conttp->setVariable('DAT_ALIAS', $chkTfValue2);
|
||||
$conttp->setVariable('DAT_SERVER', $chkTfValue4);
|
||||
/* Connection method */
|
||||
if ($chkSelValue1 === 1) {
|
||||
$conttp->setVariable('FILE_SELECTED', 'selected');
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementHide');
|
||||
}
|
||||
if ($chkSelValue1 === 2) {
|
||||
$conttp->setVariable('FTP_SELECTED', 'selected');
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementShow');
|
||||
}
|
||||
if ($chkSelValue1 === 3) {
|
||||
$conttp->setVariable('SFTP_SELECTED', 'selected');
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementShow');
|
||||
$conttp->setVariable('CLASS_NAME_3', 'elementHide');
|
||||
}
|
||||
$conttp->setVariable('DAT_USER', $chkTfValue5);
|
||||
$conttp->setVariable('DAT_SSH_KEY_PATH', $chkTfValue7);
|
||||
if ($chkChbValue1 === 1) {
|
||||
$conttp->setVariable('FTPS_CHECKED', 'checked');
|
||||
}
|
||||
$conttp->setVariable('DAT_BASEDIR', $chkTfValue8);
|
||||
$conttp->setVariable('DAT_HOSTCONFIG', $chkTfValue9);
|
||||
$conttp->setVariable('DAT_SERVICECONFIG', $chkTfValue10);
|
||||
$conttp->setVariable('DAT_BACKUPDIR', $chkTfValue11);
|
||||
$conttp->setVariable('DAT_HOSTBACKUP', $chkTfValue12);
|
||||
$conttp->setVariable('DAT_SERVICEBACKUP', $chkTfValue13);
|
||||
$conttp->setVariable('DAT_NAGIOSBASEDIR', $chkTfValue14);
|
||||
$conttp->setVariable('DAT_IMPORTDIR', $chkTfValue15);
|
||||
$conttp->setVariable('DAT_COMMANDFILE', $chkTfValue17);
|
||||
$conttp->setVariable('DAT_BINARYFILE', $chkTfValue18);
|
||||
$conttp->setVariable('DAT_PIDFILE', $chkTfValue19);
|
||||
$conttp->setVariable('DAT_CONFFILE', $chkTfValue20);
|
||||
$conttp->setVariable('DAT_CGIFILE', $chkTfValue21);
|
||||
$conttp->setVariable('DAT_RESOURCEFILE', $chkTfValue22);
|
||||
$conttp->setVariable('DAT_PICTUREDIR', $chkTfValue16);
|
||||
/* NagiosQL version */
|
||||
if ($chkSelValue2 === 1) {
|
||||
$conttp->setVariable('VER_SELECTED_1', 'selected');
|
||||
}
|
||||
if ($chkSelValue2 === 2) {
|
||||
$conttp->setVariable('VER_SELECTED_2', 'selected');
|
||||
}
|
||||
if ($chkSelValue2 === 3) {
|
||||
$conttp->setVariable('VER_SELECTED_3', 'selected');
|
||||
}
|
||||
/* Hidden variables */
|
||||
$conttp->setVariable('MODUS', filter_input(INPUT_POST, 'modus'));
|
||||
$conttp->setVariable('DAT_ID', filter_input(INPUT_POST, 'hidId', FILTER_VALIDATE_INT));
|
||||
$conttp->setVariable('LIMIT', filter_input(INPUT_POST, 'hidLimit', FILTER_VALIDATE_INT));
|
||||
/* Active */
|
||||
if (filter_input(INPUT_POST, 'chbActive')) {
|
||||
$conttp->setVariable('ACT_CHECKED', 'checked');
|
||||
} else {
|
||||
$conttp->setVariable('ACT_CHECKED');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Configuration domain administration'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Configuration target'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `nodelete`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE `access_group` IN ($strAccess) $strOrderString "
|
||||
. "LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages($mastertp, $strErrorMessage, $strInfoMessage, $strConsistMessage, array(), '', 1);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,182 +1,319 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Contactgroup definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 15;
|
||||
$preContent = "admin/contactgroups.tpl.htm";
|
||||
$preSearchSession = 'contactgroup';
|
||||
$preTableName = 'tbl_contactgroup';
|
||||
$preKeyField = 'contactgroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, `contactgroup_members`=$intMselValue2, $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "") && ($intMselValue1 != 0)) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New contact group inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Contact group modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkContactgroupToContact",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkContactgroupToContactgroup",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkContactgroupToContact",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkContactgroupToContact",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkContactgroupToContactgroup",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkContactgroupToContactgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2) != 0) $strInfoMessage = "";
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Contactgroup definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var int $chkListId from prepend_adm.php -> Actual dataset id (list view)
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Contactgroup name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Contactgroup description
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Contact members
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Contactgroup members
|
||||
* @var int $intMselValue1 from prepend_content.php -> Contact members multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Contactgroup members multiselect status value
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 15;
|
||||
$preContent = 'admin/contactgroups.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'contactgroup';
|
||||
$preTableName = 'tbl_contactgroup';
|
||||
$preKeyField = 'contactgroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
* Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define contact groups (contactgroups.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process contact member selection fields
|
||||
$intReturn = 0;
|
||||
if (isset($arrModifyData['members'])) {$intFieldId = $arrModifyData['members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_contact','contact_name','contacts','tbl_lnkContactgroupToContact',2,$intFieldId);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no contacts defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process contactgroup member selection fields
|
||||
if (isset($arrModifyData['contactgroup_members'])) {$intFieldId = $arrModifyData['contactgroup_members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti($preTableName,$preKeyField,'contactgroups','tbl_lnkContactgroupToContactgroup',0,$intFieldId,$chkListId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process acces group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Contact group'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process filter string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, "
|
||||
. "`contactgroup_members`=$intMselValue2, $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '') && ($intMselValue1 !== 0)) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New contact group inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Contact group modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContactgroupToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContactgroupToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContactgroupToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkContactgroupToContact', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContactgroupToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkContactgroupToContactgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$intDataWarning = 0;
|
||||
$conttp->setVariable('TITLE', translate('Define contact groups (contactgroups.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['members'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contact',
|
||||
'contact_name',
|
||||
'contacts',
|
||||
'tbl_lnkContactgroupToContact',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no contacts defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process contactgroup member selection fields */
|
||||
$intFieldId = $arrModifyData['contactgroup_members'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
$preTableName,
|
||||
$preKeyField,
|
||||
'contactgroups',
|
||||
'tbl_lnkContactgroupToContactgroup',
|
||||
0,
|
||||
$intFieldId,
|
||||
$chkListId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process acces group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$strSearchWhere = '';
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define contact groups (contactgroups.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Contact group'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process filter string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess) "
|
||||
. "$strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,342 +1,582 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Contact definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 14;
|
||||
$preContent = "admin/contacts.tpl.htm";
|
||||
$preSearchSession = 'contact';
|
||||
$preTableName = 'tbl_contact';
|
||||
$preKeyField = 'contact_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Checkbox data processing
|
||||
// ========================
|
||||
if ($intVersion == 3) {
|
||||
$strHO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d.$chkChbGr1e.$chkChbGr1f,0,-1);
|
||||
$strSO = substr($chkChbGr2a.$chkChbGr2b.$chkChbGr2c.$chkChbGr2d.$chkChbGr2e.$chkChbGr2f.$chkChbGr2g,0,-1);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Contact definitions
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $strDomainWhere2 from prepend_adm.php -> Domain selection SQL part without table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Contact name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Contact description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Email address
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Pager number
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Additional address 1
|
||||
* @var string $chkTfValue6 from prepend_content.php -> Additional address 2
|
||||
* @var string $chkTfValue7 from prepend_content.php -> Additional address 3
|
||||
* @var string $chkTfValue8 from prepend_content.php -> Additional address 4
|
||||
* @var string $chkTfValue9 from prepend_content.php -> Additional address 5
|
||||
* @var string $chkTfValue10 from prepend_content.php -> Additional address 6
|
||||
* @var string $chkTfValue11 from prepend_content.php -> Name value if used as contact template
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Time period hosts
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Time period services
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Contact groups
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Host command
|
||||
* @var array $chkMselValue3 from prepend_content.php -> Service command
|
||||
* @var int $intMselValue1 from prepend_content.php -> Contact groups multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Host command multiselect status value
|
||||
* @var int $intMselValue3 from prepend_content.php -> Service command multiselect status value
|
||||
* @var string $chkChbGr1a from prepend_content.php -> Host options (d)
|
||||
* @var string $chkChbGr1b from prepend_content.php -> Host options (u)
|
||||
* @var string $chkChbGr1c from prepend_content.php -> Host options (r)
|
||||
* @var string $chkChbGr1d from prepend_content.php -> Host options (f)
|
||||
* @var string $chkChbGr1e from prepend_content.php -> Host options (s)
|
||||
* @var string $chkChbGr1f from prepend_content.php -> Host options (n)
|
||||
* @var string $chkChbGr2a from prepend_content.php -> Service options (w)
|
||||
* @var string $chkChbGr2b from prepend_content.php -> Service options (u)
|
||||
* @var string $chkChbGr2c from prepend_content.php -> Service options (c)
|
||||
* @var string $chkChbGr2d from prepend_content.php -> Service options (r)
|
||||
* @var string $chkChbGr2e from prepend_content.php -> Service options (f)
|
||||
* @var string $chkChbGr2f from prepend_content.php -> Service options (s)
|
||||
* @var string $chkChbGr2g from prepend_content.php -> Service options (n)
|
||||
* @var int $chkRadValue1 from prepend_content.php -> Contact groups multiselect options
|
||||
* @var int $chkRadValue2 from prepend_content.php -> Host alarming
|
||||
* @var int $chkRadValue3 from prepend_content.php -> Service alarming
|
||||
* @var int $chkRadValue4 from prepend_content.php -> Host command multiselect options
|
||||
* @var int $chkRadValue5 from prepend_content.php -> Service command multiselect options
|
||||
* @var int $chkRadValue6 from prepend_content.php -> Retain status information
|
||||
* @var int $chkRadValue7 from prepend_content.php -> Retain non-status information
|
||||
* @var int $chkRadValue8 from prepend_content.php -> Can submit command
|
||||
* @var string $chkTfNullVal1 from prepend_content.php -> Minimum importance
|
||||
* @var int $intVariables from prepend_content.php -> Form uses variable definitions
|
||||
* @var int $intTemplates from prepend_content.php -> Form uses template definitions
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 14;
|
||||
$preContent = 'admin/contacts.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'contact';
|
||||
$preTableName = 'tbl_contact';
|
||||
$preKeyField = 'contact_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
* Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
if (!isset($intMselValue3)) {
|
||||
$intMselValue3 = 0;
|
||||
}
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Checkbox data processing
|
||||
*/
|
||||
if (($intVersion === 3) || ($intVersion === 4)) {
|
||||
$strHO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d . $chkChbGr1e . $chkChbGr1f, 0, -1);
|
||||
$strSO = substr($chkChbGr2a . $chkChbGr2b . $chkChbGr2c . $chkChbGr2d . $chkChbGr2e . $chkChbGr2f . $chkChbGr2g, 0, -1);
|
||||
} else {
|
||||
$strHO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d.$chkChbGr1f,0,-1);
|
||||
$strSO = substr($chkChbGr2a.$chkChbGr2b.$chkChbGr2c.$chkChbGr2d.$chkChbGr2e.$chkChbGr2g,0,-1);
|
||||
$strHO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d . $chkChbGr1f, 0, -1);
|
||||
$strSO = substr($chkChbGr2a . $chkChbGr2b . $chkChbGr2c . $chkChbGr2d . $chkChbGr2e . $chkChbGr2g, 0, -1);
|
||||
}
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `contactgroups`=$intMselValue1, `contactgroups_tploptions`=$chkRadValue1,
|
||||
`host_notifications_enabled`='$chkRadValue2', `service_notifications_enabled`='$chkRadValue3', `host_notification_period`='$chkSelValue1',
|
||||
`service_notification_period`='$chkSelValue2', `host_notification_options`='$strHO', `host_notification_commands_tploptions`=$chkRadValue4,
|
||||
`service_notification_options`='$strSO', `host_notification_commands`=$intMselValue2, `service_notification_commands`=$intMselValue3,
|
||||
`service_notification_commands_tploptions`=$chkRadValue5, `can_submit_commands`='$chkRadValue8', `retain_status_information`='$chkRadValue6',
|
||||
`retain_nonstatus_information`='$chkRadValue7', `email`='$chkTfValue3', `pager`='$chkTfValue4', `address1`='$chkTfValue5', `address2`='$chkTfValue6',
|
||||
`address3`='$chkTfValue7', `address4`='$chkTfValue8', `address5`='$chkTfValue9', `address6`='$chkTfValue10', `name`='$chkTfValue11',
|
||||
`use_variables`='$intVariables', `use_template`=$intTemplates, $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ($chkTfValue1 != "") {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New contact inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Contact modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkContactToContactgroup",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkContactToCommandHost",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) $intRet3 = $myDataClass->dataInsertRelation("tbl_lnkContactToCommandService",$chkDataId,$chkMselValue3);
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkContactToContactgroup",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkContactToContactgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkContactToCommandHost",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkContactToCommandHost",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation("tbl_lnkContactToCommandService",$chkDataId,$chkMselValue3);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation("tbl_lnkContactToCommandService",$chkDataId);
|
||||
}
|
||||
if ($intRet3 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Insert/update templates from session data
|
||||
// =========================================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "DELETE FROM `tbl_lnkContactToContacttemplate` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) && (count($_SESSION['templatedefinition']) != 0)) {
|
||||
$intSortId = 1;
|
||||
foreach($_SESSION['templatedefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$strSQL = "INSERT INTO `tbl_lnkContactToContacttemplate` (`idMaster`,`idSlave`,`idTable`,`idSort`)
|
||||
VALUES ($chkDataId,".$elem['idSlave'].",".$elem['idTable'].",".$intSortId.")";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
$intSortId++;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Insert/update variables from session data
|
||||
// =========================================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "SELECT * FROM `tbl_lnkContactToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDataCount != 0) {
|
||||
foreach ($arrData AS $elem) {
|
||||
$strSQL = "DELETE FROM `tbl_variabledefinition` WHERE `id`=".$elem['idSlave'];
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
$strSQL = "DELETE FROM `tbl_lnkContactToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) && (count($_SESSION['variabledefinition']) != 0)) {
|
||||
foreach($_SESSION['variabledefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$strSQL = "INSERT INTO `tbl_variabledefinition` (`name`,`value`,`last_modified`)
|
||||
VALUES ('".$elem['definition']."','".$elem['range']."',now())";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
$strSQL = "INSERT INTO `tbl_lnkContactToVariabledefinition` (`idMaster`,`idSlave`)
|
||||
VALUES ($chkDataId,$intInsertId)";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', "
|
||||
. "`contactgroups`=$intMselValue1, `contactgroups_tploptions`=$chkRadValue1, "
|
||||
. "`minimum_importance`=$chkTfNullVal1, "
|
||||
. "`host_notifications_enabled`='$chkRadValue2', `service_notifications_enabled`='$chkRadValue3', "
|
||||
. "`host_notification_period`='$chkSelValue1', `service_notification_period`='$chkSelValue2', "
|
||||
. "`host_notification_options`='$strHO', `host_notification_commands_tploptions`=$chkRadValue4, "
|
||||
. "`service_notification_options`='$strSO', `host_notification_commands`=$intMselValue2, "
|
||||
. "`service_notification_commands`=$intMselValue3, "
|
||||
. "`service_notification_commands_tploptions`=$chkRadValue5, `can_submit_commands`='$chkRadValue8', "
|
||||
. "`retain_status_information`='$chkRadValue6', `retain_nonstatus_information`='$chkRadValue7', "
|
||||
. "`email`='$chkTfValue3', `pager`='$chkTfValue4', `address1`='$chkTfValue5', `address2`='$chkTfValue6', "
|
||||
. "`address3`='$chkTfValue7', `address4`='$chkTfValue8', `address5`='$chkTfValue9', "
|
||||
. "`address6`='$chkTfValue10', `name`='$chkTfValue11', `use_variables`='$intVariables', "
|
||||
. "`use_template`=$intTemplates, $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ($chkTfValue1 !== '') {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New contact inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Contact modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContactToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContactToCommandHost',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContactToCommandService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContactToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkContactToContactgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContactToCommandHost',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkContactToCommandHost', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContactToCommandService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation('tbl_lnkContactToCommandService', $chkDataId);
|
||||
}
|
||||
if ($intRet3 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
/*
|
||||
Insert/update templates from session data
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL = "DELETE FROM `tbl_lnkContactToContacttemplate` WHERE `idMaster`=$chkDataId";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
||||
(count($_SESSION['templatedefinition']) !== 0)) {
|
||||
$intSortId = 1;
|
||||
foreach ($_SESSION['templatedefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$strSQL = 'INSERT INTO `tbl_lnkContactToContacttemplate` (`idMaster`,`idSlave`,'
|
||||
. "`idTable`,`idSort`) VALUES ($chkDataId," . $elem['idSlave'] . ', '
|
||||
. $elem['idTable'] . ',' . $intSortId . ')';
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
$intSortId++;
|
||||
}
|
||||
}
|
||||
/*
|
||||
Insert/update variables from session data
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL1 = "SELECT * FROM `tbl_lnkContactToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL1, $arrData, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCount !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
$strSQL = 'DELETE FROM `tbl_variabledefinition` WHERE `id`=' . $elem['idSlave'];
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
$strSQL = "DELETE FROM `tbl_lnkContactToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) &&
|
||||
(count($_SESSION['variabledefinition']) !== 0)) {
|
||||
foreach ($_SESSION['variabledefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$strSQL = 'INSERT INTO `tbl_variabledefinition` (`name`,`value`,`last_modified`) '
|
||||
. "VALUES ('" . $elem['definition'] . "','" . $elem['range'] . "',now())";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$strSQL = 'INSERT INTO `tbl_lnkContactToVariabledefinition` (`idMaster`,`idSlave`) '
|
||||
. "VALUES ($chkDataId,$intInsertId)";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate("Define contacts (contacts.cfg)"));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process template selection fields (Spezial)
|
||||
$strWhere = "";
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
$strWhere = "AND `id` <> ".$arrModifyData['id'];
|
||||
}
|
||||
$strSQL = "SELECT `id`,`template_name`, `active` FROM `tbl_contacttemplate` WHERE $strDomainWhere2 ORDER BY `template_name`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataTpl,$intDataCountTpl);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDataCountTpl != 0) {
|
||||
foreach ($arrDataTpl AS $elem) {
|
||||
if ($elem['active'] == 0) {
|
||||
$strActive = " [inactive]";
|
||||
$conttp->setVariable("SPECIAL_STYLE","inactive_option");
|
||||
} else {
|
||||
$strActive = "";
|
||||
$conttp->setVariable("SPECIAL_STYLE","");
|
||||
}
|
||||
$conttp->setVariable("DAT_TEMPLATE",htmlspecialchars($elem['template_name'],ENT_QUOTES,'UTF-8').$strActive);
|
||||
$conttp->setVariable("DAT_TEMPLATE_ID",$elem['id']."::1");
|
||||
$conttp->parse("template");
|
||||
}
|
||||
}
|
||||
$strSQL = "SELECT `id`, `name`, `active` FROM `$preTableName` WHERE `name` <> '' $strWhere AND $strDomainWhere ORDER BY `name`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataHpl,$intDataCount);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($arrDataHpl != 0) {
|
||||
foreach ($arrDataHpl AS $elem) {
|
||||
if ($elem['active'] == 0) {
|
||||
$strActive = " [inactive]";
|
||||
$conttp->setVariable("SPECIAL_STYLE","inactive_option");
|
||||
} else {
|
||||
$strActive = "";
|
||||
$conttp->setVariable("SPECIAL_STYLE","");
|
||||
}
|
||||
$conttp->setVariable("DAT_TEMPLATE",htmlspecialchars($elem['name'],ENT_QUOTES,'UTF-8').$strActive);
|
||||
$conttp->setVariable("DAT_TEMPLATE_ID",$elem['id']."::2");
|
||||
$conttp->parse("template");
|
||||
}
|
||||
}
|
||||
// Process timeperiod selection fields
|
||||
$intReturn = 0;
|
||||
if (isset($arrModifyData['host_notification_period'])) {$intFieldId = $arrModifyData['host_notification_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','host_time',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['service_notification_period'])) {$intFieldId = $arrModifyData['service_notification_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','service_time',1,$intFieldId);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no time periods defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process command selection fields
|
||||
if (isset($arrModifyData['host_notification_commands'])) {$intFieldId = $arrModifyData['host_notification_commands'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_command','command_name','host_command','tbl_lnkContactToCommandHost',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['service_notification_commands'])) {$intFieldId = $arrModifyData['service_notification_commands'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_command','command_name','service_command','tbl_lnkContactToCommandService',0,$intFieldId);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no commands defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process contactgroup selection field
|
||||
if (isset($arrModifyData['contactgroups'])) {$intFieldId = $arrModifyData['contactgroups'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_contactgroup','contactgroup_name','contactgroup','tbl_lnkContactToContactgroup',2,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$strChbFields = "HNE,SNE,RSI,CSC,RNS,TPL,SEC,HOC,COG";
|
||||
$myContentClass->addFormInit($conttp,$strChbFields);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion == 3) {
|
||||
$conttp->setVariable("HOST_OPTION_FIELDS","chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1e,chbGr1f");
|
||||
$conttp->setVariable("SERVICE_OPTION_FIELDS","chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2f,chbGr2g");
|
||||
} else {
|
||||
$conttp->setVariable("HOST_OPTION_FIELDS","chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1f");
|
||||
$conttp->setVariable("SERVICE_OPTION_FIELDS","chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2g");
|
||||
$conttp->setVariable("VERSION_20_VALUE_MUST",",tfValue2");
|
||||
}
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo,$strChbFields);
|
||||
// Process radio fields
|
||||
$conttp->setVariable("DAT_HNE".$arrModifyData['host_notifications_enabled']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_SNE".$arrModifyData['service_notifications_enabled']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_RSI".$arrModifyData['retain_status_information']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_CSC".$arrModifyData['can_submit_commands']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_RNS".$arrModifyData['retain_nonstatus_information']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_TPL".$arrModifyData['use_template_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_SEC".$arrModifyData['service_notification_commands_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_HOC".$arrModifyData['host_notification_commands_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_COG".$arrModifyData['contactgroups_tploptions']."_CHECKED","checked");
|
||||
// Process option fields
|
||||
foreach(explode(",",$arrModifyData['host_notification_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_HO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
foreach(explode(",",$arrModifyData['service_notification_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_SO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Contact name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%' OR
|
||||
`email` LIKE '%".$strSearchTxt."%' OR `pager` LIKE '%".$strSearchTxt."%' OR
|
||||
`address1` LIKE '%".$strSearchTxt."%' OR `address2` LIKE '%".$strSearchTxt."%' OR
|
||||
`address3` LIKE '%".$strSearchTxt."%' OR `address4` LIKE '%".$strSearchTxt."%' OR
|
||||
`address5` LIKE '%".$strSearchTxt."%' OR `address6` LIKE '%".$strSearchTxt."%' OR
|
||||
`name` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `register`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$intDataWarning = 0;
|
||||
$conttp->setVariable('TITLE', translate('Define contacts (contacts.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process access group selection field */
|
||||
$strWhere = '';
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
$strWhere = 'AND `id` <> ' . $arrModifyData['id'];
|
||||
}
|
||||
$strSQL5 = 'SELECT `id`,`template_name`, `active`, `config_id` '
|
||||
. "FROM `tbl_contacttemplate` WHERE $strDomainWhere2 ORDER BY `template_name`";
|
||||
$booReturn5 = $myDBClass->hasDataArray($strSQL5, $arrDataTpl, $intDataCountTpl);
|
||||
if ($booReturn5 === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCountTpl !== 0) {
|
||||
/** @var array $arrDataTpl */
|
||||
foreach ($arrDataTpl as $elem) {
|
||||
if ((int)$elem['active'] === 0) {
|
||||
$strActive = ' [inactive]';
|
||||
$conttp->setVariable('SPECIAL_STYLE', 'inactive_option');
|
||||
} else {
|
||||
$strActive = '';
|
||||
$conttp->setVariable('SPECIAL_STYLE');
|
||||
}
|
||||
if ((int)$elem['config_id'] === 0) {
|
||||
$strCommon = ' [common]';
|
||||
} else {
|
||||
$strCommon = '';
|
||||
}
|
||||
$conttp->setVariable('DAT_TEMPLATE', htmlspecialchars($elem['template_name'], ENT_QUOTES, 'UTF-8') .
|
||||
$strActive . $strCommon);
|
||||
$conttp->setVariable('DAT_TEMPLATE_ID', $elem['id'] . '::1');
|
||||
}
|
||||
$conttp->parse('template');
|
||||
}
|
||||
$strSQL6 = 'SELECT `id`, `name`, `active` '
|
||||
. "FROM `$preTableName` WHERE `name` <> '' $strWhere AND $strDomainWhere ORDER BY `name`";
|
||||
$booReturn6 = $myDBClass->hasDataArray($strSQL6, $arrDataHpl, $intDataCount);
|
||||
if ($booReturn6 === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCount !== 0) {
|
||||
/** @var array $arrDataHpl */
|
||||
foreach ($arrDataHpl as $elem) {
|
||||
if ((int)$elem['active'] === 0) {
|
||||
$strActive = ' [inactive]';
|
||||
$conttp->setVariable('SPECIAL_STYLE', 'inactive_option');
|
||||
} else {
|
||||
$strActive = '';
|
||||
$conttp->setVariable('SPECIAL_STYLE');
|
||||
}
|
||||
$conttp->setVariable('DAT_TEMPLATE', htmlspecialchars($elem['name'], ENT_QUOTES, 'UTF-8') . $strActive);
|
||||
$conttp->setVariable('DAT_TEMPLATE_ID', $elem['id'] . '::2');
|
||||
}
|
||||
$conttp->parse('template');
|
||||
}
|
||||
/* Process timeperiod selection fields */
|
||||
$intFieldId = $arrModifyData['host_notification_period'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'host_time', 1, $intFieldId);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['service_notification_period'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'service_time', 1, $intFieldId);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no time periods defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process command selection fields */
|
||||
$intFieldId = $arrModifyData['host_notification_commands'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectMulti(
|
||||
'tbl_command',
|
||||
'command_name',
|
||||
'host_command',
|
||||
'tbl_lnkContactToCommandHost',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['service_notification_commands'] ?? 0;
|
||||
$intReturn4 = $myVisClass->parseSelectMulti(
|
||||
'tbl_command',
|
||||
'command_name',
|
||||
'service_command',
|
||||
'tbl_lnkContactToCommandService',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn4 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no commands defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process contactgroup selection field */
|
||||
$intFieldId = $arrModifyData['contactgroups'] ?? 0;
|
||||
$intReturn5 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contactgroup',
|
||||
'contactgroup_name',
|
||||
'contactgroup',
|
||||
'tbl_lnkContactToContactgroup',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn5 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn6 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn6 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$strChbFields = 'HNE,SNE,RSI,CSC,RNS,TPL,SEC,HOC,COG';
|
||||
$myContentClass->addFormInit($conttp, $strChbFields);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
$conttp->setVariable('DISABLE_SAVE', 'disabled');
|
||||
}
|
||||
if ($intVersion === 4) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1e,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2f,chbGr2g');
|
||||
}
|
||||
if ($intVersion === 3) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1e,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2f,chbGr2g');
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2g');
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', ',tfValue2');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo, $strChbFields);
|
||||
/* Process radio fields */
|
||||
$conttp->setVariable('DAT_HNE' . $arrModifyData['host_notifications_enabled'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_SNE' . $arrModifyData['service_notifications_enabled'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_RSI' . $arrModifyData['retain_status_information'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_CSC' . $arrModifyData['can_submit_commands'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_RNS' . $arrModifyData['retain_nonstatus_information'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_TPL' . $arrModifyData['use_template_tploptions'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable(
|
||||
'DAT_SEC' . $arrModifyData['service_notification_commands_tploptions'] . '_CHECKED',
|
||||
'checked'
|
||||
);
|
||||
$conttp->setVariable('DAT_HOC' . $arrModifyData['host_notification_commands_tploptions'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_COG' . $arrModifyData['contactgroups_tploptions'] . '_CHECKED', 'checked');
|
||||
/* Process option fields */
|
||||
foreach (explode(',', $arrModifyData['host_notification_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_HO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
foreach (explode(',', $arrModifyData['service_notification_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_SO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
$strSearchWhere = '';
|
||||
$intLineCount = 0;
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define contacts (contacts.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Contact name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`email` LIKE '%" . $strSearchTxt . "%' OR `pager` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address1` LIKE '%" . $strSearchTxt . "%' OR `address2` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address3` LIKE '%" . $strSearchTxt . "%' OR `address4` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address5` LIKE '%" . $strSearchTxt . "%' OR `address6` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`name` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$strSQL7 = 'SELECT count(*) AS `number` '
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn7 = $myDBClass->hasSingleDataset($strSQL7, $arrDataLinesCount);
|
||||
if ($booReturn7 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL8 = "SELECT `id`, `$preKeyField`, `alias`, `active`, `register`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` "
|
||||
. "IN ($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn8 = $myDBClass->hasDataArray($strSQL8, $arrDataLines, $intDataCount);
|
||||
if ($booReturn8 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,334 +1,575 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Contact template definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 17;
|
||||
$preContent = "admin/contacttemplates.tpl.htm";
|
||||
$preSearchSession = 'contacttemplate';
|
||||
$preTableName = 'tbl_contacttemplate';
|
||||
$preKeyField = 'template_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Checkbox data processing
|
||||
// ========================
|
||||
if ($intVersion == 3) {
|
||||
$strHO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d.$chkChbGr1e.$chkChbGr1f,0,-1);
|
||||
$strSO = substr($chkChbGr2a.$chkChbGr2b.$chkChbGr2c.$chkChbGr2d.$chkChbGr2e.$chkChbGr2f.$chkChbGr2g,0,-1);
|
||||
} else {
|
||||
$strHO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d.$chkChbGr1f,0,-1);
|
||||
$strSO = substr($chkChbGr2a.$chkChbGr2b.$chkChbGr2c.$chkChbGr2d.$chkChbGr2e.$chkChbGr2g,0,-1);
|
||||
}
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `contactgroups`=$intMselValue1, `contactgroups_tploptions`=$chkRadValue1,
|
||||
`host_notifications_enabled`='$chkRadValue2', `service_notifications_enabled`='$chkRadValue3', `host_notification_period`='$chkSelValue1',
|
||||
`service_notification_period`='$chkSelValue2', `host_notification_options`='$strHO', `host_notification_commands_tploptions`=$chkRadValue4,
|
||||
`service_notification_options`='$strSO', `host_notification_commands`=$intMselValue2, `service_notification_commands`=$intMselValue3,
|
||||
`service_notification_commands_tploptions`=$chkRadValue5, `can_submit_commands`='$chkRadValue8', `retain_status_information`='$chkRadValue6',
|
||||
`retain_nonstatus_information`='$chkRadValue7', `email`='$chkTfValue3', `pager`='$chkTfValue4', `address1`='$chkTfValue5', `address2`='$chkTfValue6',
|
||||
`address3`='$chkTfValue7', `address4`='$chkTfValue8', `address5`='$chkTfValue9', `address6`='$chkTfValue10',
|
||||
`use_variables`='$intVariables', `use_template`=$intTemplates, $preSQLCommon2";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ($chkTfValue1 != "") {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New contact template inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Contact template modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkContacttemplateToContactgroup",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkContacttemplateToCommandHost",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) $intRet3 = $myDataClass->dataInsertRelation("tbl_lnkContacttemplateToCommandService",$chkDataId,$chkMselValue3);
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkContacttemplateToContactgroup",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkContacttemplateToContactgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkContacttemplateToCommandHost",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkContacttemplateToCommandHost",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation("tbl_lnkContacttemplateToCommandService",$chkDataId,$chkMselValue3);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation("tbl_lnkContacttemplateToCommandService",$chkDataId);
|
||||
}
|
||||
if ($intRet3 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Insert/update templates from session data
|
||||
// =========================================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "DELETE FROM `tbl_lnkContacttemplateToContacttemplate` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) && (count($_SESSION['templatedefinition']) != 0)) {
|
||||
$intSortId = 1;
|
||||
foreach($_SESSION['templatedefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$strSQL = "INSERT INTO `tbl_lnkContacttemplateToContacttemplate` (`idMaster`,`idSlave`,`idTable`,`idSort`)
|
||||
VALUES ($chkDataId,".$elem['idSlave'].",".$elem['idTable'].",".$intSortId.")";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
$intSortId++;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Insert/update variables from session data
|
||||
// =========================================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "SELECT * FROM `tbl_lnkContacttemplateToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDataCount != 0) {
|
||||
foreach ($arrData AS $elem) {
|
||||
$strSQL = "DELETE FROM `tbl_variabledefinition` WHERE `id`=".$elem['idSlave'];
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
$strSQL = "DELETE FROM `tbl_lnkContacttemplateToVariabledefinition` WHERE `idMaster`=$chkDataId";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) && (count($_SESSION['variabledefinition']) != 0)) {
|
||||
foreach($_SESSION['variabledefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$strSQL = "INSERT INTO `tbl_variabledefinition` (`name`,`value`,`last_modified`)
|
||||
VALUES ('".$elem['definition']."','".$elem['range']."',now())";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
$strSQL = "INSERT INTO `tbl_lnkContacttemplateToVariabledefinition` (`idMaster`,`idSlave`)
|
||||
VALUES ($chkDataId,$intInsertId)";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate("Define contact templates (contacttemplates.cfg)"));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process template selection fields (Spezial)
|
||||
$strWhere = "";
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
$strWhere = "AND `id` <> ".$arrModifyData['id'];
|
||||
}
|
||||
$strSQL = "SELECT `id`,`$preKeyField`, `active` FROM `$preTableName` WHERE $strDomainWhere $strWhere ORDER BY `$preKeyField`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataTpl,$intDataCountTpl);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDataCountTpl != 0) {
|
||||
foreach ($arrDataTpl AS $elem) {
|
||||
if ($elem['active'] == 0) {
|
||||
$strActive = " [inactive]";
|
||||
$conttp->setVariable("SPECIAL_STYLE","inactive_option");
|
||||
} else {
|
||||
$strActive = "";
|
||||
$conttp->setVariable("SPECIAL_STYLE","");
|
||||
}
|
||||
$conttp->setVariable("DAT_TEMPLATE",htmlspecialchars($elem[$preKeyField],ENT_QUOTES,'UTF-8').$strActive);
|
||||
$conttp->setVariable("DAT_TEMPLATE_ID",$elem['id']."::1");
|
||||
$conttp->parse("template");
|
||||
}
|
||||
}
|
||||
$strSQL = "SELECT `id`, `name`, `active` FROM `tbl_contact` WHERE `name` <> '' AND $strDomainWhere2 ORDER BY name";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataHpl,$intDataCount);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($arrDataHpl != 0) {
|
||||
foreach ($arrDataHpl AS $elem) {
|
||||
if ($elem['active'] == 0) {
|
||||
$strActive = " [inactive]";
|
||||
$conttp->setVariable("SPECIAL_STYLE","inactive_option");
|
||||
} else {
|
||||
$strActive = "";
|
||||
$conttp->setVariable("SPECIAL_STYLE","");
|
||||
}
|
||||
$conttp->setVariable("DAT_TEMPLATE",htmlspecialchars($elem['name'],ENT_QUOTES,'UTF-8').$strActive);
|
||||
$conttp->setVariable("DAT_TEMPLATE_ID",$elem['id']."::2");
|
||||
$conttp->parse("template");
|
||||
}
|
||||
}
|
||||
// Process timeperiod selection fields
|
||||
$intReturn = 0;
|
||||
if (isset($arrModifyData['host_notification_period'])) {$intFieldId = $arrModifyData['host_notification_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','host_time',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['service_notification_period'])) {$intFieldId = $arrModifyData['service_notification_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','service_time',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process command selection fields
|
||||
if (isset($arrModifyData['host_notification_commands'])) {$intFieldId = $arrModifyData['host_notification_commands'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_command','command_name','host_command','tbl_lnkContacttemplateToCommandHost',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['service_notification_commands'])) {$intFieldId = $arrModifyData['service_notification_commands'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_command','command_name','service_command','tbl_lnkContacttemplateToCommandService',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process contactgroup selection field
|
||||
if (isset($arrModifyData['contactgroups'])) {$intFieldId = $arrModifyData['contactgroups'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_contactgroup','contactgroup_name','contactgroup','tbl_lnkContacttemplateToContactgroup',2,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process acces group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$strChbFields = "HNE,SNE,RSI,CSC,RNS,TPL,SEC,HOC,COG";
|
||||
$myContentClass->addFormInit($conttp,$strChbFields);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion == 3) {
|
||||
$conttp->setVariable("HOST_OPTION_FIELDS","chbHOd3,chbHOu3,chbHOr3,chbHOf3,chbHOs3,chbHOn3");
|
||||
$conttp->setVariable("SERVICE_OPTION_FIELDS","chbSOw3,chbSOu3,chbSOc3,chbSOr3,chbSOf3,chbSOs3,chbSOn3");
|
||||
} else {
|
||||
$conttp->setVariable("HOST_OPTION_FIELDS","chbHOd2,chbHOu2,chbHOr2,chbHOf2,chbHOn2");
|
||||
$conttp->setVariable("SERVICE_OPTION_FIELDS","chbSOw2,chbSOu2,chbSOc2,chbSOr2,chbSOf2,chbSOn2");
|
||||
$conttp->setVariable("VERSION_20_VALUE_MUST",",tfFriendly");
|
||||
}
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo,$strChbFields);
|
||||
// Process radio fields
|
||||
$conttp->setVariable("DAT_HNE".$arrModifyData['host_notifications_enabled']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_SNE".$arrModifyData['service_notifications_enabled']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_RSI".$arrModifyData['retain_status_information']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_CSC".$arrModifyData['can_submit_commands']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_RNS".$arrModifyData['retain_nonstatus_information']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_TPL".$arrModifyData['use_template_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_SEC".$arrModifyData['service_notification_commands_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_HOC".$arrModifyData['host_notification_commands_tploptions']."_CHECKED","checked");
|
||||
$conttp->setVariable("DAT_COG".$arrModifyData['contactgroups_tploptions']."_CHECKED","checked");
|
||||
// Process option fields
|
||||
foreach(explode(",",$arrModifyData['host_notification_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_HO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
foreach(explode(",",$arrModifyData['service_notification_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_SO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Contact name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process filter string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%' OR
|
||||
`email` LIKE '%".$strSearchTxt."%' OR `pager` LIKE '%".$strSearchTxt."%' OR
|
||||
`address1` LIKE '%".$strSearchTxt."%' OR `address2` LIKE '%".$strSearchTxt."%' OR
|
||||
`address3` LIKE '%".$strSearchTxt."%' OR `address4` LIKE '%".$strSearchTxt."%' OR
|
||||
`address5` LIKE '%".$strSearchTxt."%' OR `address6` LIKE '%".$strSearchTxt."%')";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `register`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
Project : NagiosQL
|
||||
Component : Contact template definitions
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon2 from prepend_content.php -> Common SQL part 2
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $strDomainWhere2 from prepend_adm.php -> Domain selection SQL part without table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Contact template name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Contact template description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Email address
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Pager number
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Additional address 1
|
||||
* @var string $chkTfValue6 from prepend_content.php -> Additional address 2
|
||||
* @var string $chkTfValue7 from prepend_content.php -> Additional address 3
|
||||
* @var string $chkTfValue8 from prepend_content.php -> Additional address 4
|
||||
* @var string $chkTfValue9 from prepend_content.php -> Additional address 5
|
||||
* @var string $chkTfValue10 from prepend_content.php -> Additional address 6
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Time period hosts
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Time period services
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Contact groups
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Host command
|
||||
* @var array $chkMselValue3 from prepend_content.php -> Service command
|
||||
* @var int $intMselValue1 from prepend_content.php -> Contact groups multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Host command multiselect status value
|
||||
* @var int $intMselValue3 from prepend_content.php -> Service command multiselect status value
|
||||
* @var string $chkChbGr1a from prepend_content.php -> Host options (d)
|
||||
* @var string $chkChbGr1b from prepend_content.php -> Host options (u)
|
||||
* @var string $chkChbGr1c from prepend_content.php -> Host options (r)
|
||||
* @var string $chkChbGr1d from prepend_content.php -> Host options (f)
|
||||
* @var string $chkChbGr1e from prepend_content.php -> Host options (s)
|
||||
* @var string $chkChbGr1f from prepend_content.php -> Host options (n)
|
||||
* @var string $chkChbGr2a from prepend_content.php -> Service options (w)
|
||||
* @var string $chkChbGr2b from prepend_content.php -> Service options (u)
|
||||
* @var string $chkChbGr2c from prepend_content.php -> Service options (c)
|
||||
* @var string $chkChbGr2d from prepend_content.php -> Service options (r)
|
||||
* @var string $chkChbGr2e from prepend_content.php -> Service options (f)
|
||||
* @var string $chkChbGr2f from prepend_content.php -> Service options (s)
|
||||
* @var string $chkChbGr2g from prepend_content.php -> Service options (n)
|
||||
* @var int $chkRadValue1 from prepend_content.php -> Contact groups multiselect options
|
||||
* @var int $chkRadValue2 from prepend_content.php -> Host alarming
|
||||
* @var int $chkRadValue3 from prepend_content.php -> Service alarming
|
||||
* @var int $chkRadValue4 from prepend_content.php -> Host command multiselect options
|
||||
* @var int $chkRadValue5 from prepend_content.php -> Service command multiselect options
|
||||
* @var int $chkRadValue6 from prepend_content.php -> Retain status information
|
||||
* @var int $chkRadValue7 from prepend_content.php -> Retain non-status information
|
||||
* @var int $chkRadValue8 from prepend_content.php -> Can submit command
|
||||
* @var string $chkTfNullVal1 from prepend_content.php -> Minimum importance
|
||||
* @var int $intVariables from prepend_content.php -> Form uses variable definitions
|
||||
* @var int $intTemplates from prepend_content.php -> Form uses template definitions
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 17;
|
||||
$preContent = 'admin/contacttemplates.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'contacttemplate';
|
||||
$preTableName = 'tbl_contacttemplate';
|
||||
$preKeyField = 'template_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
* Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
if (!isset($intMselValue3)) {
|
||||
$intMselValue3 = 0;
|
||||
}
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Checkbox data processing
|
||||
*/
|
||||
if (($intVersion === 3) || ($intVersion === 4)) {
|
||||
$strHO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d . $chkChbGr1e . $chkChbGr1f, 0, -1);
|
||||
$strSO = substr($chkChbGr2a . $chkChbGr2b . $chkChbGr2c . $chkChbGr2d . $chkChbGr2e . $chkChbGr2f . $chkChbGr2g, 0, -1);
|
||||
} else {
|
||||
$strHO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d . $chkChbGr1f, 0, -1);
|
||||
$strSO = substr($chkChbGr2a . $chkChbGr2b . $chkChbGr2c . $chkChbGr2d . $chkChbGr2e . $chkChbGr2g, 0, -1);
|
||||
}
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', "
|
||||
. "`contactgroups`=$intMselValue1, `contactgroups_tploptions`=$chkRadValue1, "
|
||||
. "`minimum_importance`=$chkTfNullVal1, "
|
||||
. "`host_notifications_enabled`='$chkRadValue2', `service_notifications_enabled`='$chkRadValue3', "
|
||||
. "`host_notification_period`='$chkSelValue1', `service_notification_period`='$chkSelValue2', "
|
||||
. "`host_notification_options`='$strHO', `host_notification_commands_tploptions`=$chkRadValue4, "
|
||||
. "`service_notification_options`='$strSO', `host_notification_commands`=$intMselValue2, "
|
||||
. "`service_notification_commands`=$intMselValue3, "
|
||||
. "`service_notification_commands_tploptions`=$chkRadValue5, `can_submit_commands`='$chkRadValue8', "
|
||||
. "`retain_status_information`='$chkRadValue6', `retain_nonstatus_information`='$chkRadValue7', "
|
||||
. "`email`='$chkTfValue3', `pager`='$chkTfValue4', `address1`='$chkTfValue5', `address2`='$chkTfValue6', "
|
||||
. "`address3`='$chkTfValue7', `address4`='$chkTfValue8', `address5`='$chkTfValue9', "
|
||||
. "`address6`='$chkTfValue10', `use_variables`='$intVariables', `use_template`=$intTemplates, "
|
||||
. $preSQLCommon2;
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ($chkTfValue1 !== '') {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New contact template inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Contact template modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContacttemplateToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContacttemplateToCommandHost',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkContacttemplateToCommandService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContacttemplateToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkContacttemplateToContactgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContacttemplateToCommandHost',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkContacttemplateToCommandHost', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkContacttemplateToCommandService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation(
|
||||
'tbl_lnkContacttemplateToCommandService',
|
||||
$chkDataId
|
||||
);
|
||||
}
|
||||
if ($intRet3 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
/*
|
||||
Insert/update templates from session data
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL = 'DELETE FROM `tbl_lnkContacttemplateToContacttemplate` WHERE `idMaster`=' . $chkDataId;
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
||||
(count($_SESSION['templatedefinition']) !== 0)) {
|
||||
$intSortId = 1;
|
||||
foreach ($_SESSION['templatedefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$strSQL = 'INSERT INTO `tbl_lnkContacttemplateToContacttemplate` (`idMaster`, '
|
||||
. "`idSlave`,`idTable`,`idSort`) VALUES ($chkDataId," . $elem['idSlave'] . ', '
|
||||
. $elem['idTable'] . ',' . $intSortId . ')';
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
$intSortId++;
|
||||
}
|
||||
}
|
||||
/*
|
||||
Insert/update variables from session data
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL = 'SELECT * '
|
||||
. 'FROM `tbl_lnkContacttemplateToVariabledefinition` WHERE `idMaster`=' . $chkDataId;
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCount !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
$strSQL = 'DELETE FROM `tbl_variabledefinition` WHERE `id`=' . $elem['idSlave'];
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
$strSQL = 'DELETE FROM `tbl_lnkContacttemplateToVariabledefinition` '
|
||||
. 'WHERE `idMaster`=' . $chkDataId;
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) &&
|
||||
(count($_SESSION['variabledefinition']) !== 0)) {
|
||||
foreach ($_SESSION['variabledefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$strSQL = 'INSERT INTO `tbl_variabledefinition` (`name`,`value`,`last_modified`) '
|
||||
. "VALUES ('" . $elem['definition'] . "','" . $elem['range'] . "',now())";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$strSQL = 'INSERT INTO `tbl_lnkContacttemplateToVariabledefinition` (`idMaster`, '
|
||||
. "`idSlave`) VALUES ($chkDataId,$intInsertId)";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$intDataWarning = 0;
|
||||
$conttp->setVariable('TITLE', translate('Define contact templates (contacttemplates.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process template selection fields (Spezial) */
|
||||
$strWhere = '';
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
$strWhere = 'AND `id` <> ' . $arrModifyData['id'];
|
||||
}
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL1 = "SELECT `id`,`$preKeyField`, `active` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strWhere ORDER BY `$preKeyField`";
|
||||
$booReturn1 = $myDBClass->hasDataArray($strSQL1, $arrDataTpl, $intDataCountTpl);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCountTpl !== 0) {
|
||||
/** @var array $arrDataTpl */
|
||||
foreach ($arrDataTpl as $elem) {
|
||||
if ($elem['active'] === 0) {
|
||||
$strActive = ' [inactive]';
|
||||
$conttp->setVariable('SPECIAL_STYLE', 'inactive_option');
|
||||
} else {
|
||||
$strActive = '';
|
||||
$conttp->setVariable('SPECIAL_STYLE');
|
||||
}
|
||||
$conttp->setVariable('DAT_TEMPLATE', htmlspecialchars($elem[$preKeyField], ENT_QUOTES, 'UTF-8') . $strActive);
|
||||
$conttp->setVariable('DAT_TEMPLATE_ID', $elem['id'] . '::1');
|
||||
}
|
||||
$conttp->parse('template');
|
||||
}
|
||||
$strSQL2 = 'SELECT `id`, `name`, `active` FROM `tbl_contact` '
|
||||
. "WHERE `name` <> '' AND $strDomainWhere2 ORDER BY name";
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL2, $arrDataHpl, $intDataCountHpl);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDataCountHpl !== 0) {
|
||||
/** @var array $arrDataHpl */
|
||||
foreach ($arrDataHpl as $elem) {
|
||||
if ($elem['active'] === 0) {
|
||||
$strActive = ' [inactive]';
|
||||
$conttp->setVariable('SPECIAL_STYLE', 'inactive_option');
|
||||
} else {
|
||||
$strActive = '';
|
||||
$conttp->setVariable('SPECIAL_STYLE');
|
||||
}
|
||||
$conttp->setVariable('DAT_TEMPLATE', htmlspecialchars($elem['name'], ENT_QUOTES, 'UTF-8') . $strActive);
|
||||
$conttp->setVariable('DAT_TEMPLATE_ID', $elem['id'] . '::2');
|
||||
}
|
||||
$conttp->parse('template');
|
||||
}
|
||||
/* Process timeperiod selection fields */
|
||||
$intFieldId = $arrModifyData['host_notification_period'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'host_time', 1, $intFieldId);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['service_notification_period'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'service_time', 1, $intFieldId);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process command selection fields */
|
||||
$intFieldId = $arrModifyData['host_notification_commands'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectMulti(
|
||||
'tbl_command',
|
||||
'command_name',
|
||||
'host_command',
|
||||
'tbl_lnkContacttemplateToCommandHost',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['service_notification_commands'] ?? 0;
|
||||
$intReturn4 = $myVisClass->parseSelectMulti(
|
||||
'tbl_command',
|
||||
'command_name',
|
||||
'service_command',
|
||||
'tbl_lnkContacttemplateToCommandService',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn4 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process contactgroup selection field */
|
||||
$intFieldId = $arrModifyData['contactgroups'] ?? 0;
|
||||
$intReturn5 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contactgroup',
|
||||
'contactgroup_name',
|
||||
'contactgroup',
|
||||
'tbl_lnkContacttemplateToContactgroup',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn5 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process acces group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn6 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn6 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$strChbFields = 'HNE,SNE,RSI,CSC,RNS,TPL,SEC,HOC,COG';
|
||||
$myContentClass->addFormInit($conttp, $strChbFields);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion === 4) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1e,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2f,chbGr2g');
|
||||
}
|
||||
if ($intVersion === 3) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1e,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2f,chbGr2g');
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('HOST_OPTION_FIELDS', 'chbGr1a,chbGr1b,chbGr1c,chbGr1d,chbGr1f');
|
||||
$conttp->setVariable('SERVICE_OPTION_FIELDS', 'chbGr2a,chbGr2b,chbGr2c,chbGr2d,chbGr2e,chbGr2g');
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', ',tfValue2');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo, $strChbFields);
|
||||
/* Process radio fields */
|
||||
$conttp->setVariable('DAT_HNE' . $arrModifyData['host_notifications_enabled'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_SNE' . $arrModifyData['service_notifications_enabled'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_RSI' . $arrModifyData['retain_status_information'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_CSC' . $arrModifyData['can_submit_commands'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_RNS' . $arrModifyData['retain_nonstatus_information'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_TPL' . $arrModifyData['use_template_tploptions'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable(
|
||||
'DAT_SEC' . $arrModifyData['service_notification_commands_tploptions'] . '_CHECKED',
|
||||
'checked'
|
||||
);
|
||||
$conttp->setVariable('DAT_HOC' . $arrModifyData['host_notification_commands_tploptions'] . '_CHECKED', 'checked');
|
||||
$conttp->setVariable('DAT_COG' . $arrModifyData['contactgroups_tploptions'] . '_CHECKED', 'checked');
|
||||
/* Process option fields */
|
||||
foreach (explode(',', $arrModifyData['host_notification_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_HO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
foreach (explode(',', $arrModifyData['service_notification_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_SO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
$strSearchWhere = '';
|
||||
$intLineCount = 0;
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define contact templates (contacttemplates.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Contact name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process filter string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`email` LIKE '%" . $strSearchTxt . "%' OR `pager` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address1` LIKE '%" . $strSearchTxt . "%' OR `address2` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address3` LIKE '%" . $strSearchTxt . "%' OR `address4` LIKE '%" . $strSearchTxt . "%' OR "
|
||||
. "`address5` LIKE '%" . $strSearchTxt . "%' OR `address6` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$strSQL = 'SELECT count(*) AS `number` '
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `register`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess) "
|
||||
. "$strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,160 +1,215 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin domain administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 35;
|
||||
$preContent = "admin/datadomain.tpl.htm";
|
||||
$preTableName = 'tbl_datadomain';
|
||||
$preKeyField = 'domain';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
if ($chkTfValue1 == 'common') $chkSelValue1 = 0;
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `targets`=$chkSelValue1, `version`=$chkSelValue2,
|
||||
`access_group`=$chkSelAccGr, `enable_common`=$chkSelValue3, `active`='$chkActive',
|
||||
`last_modified`=NOW()";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "") && (($chkTfValue1 == 'common') || ($chkSelValue1 != 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New Domain inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Domain modified:')." ".$chkTfValue1);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Data domain administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Domain name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Domain description
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Configuration target domain
|
||||
* @var string $chkSelValue2 from prepend_content.php -> Nagios version
|
||||
* @var string $chkSelValue3 from prepend_content.php -> Use common domain selection
|
||||
* @var string $chkSelAccGr from prepend_content.php -> Access group selector
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 35;
|
||||
$preContent = 'admin/datadomain.htm.tpl';
|
||||
$preListTpl = 'admin/datalist_common.htm.tpl';
|
||||
$preTableName = 'tbl_datadomain';
|
||||
$preKeyField = 'domain';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
if ($chkTfValue1 === 'common') {
|
||||
$chkSelValue1 = 0;
|
||||
}
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `targets`=$chkSelValue1, "
|
||||
. "`version`=$chkSelValue2, `access_group`=$chkSelAccGr, `enable_common`=$chkSelValue3, "
|
||||
. "`active`='$chkActive', `last_modified`=NOW()";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '') && (($chkTfValue1 === 'common') || ($chkSelValue1 !== 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New Domain inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Domain modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Data domain administration'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Single view
|
||||
// ===========
|
||||
if ($chkModus == "add") {
|
||||
// Process configuration target selection fields
|
||||
$intReturn = 0;
|
||||
if (isset($arrModifyData['targets'])) {$intFieldId = $arrModifyData['targets'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_configtarget','target','target',0,$intFieldId);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no configuration targets defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process acces group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
$conttp->setVariable("FILL_ALLFIELDS",translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable("FILL_ILLEGALCHARS",translate('The following field contains not permitted characters:'));
|
||||
$conttp->setVariable("ENABLE",translate('Enable'));
|
||||
$conttp->setVariable("DISABLE",translate('Disable'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,0,'');
|
||||
// Nagios version
|
||||
if ($arrModifyData['version'] == 1) $conttp->setVariable("VER_SELECTED_1","selected");
|
||||
if ($arrModifyData['version'] == 2) $conttp->setVariable("VER_SELECTED_2","selected");
|
||||
if ($arrModifyData['version'] == 3) $conttp->setVariable("VER_SELECTED_3","selected");
|
||||
// Enable common domain
|
||||
if ($arrModifyData['enable_common'] == 0) $conttp->setVariable("ENA_COMMON_SELECTED_0","selected");
|
||||
if ($arrModifyData['enable_common'] == 1) $conttp->setVariable("ENA_COMMON_SELECTED_1","selected");
|
||||
// Domain localhost cant' be renamed
|
||||
if ($arrModifyData['domain'] == "localhost") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
} else if ($arrModifyData['domain'] == "common") {
|
||||
$conttp->setVariable("DOMAIN_DISABLE","readonly");
|
||||
$conttp->setVariable("COMMON_INVISIBLE","class=\"elementHide\"");
|
||||
$conttp->setVariable("LOCKCLASS","inputlock");
|
||||
} else {
|
||||
$conttp->setVariable("CHECK_TARGETS",",selValue1");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Data domain'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `domain` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `domain`, `alias`, `active`, `nodelete`, `access_group` FROM `$preTableName` WHERE `access_group` IN ($strAccess)
|
||||
$strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Single view
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$intDataWarning = 0;
|
||||
$strDBWarning = '';
|
||||
/* Process configuration target selection fields */
|
||||
$intFieldId = $arrModifyData['targets'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_configtarget', 'target', 'target', 0, $intFieldId);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no configuration targets defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process acces group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
$conttp->setVariable('TITLE', translate('Data domain administration'));
|
||||
$conttp->setVariable('FILL_ALLFIELDS', translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable('FILL_ILLEGALCHARS', translate('The following field contains illegal characters:'));
|
||||
$conttp->setVariable('ENABLE', translate('Enable'));
|
||||
$conttp->setVariable('DISABLE', translate('Disable'));
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, 0, '');
|
||||
/* Nagios version */
|
||||
$conttp->setVariable('VER_SELECTED_' . $arrModifyData['version'], 'selected');
|
||||
/* Enable common domain */
|
||||
$conttp->setVariable('ENA_COMMON_SELECTED_' . $arrModifyData['enable_common'], 'selected');
|
||||
/* Domain localhost cannot be renamed */
|
||||
if ($arrModifyData['domain'] === 'localhost') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
} elseif ($arrModifyData['domain'] === 'common') {
|
||||
$conttp->setVariable('DOMAIN_DISABLE', 'readonly');
|
||||
$conttp->setVariable('COMMON_INVISIBLE', 'class="elementHide"');
|
||||
$conttp->setVariable('LOCKCLASS', 'inputlock');
|
||||
} else {
|
||||
$conttp->setVariable('CHECK_TARGETS', ',selValue1');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,'','',1);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
$intLineCount = 0;
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Data domain administration'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Data domain'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `domain` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = 'SELECT `id`, `domain`, `alias`, `active`, `nodelete`, `access_group` '
|
||||
. "FROM `$preTableName` WHERE `access_group` IN ($strAccess) $strOrderString "
|
||||
. "LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages($mastertp, $strErrorMessage, $strInfoMessage, $strConsistMessage, array(), '', 1);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,149 +1,200 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin file deletion
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 26;
|
||||
$preContent = "admin/delbackup.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Get configuration set ID
|
||||
// ========================
|
||||
$arrConfigSet = $myConfigClass->getConfigSets();
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
$myConfigClass->getConfigData($intConfigId,"method",$intMethod);
|
||||
$myConfigClass->getConfigData($intConfigId,"backupdir",$strBackupDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"hostbackup",$strHostBackupDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"servicebackup",$strServiceBackupDir);
|
||||
//
|
||||
// Process form inputs
|
||||
// ===================
|
||||
if (($chkMselValue1[0] != "") && ($chkStatus == 1)) {
|
||||
foreach($chkMselValue1 AS $elem) {
|
||||
$intCheck = $myConfigClass->removeFile(trim($elem),$intConfigId);
|
||||
$strFile = str_replace($strServiceBackupDir,"",$elem);
|
||||
$strFile = str_replace($strHostBackupDir,"",$strFile);
|
||||
$strFile = str_replace($strBackupDir,"",$strFile);
|
||||
if ($intCheck == 0) {
|
||||
$myDataClass->writeLog(translate("File deleted").": ".trim($strFile));
|
||||
$myVisClass->processMessage($strFile." ".translate("successfully deleted")."!",$strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Delete backup files
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var int $chkStatus from prepend_adm.php -> (hidden) Status field
|
||||
* @var string $chkTfSearch from prepend_content.php -> Text search string
|
||||
* @var mixed $chkMselValue1 from prepend_content.php -> Backup file list
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 26;
|
||||
$preContent = 'admin/delbackup.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Get configuration set ID
|
||||
*/
|
||||
$intMethod = 0;
|
||||
$strMethod = '';
|
||||
$myConfigClass->getConfigTargets($arrConfigSet);
|
||||
$intConfigId = (int)$arrConfigSet[0];
|
||||
if ($myConfigClass->getConfigValues($intConfigId, 'method', $strMethod) === 0) {
|
||||
$intMethod = (int)$strMethod;
|
||||
}
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate("Delete backup files"));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("LANG_SEARCH_STRING",translate('Filter string'));
|
||||
$conttp->setVariable("LANG_SEARCH",translate('Search'));
|
||||
$conttp->setVariable("LANG_DELETE",translate('Delete'));
|
||||
$conttp->setVariable("LANG_DELETE_SEARCH",translate("Reset filter"));
|
||||
$conttp->setVariable("DAT_SEARCH",$chkTfSearch);
|
||||
$conttp->setVariable("BACKUPFILE",translate("Backup file"));
|
||||
$conttp->setVariable("LANG_REQUIRED",translate("required"));
|
||||
$conttp->setVariable("MAKE",translate("Delete"));
|
||||
$conttp->setVariable("ABORT",translate("Abort"));
|
||||
$conttp->setVariable("CTRL_INFO",translate("Hold CTRL to select<br>more than one entry"));
|
||||
$conttp->setVariable("IMAGE_PATH",$_SESSION['SETS']['path']['base_url']."images/");
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
// Build a local file list
|
||||
if ($intMethod == 1) {
|
||||
$output = array();
|
||||
$temp=$myConfigClass->DirToArray($strBackupDir, "\.cfg_", "",$output,$strErrorMessage);
|
||||
if (is_array($output) && (count($output) != 0)) {
|
||||
foreach ($output AS $elem) {
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",$elem);
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ($intMethod == 2) {
|
||||
// Set up basic connection
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) == "0") {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->resConnectId,$strBackupDir);
|
||||
if (is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->resConnectId,$strHostBackupDir);
|
||||
if (is_array($arrFiles2)) $arrFiles = array_merge($arrFiles,$arrFiles2);
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->resConnectId,$strServiceBackupDir);
|
||||
if (is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
if (is_array($arrFiles) && (count($arrFiles) != 0)) {
|
||||
foreach ($arrFiles AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",$elem);
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate("No backup files or no permission to read the backup files"),$strErrorMessage);
|
||||
}
|
||||
ftp_close($myConfigClass->resConnectId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else if ($intMethod == 3) {
|
||||
// Set up basic connection
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) == "0") {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = $myConfigClass->sendSSHCommand("ls ".$strBackupDir."*.cfg_old*");
|
||||
if (is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
$arrFiles2 = $myConfigClass->sendSSHCommand("ls ".$strHostBackupDir."*.cfg_old*");
|
||||
if (is_array($arrFiles2)) $arrFiles = array_merge($arrFiles,$arrFiles2);
|
||||
$arrFiles3 = $myConfigClass->sendSSHCommand("ls ".$strServiceBackupDir."*.cfg_old*");
|
||||
if (is_array($arrFiles3)) $arrFiles = array_merge($arrFiles,$arrFiles3);
|
||||
if (is_array($arrFiles) && (count($arrFiles) != 0)) {
|
||||
foreach ($arrFiles AS $elem) {
|
||||
if (!substr_count($elem,"cfg_old")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",str_replace("//","/",$elem));
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate("No backup files or no permission to read the backup files"),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
$myConfigClass->getConfigValues($intConfigId, 'backupdir', $strBackupDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'hostbackup', $strHostBackupDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'servicebackup', $strServiceBackupDir);
|
||||
/*
|
||||
Process form inputs
|
||||
*/
|
||||
if (isset($chkMselValue1[0]) && ($chkMselValue1[0] !== '') && ($chkStatus === 1)) {
|
||||
/** @var array $chkMselValue1 */
|
||||
foreach ($chkMselValue1 as $elem) {
|
||||
$intCheck = $myConfigClass->removeFile(trim($elem), $intConfigId);
|
||||
$strFileTmp1 = str_replace($strServiceBackupDir, '', $elem);
|
||||
$strFileTmp2 = str_replace($strHostBackupDir, '', $strFileTmp1);
|
||||
$strFile = str_replace($strBackupDir, '', $strFileTmp2);
|
||||
if ($intCheck === 0) {
|
||||
$myDataClass->writeLog(translate('File deleted') . ': ' . trim($strFile));
|
||||
$myVisClass->processMessage($strFile . ' ' . translate('successfully deleted') . '!', $strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Footer ausgeben
|
||||
// ===============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Delete backup files'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('LANG_SEARCH_STRING', translate('Filter string'));
|
||||
$conttp->setVariable('LANG_SEARCH', translate('Search'));
|
||||
$conttp->setVariable('LANG_DELETE', translate('Delete'));
|
||||
$conttp->setVariable('LANG_DELETE_SEARCH', translate('Reset filter'));
|
||||
$conttp->setVariable('DAT_SEARCH', $chkTfSearch);
|
||||
$conttp->setVariable('BACKUPFILE', translate('Backup file'));
|
||||
$conttp->setVariable('LANG_REQUIRED', translate('required'));
|
||||
$conttp->setVariable('MAKE', translate('Delete'));
|
||||
$conttp->setVariable('ABORT', translate('Abort'));
|
||||
$conttp->setVariable('CTRL_INFO', translate('Hold CTRL to select<br>more than one entry'));
|
||||
$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url'] . 'images/');
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
/* Build a local file list */
|
||||
if ($intMethod === 1) {
|
||||
$output = array();
|
||||
$myConfigClass->storeDirToArray($strBackupDir, "\.cfg_old", '', $output, $strErrorMessage);
|
||||
if (is_array($output) && (count($output) !== 0)) {
|
||||
foreach ($output as $elem) {
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', $elem);
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($intMethod === 2) {
|
||||
/* Set up basic connection */
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) === 0) {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->conFTPConId, $strBackupDir);
|
||||
if (is_array($arrFiles1)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles1);
|
||||
}
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->conFTPConId, $strHostBackupDir);
|
||||
if (is_array($arrFiles2)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles2);
|
||||
}
|
||||
$arrFiles3 = ftp_nlist($myConfigClass->conFTPConId, $strServiceBackupDir);
|
||||
if (is_array($arrFiles3)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles3);
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) !== 0)) {
|
||||
foreach ($arrFiles as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', $elem);
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('No backup files or no permission to read the backup files'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
ftp_close($myConfigClass->conFTPConId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($intMethod === 3) {
|
||||
/* Set up basic connection */
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) === 0) {
|
||||
$arrFiles = array();
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strBackupDir . '*.cfg_old*', $arrFiles1);
|
||||
if (($intReturn === 0) && is_array($arrFiles1)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles1);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strHostBackupDir . '*.cfg_old*', $arrFiles2);
|
||||
if (($intReturn === 0) && is_array($arrFiles2)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles2);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strServiceBackupDir . '*.cfg_old*', $arrFiles3);
|
||||
if (($intReturn === 0) && is_array($arrFiles3)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles3);
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) !== 0)) {
|
||||
foreach ($arrFiles as $elem) {
|
||||
if (!substr_count($elem, 'cfg_old')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $elem));
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('No backup files or no permission to read the backup files'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Footer ausgeben
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,164 +1,210 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin file deletion
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 27;
|
||||
$preContent = "admin/delbackup.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Get configuration set ID
|
||||
// ========================
|
||||
$arrConfigSet = $myConfigClass->getConfigSets();
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
$myConfigClass->getConfigData($intConfigId,"method",$intMethod);
|
||||
$myConfigClass->getConfigData($intConfigId,"basedir",$strBaseDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"hostconfig",$strHostDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"serviceconfig",$strServiceDir);
|
||||
//
|
||||
// Process form inputs
|
||||
// ===================
|
||||
if (($chkMselValue1[0] != "") && ($chkStatus == 1)) {
|
||||
foreach($chkMselValue1 AS $elem) {
|
||||
$intCheck = $myConfigClass->removeFile(trim($elem),$intConfigId);
|
||||
$strFile = str_replace($strServiceDir,"",$elem);
|
||||
$strFile = str_replace($strHostDir,"",$strFile);
|
||||
$strFile = str_replace($strBaseDir,"",$strFile);
|
||||
if ($intCheck == 0) {
|
||||
$myDataClass->writeLog(translate("File deleted").": ".trim($strFile));
|
||||
$myVisClass->processMessage($strFile." ".translate("successfully deleted")."!",$strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Delete configuration files
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var int $chkStatus from prepend_adm.php -> (hidden) Status field
|
||||
* @var string $chkTfSearch from prepend_content.php -> Text search string
|
||||
* @var mixed $chkMselValue1 from prepend_content.php -> Backup file list
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 27;
|
||||
$preContent = 'admin/delbackup.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Get configuration set ID
|
||||
*/
|
||||
$intMethod = 0;
|
||||
$strMethod = '';
|
||||
$myConfigClass->getConfigTargets($arrConfigSet);
|
||||
$intConfigId = (int)$arrConfigSet[0];
|
||||
if ($myConfigClass->getConfigValues($intConfigId, 'method', $strMethod) === 0) {
|
||||
$intMethod = (int)$strMethod;
|
||||
}
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate("Delete config files"));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("LANG_SEARCH_STRING",translate('Filter string'));
|
||||
$conttp->setVariable("LANG_SEARCH",translate('Search'));
|
||||
$conttp->setVariable("LANG_DELETE",translate('Delete'));
|
||||
$conttp->setVariable("LANG_DELETE_SEARCH",translate("Reset filter"));
|
||||
$conttp->setVariable("DAT_SEARCH",$chkTfSearch);
|
||||
$conttp->setVariable("BACKUPFILE",translate("Configuration file"));
|
||||
$conttp->setVariable("LANG_REQUIRED",translate("required"));
|
||||
$conttp->setVariable("MAKE",translate("Delete"));
|
||||
$conttp->setVariable("ABORT",translate("Abort"));
|
||||
$conttp->setVariable("CTRL_INFO",translate("Hold CTRL to select<br>more than one entry"));
|
||||
$conttp->setVariable("IMAGE_PATH",$_SESSION['SETS']['path']['base_url']."images/");
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
// Build a local file list
|
||||
if ($intMethod == 1) {
|
||||
$output = array();
|
||||
$temp=$myConfigClass->DirToArray($strBaseDir, "\.cfg", "",$output,$strErrorMessage);
|
||||
if (is_array($output) && (count($output) != 0)) {
|
||||
foreach ($output AS $elem2) {
|
||||
if (($chkTfSearch == "") || (substr_count($elem2,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",$elem2);
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ($intMethod == 2) {
|
||||
// Open ftp connection
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) == "0") {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->resConnectId,$strBaseDir);
|
||||
if (is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->resConnectId,$strHostDir);
|
||||
if (is_array($arrFiles2)) $arrFiles = array_merge($arrFiles,$arrFiles2);
|
||||
$arrFiles3 = ftp_nlist($myConfigClass->resConnectId,$strServiceDir);
|
||||
if (is_array($arrFiles3)) $arrFiles = array_merge($arrFiles,$arrFiles3);
|
||||
if (is_array($arrFiles) && (count($arrFiles) != 0)) {
|
||||
foreach ($arrFiles AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",str_replace("//","/",$elem));
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
ftp_close($myConfigClass->resConnectId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else if ($intMethod == 3) {
|
||||
// Open ssh connection
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) == "0") {
|
||||
$arrFiles1 = $myConfigClass->sendSSHCommand('ls '.$strBaseDir);
|
||||
if (is_array($arrFiles1) && (count($arrFiles1) != 0)) {
|
||||
foreach ($arrFiles1 AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (substr_count($elem,"cgi.cfg") != 0) continue;
|
||||
if (substr_count($elem,"nagios.cfg") != 0) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",str_replace("//","/",$strBaseDir."/".$elem));
|
||||
$conttp->setVariable("DAT_BACKUPFILE_FULL",str_replace("//","/",$strBaseDir."/".$elem));
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
$arrFiles2 = $myConfigClass->sendSSHCommand('ls '.$strHostDir);
|
||||
if (is_array($arrFiles2) && (count($arrFiles2) != 0)) {
|
||||
foreach ($arrFiles2 AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",str_replace("//","/",$strHostDir."/".$elem));
|
||||
$conttp->setVariable("DAT_BACKUPFILE_FULL",str_replace("//","/",$strHostDir."/".$elem));
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
$arrFiles3 = $myConfigClass->sendSSHCommand('ls '.$strServiceDir);
|
||||
if (is_array($arrFiles3) && (count($arrFiles3) != 0)) {
|
||||
foreach ($arrFiles3 AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_BACKUPFILE",str_replace("//","/",$strServiceDir."/".$elem));
|
||||
$conttp->setVariable("DAT_BACKUPFILE_FULL",str_replace("//","/",$strServiceDir."/".$elem));
|
||||
$conttp->parse("filelist");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
$myConfigClass->getConfigValues($intConfigId, 'basedir', $strBaseDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'hostconfig', $strHostDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'serviceconfig', $strServiceDir);
|
||||
/*
|
||||
Process form inputs
|
||||
*/
|
||||
if (isset($chkMselValue1[0]) && ($chkMselValue1[0] !== '') && ($chkStatus === 1)) {
|
||||
foreach ($chkMselValue1 as $elem) {
|
||||
$intCheck = $myConfigClass->removeFile(trim($elem), $intConfigId);
|
||||
$strFileTmp1 = str_replace($strServiceDir, '', $elem);
|
||||
$strFileTmp2 = str_replace($strHostDir, '', $strFileTmp1);
|
||||
$strFile = str_replace($strBaseDir, '', $strFileTmp2);
|
||||
if ($intCheck === 0) {
|
||||
$myDataClass->writeLog(translate('File deleted') . ': ' . trim($strFile));
|
||||
$myVisClass->processMessage($strFile . ' ' . translate('successfully deleted') . '!', $strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Footer ausgeben
|
||||
// ===============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Delete config files'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('LANG_SEARCH_STRING', translate('Filter string'));
|
||||
$conttp->setVariable('LANG_SEARCH', translate('Search'));
|
||||
$conttp->setVariable('LANG_DELETE', translate('Delete'));
|
||||
$conttp->setVariable('LANG_DELETE_SEARCH', translate('Reset filter'));
|
||||
$conttp->setVariable('DAT_SEARCH', $chkTfSearch);
|
||||
$conttp->setVariable('BACKUPFILE', translate('Configuration file'));
|
||||
$conttp->setVariable('LANG_REQUIRED', translate('required'));
|
||||
$conttp->setVariable('MAKE', translate('Delete'));
|
||||
$conttp->setVariable('ABORT', translate('Abort'));
|
||||
$conttp->setVariable('CTRL_INFO', translate('Hold CTRL to select<br>more than one entry'));
|
||||
$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url'] . 'images/');
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
/* Build a local file list */
|
||||
if ($intMethod === 1) {
|
||||
$output = array();
|
||||
$myConfigClass->storeDirToArray($strBaseDir, "\.cfg", '\.cfg_old', $output, $strErrorMessage);
|
||||
if (is_array($output) && (count($output) !== 0)) {
|
||||
foreach ($output as $elem2) {
|
||||
if (($chkTfSearch === '') || (substr_count($elem2, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', $elem2);
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($intMethod === 2) {
|
||||
/* Open ftp connection */
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) === 0) {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->conFTPConId, $strBaseDir);
|
||||
if (is_array($arrFiles1)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles1);
|
||||
}
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->conFTPConId, $strHostDir);
|
||||
if (is_array($arrFiles2)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles2);
|
||||
}
|
||||
$arrFiles3 = ftp_nlist($myConfigClass->conFTPConId, $strServiceDir);
|
||||
if (is_array($arrFiles3)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles3);
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) !== 0)) {
|
||||
foreach ($arrFiles as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $elem));
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
ftp_close($myConfigClass->conFTPConId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($intMethod === 3) {
|
||||
/* Open ssh connection */
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) === 0) {
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strBaseDir, $arrFiles1);
|
||||
if (($intReturn === 0) && is_array($arrFiles1) && (count($arrFiles1) !== 0)) {
|
||||
foreach ($arrFiles1 as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'cgi.cfg') !== 0) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nagios.cfg') !== 0) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $strBaseDir . '/' . $elem));
|
||||
$conttp->setVariable('DAT_BACKUPFILE_FULL', str_replace('//', '/', $strBaseDir . '/' . $elem));
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strHostDir, $arrFiles2);
|
||||
if (($intReturn === 0) && is_array($arrFiles2) && (count($arrFiles2) !== 0)) {
|
||||
foreach ($arrFiles2 as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $strHostDir . '/' . $elem));
|
||||
$conttp->setVariable('DAT_BACKUPFILE_FULL', str_replace('//', '/', $strHostDir . '/' . $elem));
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strServiceDir, $arrFiles3);
|
||||
if (($intReturn === 0) && is_array($arrFiles3) && (count($arrFiles3) !== 0)) {
|
||||
foreach ($arrFiles3 as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_BACKUPFILE', str_replace('//', '/', $strServiceDir . '/' . $elem));
|
||||
$conttp->setVariable('DAT_BACKUPFILE_FULL', str_replace('//', '/', $strServiceDir . '/' . $elem));
|
||||
$conttp->parse('filelist');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Footer ausgeben
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,68 +1,66 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Download config file
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version control
|
||||
// ===============
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Download config file
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagDataClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Version control
|
||||
*/
|
||||
session_cache_limiter('private_no_expire');
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
$preNoMain = 1;
|
||||
$preNoLogin = 1;
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkTable = isset($_GET['table']) ? htmlspecialchars($_GET['table'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkConfig = isset($_GET['config']) ? htmlspecialchars($_GET['config'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkLine = isset($_GET['line']) ? htmlspecialchars($_GET['line'], ENT_QUOTES, 'utf-8') : 0;
|
||||
//
|
||||
// Header output
|
||||
// ===============
|
||||
switch($chkTable) {
|
||||
case "tbl_timeperiod": $strFile = "timeperiods.cfg"; break;
|
||||
case "tbl_command": $strFile = "commands.cfg"; break;
|
||||
case "tbl_contact": $strFile = "contacts.cfg"; break;
|
||||
case "tbl_contacttemplate": $strFile = "contacttemplates.cfg"; break;
|
||||
case "tbl_contactgroup": $strFile = "contactgroups.cfg"; break;
|
||||
case "tbl_hosttemplate": $strFile = "hosttemplates.cfg"; break;
|
||||
case "tbl_servicetemplate": $strFile = "servicetemplates.cfg"; break;
|
||||
case "tbl_hostgroup": $strFile = "hostgroups.cfg"; break;
|
||||
case "tbl_servicegroup": $strFile = "servicegroups.cfg"; break;
|
||||
case "tbl_servicedependency": $strFile = "servicedependencies.cfg"; break;
|
||||
case "tbl_hostdependency": $strFile = "hostdependencies.cfg"; break;
|
||||
case "tbl_serviceescalation": $strFile = "serviceescalations.cfg"; break;
|
||||
case "tbl_hostescalation": $strFile = "hostescalations.cfg"; break;
|
||||
case "tbl_hostextinfo": $strFile = "hostextinfo.cfg"; break;
|
||||
case "tbl_serviceextinfo": $strFile = "serviceextinfo.cfg"; break;
|
||||
default: $strFile = $chkConfig.".cfg";
|
||||
}
|
||||
if ($strFile == ".cfg") exit;
|
||||
header("Content-Disposition: attachment; filename=".$strFile);
|
||||
header("Content-Type: text/plain");
|
||||
//
|
||||
// Get data
|
||||
// ========
|
||||
if ($chkLine == 0) {
|
||||
$myConfigClass->createConfig($chkTable,1);
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
$preNoMain = 1;
|
||||
$preNoLogin = 1;
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$chkTable = filter_input(INPUT_GET, 'table');
|
||||
$chkConfig = filter_input(INPUT_GET, 'config');
|
||||
$chkLine = filter_input(INPUT_GET, 'line', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
/*
|
||||
Header output
|
||||
*/
|
||||
$arrConfig = $myConfigClass->getConfData();
|
||||
if (isset($arrConfig[$chkTable])) {
|
||||
$strFile = $arrConfig[$chkTable]['filename'];
|
||||
} else {
|
||||
$myConfigClass->createConfigSingle($chkTable,$chkLine,1);
|
||||
$strFile = $chkConfig . '.cfg';
|
||||
}
|
||||
$myDataClass->writeLog(translate('Download')." ".$strFile);
|
||||
?>
|
||||
if ($strFile === '.cfg') {
|
||||
exit;
|
||||
}
|
||||
header('Content-Disposition: attachment; filename=' . $strFile);
|
||||
header('Content-Type: text/plain');
|
||||
/*
|
||||
Get data
|
||||
*/
|
||||
if ($chkLine === 0) {
|
||||
$myConfigClass->createConfig($chkTable, 1);
|
||||
} else {
|
||||
$myConfigClass->createConfigSingle($chkTable, $chkLine, 1);
|
||||
}
|
||||
$myDataClass->writeLog(translate('Download') . ' ' . $strFile);
|
||||
389
admin/group.php
389
admin/group.php
@@ -1,165 +1,232 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Group administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 33;
|
||||
$preContent = "admin/group.tpl.htm";
|
||||
$preSearchSession = 'group';
|
||||
$preTableName = 'tbl_group';
|
||||
$preKeyField = 'groupname';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoAccessGrp = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if (($chkModus == "insert") || ($chkModus == "modify")) {
|
||||
$strSQLx = "`$preTableName` SET `groupname`='$chkTfValue1', `description`='$chkTfValue2', `active`='$chkActive', `last_modified`=NOW()";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('A new group added:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('User modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update user/group data from session data
|
||||
// ===============================================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "DELETE FROM `tbl_lnkGroupToUser` WHERE `idMaster`=$chkDataId";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser']) && (count($_SESSION['groupuser']) != 0)) {
|
||||
foreach($_SESSION['groupuser'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$intRead = 0; $intWrite = 0; $intLink = 0;
|
||||
if (substr_count($elem['rights'],"READ") != 0) $intRead = 1;
|
||||
if (substr_count($elem['rights'],"WRITE") != 0) $intWrite = 1;
|
||||
if (substr_count($elem['rights'],"LINK") != 0) $intLink = 1;
|
||||
if ($intWrite == 1) {$intRead = 1;$intLink = 1;}
|
||||
if ($intRead == 1) {$intLink = 1;}
|
||||
// if ($intLink == 1) $intRead = 1;
|
||||
$strSQL = "INSERT INTO `tbl_lnkGroupToUser` (`idMaster`,`idSlave`,`read`,`write`,`link`)
|
||||
VALUES ($chkDataId,".$elem['user'].",'$intRead','$intWrite','$intLink')";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Group administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var int $chkListId from prepend_adm.php -> Actual dataset id (list view)
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Group name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Group description
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 33;
|
||||
$preContent = 'admin/group.htm.tpl';
|
||||
$preListTpl = 'admin/datalist_common.htm.tpl';
|
||||
$preSearchSession = 'group';
|
||||
$preTableName = 'tbl_group';
|
||||
$preKeyField = 'groupname';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoAccessGrp = 1;
|
||||
$arrDataLines = array();
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if (($chkModus === 'insert') || ($chkModus === 'modify')) {
|
||||
$strSQLx = "`$preTableName` SET `groupname`='$chkTfValue1', `description`='$chkTfValue2', `active`='$chkActive', "
|
||||
. '`last_modified`=NOW()';
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('A new group added:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('User modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update user/group data from session data
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL = "DELETE FROM `tbl_lnkGroupToUser` WHERE `idMaster`=$chkDataId";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser']) &&
|
||||
(count($_SESSION['groupuser']) !== 0)) {
|
||||
foreach ($_SESSION['groupuser'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$intRead = 0;
|
||||
$intWrite = 0;
|
||||
$intLink = 0;
|
||||
if (substr_count($elem['rights'], 'READ') !== 0) {
|
||||
$intRead = 1;
|
||||
}
|
||||
if (substr_count($elem['rights'], 'WRITE') !== 0) {
|
||||
$intWrite = 1;
|
||||
}
|
||||
if (substr_count($elem['rights'], 'LINK') !== 0) {
|
||||
$intLink = 1;
|
||||
}
|
||||
if ($intWrite === 1) {
|
||||
$intRead = 1;
|
||||
$intLink = 1;
|
||||
}
|
||||
if ($intRead === 1) {
|
||||
$intLink = 1;
|
||||
}
|
||||
/* if ($intLink === 1) $intRead = 1; */
|
||||
$strSQL = 'INSERT INTO `tbl_lnkGroupToUser` (`idMaster`,`idSlave`,`read`,`write`,'
|
||||
. "`link`) VALUES ($chkDataId," . $elem['user'] . ",'$intRead','$intWrite',"
|
||||
. "'$intLink')";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Group administration'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Process data fields
|
||||
$strSQL = "SELECT * FROM tbl_user WHERE id <> 1 ORDER BY username";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($booReturn && ($intDataCount != 0)) {
|
||||
foreach($arrDataLines AS $elem) {
|
||||
$conttp->setVariable("DAT_USER_ID",$elem['id']);
|
||||
$conttp->setVariable("DAT_USER",$elem['username']);
|
||||
$conttp->parse("users");
|
||||
}
|
||||
}
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable("LANG_READ",translate("Read"));
|
||||
$conttp->setVariable("LANG_WRITE",translate("Write"));
|
||||
$conttp->setVariable("LANG_LINK",translate("Link"));
|
||||
$conttp->setVariable("DAT_ID",$chkListId);
|
||||
$conttp->setVariable("FILL_ALLFIELDS",translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable("FILL_ILLEGALCHARS",translate('The following field contains not permitted characters:'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,0,'');
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Groupname'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `groupname` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `description` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName`";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `groupname`, `description`, `active` FROM `$preTableName` $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'description');
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
/* Process data fields */
|
||||
$strSQL = 'SELECT * FROM `tbl_user` WHERE `id`<>1 ORDER BY `username`';
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
if ($booReturn && ($intDataCount !== 0)) {
|
||||
foreach ($arrDataLines as $elem) {
|
||||
$conttp->setVariable('DAT_USER_ID', $elem['id']);
|
||||
$conttp->setVariable('DAT_USER', $elem['username']);
|
||||
/** @noinspection DisconnectedForeachInstructionInspection */
|
||||
$conttp->parse('users');
|
||||
}
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable('TITLE', translate('Group administration'));
|
||||
$conttp->setVariable('LANG_READ', translate('Read'));
|
||||
$conttp->setVariable('LANG_WRITE', translate('Write'));
|
||||
$conttp->setVariable('LANG_LINK', translate('Link'));
|
||||
$conttp->setVariable('DAT_ID', $chkListId);
|
||||
$conttp->setVariable('FILL_ALLFIELDS', translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable('FILL_ILLEGALCHARS', translate('The following field contains illegal characters:'));
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, 0, '');
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,'','',1);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Group administration'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Groupname'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `groupname` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `description` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName`";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = 'SELECT `id`, `groupname`, `description`, `active` '
|
||||
. "FROM `$preTableName` $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'description');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages($mastertp, $strErrorMessage, $strInfoMessage, $strConsistMessage, array(), '', 1);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,159 +1,190 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin time definition list
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preAccess = 1;
|
||||
//$prePageId = 33;
|
||||
$preNoMain = 1;
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process get parameters
|
||||
// ======================
|
||||
$chkDataId = isset($_GET['dataId']) ? htmlspecialchars($_GET['dataId'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkMode = isset($_GET['mode']) ? htmlspecialchars($_GET['mode'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkUser = isset($_GET['user']) ? htmlspecialchars($_GET['user'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkRights = isset($_GET['rights']) ? htmlspecialchars($_GET['rights'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkId = isset($_GET['id']) ? htmlspecialchars($_GET['id'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkVersion = isset($_GET['version']) ? htmlspecialchars($_GET['version'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkLinkTab = isset($_GET['linktab']) ? htmlspecialchars($_GET['linktab'], ENT_QUOTES, 'utf-8') : "";
|
||||
if (substr_count($chkRights,"-")) {
|
||||
$arrRights = explode("-",$chkRights);
|
||||
$strRights = "";
|
||||
if ($arrRights[0] == 1) $strRights .= "READ,";
|
||||
if ($arrRights[1] == 1) $strRights .= "WRITE,";
|
||||
if ($arrRights[2] == 1) $strRights .= "LINK,";
|
||||
if ($strRights != "") $strRights = substr($strRights,0,-1);
|
||||
$chkRights = $strRights;
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Group user administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process get parameters
|
||||
*/
|
||||
$chkDataId = filter_input(INPUT_GET, 'dataId', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkVersion = filter_input(INPUT_GET, 'version', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkMode = (string)filter_input(INPUT_GET, 'mode');
|
||||
$chkUser = (string)filter_input(INPUT_GET, 'user');
|
||||
$chkRights = (string)filter_input(INPUT_GET, 'rights');
|
||||
$chkId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
|
||||
$chkLinkTab = (string)filter_input(INPUT_GET, 'linktab');
|
||||
if (substr_count($chkRights, '-')) {
|
||||
$arrRights = explode('-', $chkRights);
|
||||
$strRights = '';
|
||||
if ((int)$arrRights[0] === 1) {
|
||||
$strRights .= 'READ,';
|
||||
}
|
||||
if ((int)$arrRights[1] === 1) {
|
||||
$strRights .= 'WRITE,';
|
||||
}
|
||||
if ((int)$arrRights[2] === 1) {
|
||||
$strRights .= 'LINK,';
|
||||
}
|
||||
if ($strRights !== '') {
|
||||
$strRights = substr($strRights, 0, -1);
|
||||
}
|
||||
$chkRights = $strRights;
|
||||
}
|
||||
if (get_magic_quotes_gpc() == 0) {
|
||||
$chkUser = addslashes($chkUser);
|
||||
$chkRights = addslashes($chkRights);
|
||||
/*
|
||||
Get datasets
|
||||
*/
|
||||
if ($chkLinkTab !== '') {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = 'SELECT * FROM `tbl_user` LEFT JOIN `' . $chkLinkTab . '` ON `id`=`idSlave` '
|
||||
. "WHERE `idMaster`=$chkDataId ORDER BY `username`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
/*
|
||||
Write data to session
|
||||
*/
|
||||
if (($chkMode === null) || ($chkMode === '')) {
|
||||
$_SESSION['groupuser'] = array();
|
||||
if ($intDataCount !== 0) {
|
||||
foreach ($arrDataLines as $elem) {
|
||||
$arrTemp['id'] = (int)$elem['id'];
|
||||
$arrTemp['user'] = (int)$elem['id'];
|
||||
$strRights = '';
|
||||
if ((int)$elem['read'] === 1) {
|
||||
$strRights .= 'READ,';
|
||||
}
|
||||
if ((int)$elem['write'] === 1) {
|
||||
$strRights .= 'WRITE,';
|
||||
}
|
||||
if ((int)$elem['link'] === 1) {
|
||||
$strRights .= 'LINK,';
|
||||
}
|
||||
if ($strRights !== '') {
|
||||
$strRights = substr($strRights, 0, -1);
|
||||
}
|
||||
$arrTemp['rights'] = $strRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Get datasets
|
||||
// ============
|
||||
if ($chkLinkTab != "") {
|
||||
$strSQL = "SELECT * FROM `tbl_user` LEFT JOIN `".$chkLinkTab."` ON `id`=`idSlave` WHERE `idMaster`=$chkDataId ORDER BY `username`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
//
|
||||
// Write data to session
|
||||
// =====================
|
||||
if ($chkMode == "") {
|
||||
$_SESSION['groupuser'] = "";
|
||||
if ($intDataCount != 0) {
|
||||
foreach ($arrDataLines AS $elem) {
|
||||
$arrTemp['id'] = $elem['id'];
|
||||
$arrTemp['user'] = $elem['id'];
|
||||
$strRights = "";
|
||||
if ($elem['read'] == 1) $strRights .= "READ,";
|
||||
if ($elem['write'] == 1) $strRights .= "WRITE,";
|
||||
if ($elem['link'] == 1) $strRights .= "LINK,";
|
||||
if ($strRights != "") $strRights = substr($strRights,0,-1);
|
||||
$arrTemp['rights'] = $strRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Add mode
|
||||
*/
|
||||
if ($chkMode === 'add') {
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['groupuser'] as $key => $elem) {
|
||||
if (((int)$elem['user'] === (int)$chkUser) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['groupuser'][$key]['user'] = $chkUser;
|
||||
$_SESSION['groupuser'][$key]['rights'] = $chkRights;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck === 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['user'] = $chkUser;
|
||||
$arrTemp['rights'] = $chkRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['user'] = $chkUser;
|
||||
$arrTemp['rights'] = $chkRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'] = array();
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Add mode
|
||||
// ========
|
||||
if ($chkMode == "add") {
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['groupuser'] AS $key => $elem) {
|
||||
if (($elem['user'] == $chkUser) && ($elem['status'] == 0)) {
|
||||
$_SESSION['groupuser'][$key]['user'] = $chkUser;
|
||||
$_SESSION['groupuser'][$key]['rights'] = $chkRights;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck == 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['user'] = $chkUser;
|
||||
$arrTemp['rights'] = $chkRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['user'] = $chkUser;
|
||||
$arrTemp['rights'] = $chkRights;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['groupuser'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Deletion mode
|
||||
// =============
|
||||
if ($chkMode == "del") {
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser'])) {
|
||||
foreach ($_SESSION['groupuser'] AS $key => $elem) {
|
||||
if (($elem['user'] == $chkUser) && ($elem['status'] == 0)) {
|
||||
$_SESSION['groupuser'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Deletion mode
|
||||
*/
|
||||
if ($chkMode === 'del' && isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser'])) {
|
||||
foreach ($_SESSION['groupuser'] as $key => $elem) {
|
||||
if (((int)$elem['user'] === (int)$chkUser) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['groupuser'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/groupusers.php?dataId=<?php echo $chkDataId; ?>&mode=del&user="+key;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser']) && (count($_SESSION['groupuser']) != 0)) {
|
||||
foreach($_SESSION['groupuser'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$strUser = $myDBClass->getFieldData("SELECT username FROM tbl_user WHERE id=".$elem['user']);
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo $strUser; ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo htmlspecialchars(stripslashes($elem['rights']),ENT_COMPAT,'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18" alt="<?php echo translate('Delete'); ?>" title="<?php echo translate('Delete'); ?>" onClick="doDel('<?php echo $elem['user']; ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>admin/groupusers.php?dataId=<?php
|
||||
echo $chkDataId; ?>&mode=del&user=" + key;
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['groupuser']) && is_array($_SESSION['groupuser']) && (count($_SESSION['groupuser']) !== 0)) {
|
||||
foreach ($_SESSION['groupuser'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$strUser = $myDBClass->getFieldData('SELECT `username` FROM `tbl_user` WHERE `id`=' . $elem['user']); ?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo $strUser; ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php
|
||||
echo htmlspecialchars(stripslashes($elem['rights']), ENT_COMPAT, 'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18"
|
||||
alt="<?php
|
||||
echo translate('Delete'); ?>"
|
||||
title="<?php echo translate('Delete'); ?>"
|
||||
onClick="doDel('<?php
|
||||
echo $elem['user']; ?>')"
|
||||
style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow"> </td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow"> </td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,153 +1,192 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Help text editor
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 39;
|
||||
$preContent = "admin/helpedit.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$setSaveLangId = "private";
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkHidVersion = isset($_POST['hidVersion']) ? $_POST['hidVersion'] : "all";
|
||||
$chkKey1 = isset($_POST['selInfoKey1']) ? $_POST['selInfoKey1'] : "";
|
||||
$chkKey2 = isset($_POST['selInfoKey2']) ? $_POST['selInfoKey2'] : "";
|
||||
$chkVersion = isset($_POST['selInfoVersion']) ? $_POST['selInfoVersion'] : "";
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if (($chkTaValue1 != "") && ($chkTfValue3 == "1")) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info`
|
||||
WHERE `key1` = '$chkTfValue1' AND `key2` = '$chkTfValue2' AND `version` = '$chkHidVersion'
|
||||
AND `language` = '$setSaveLangId'";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($intDataCount == 0) {
|
||||
$strSQL = "INSERT INTO `tbl_info` (`key1`,`key2`,`version`,`language`,`infotext`)
|
||||
VALUES ('$chkTfValue1','$chkTfValue2','$chkHidVersion','$setSaveLangId','$chkTaValue1')";
|
||||
} else {
|
||||
$strSQL = "UPDATE `tbl_info` SET `infotext` = '$chkTaValue1'
|
||||
WHERE `key1` = '$chkTfValue1' AND `key2` = '$chkTfValue2' AND `version` = '$chkHidVersion'
|
||||
AND `language` = '$setSaveLangId'";
|
||||
}
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Help text editor
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var array $SETS Settings array
|
||||
* @var string $chkTfValue1 from prepend_content.php -> (hidden) Stored key value 1
|
||||
* @var string $chkTfValue2 from prepend_content.php -> (hidden) Stored key value 2
|
||||
* @var string $chkTfValue3 from prepend_content.php -> (hidden) Stored Nagios version
|
||||
* @var int $chkChbValue1 from prepend_content.php -> Load standard text
|
||||
* @var string $chkTaFileTextRaw from prepend_content.php -> Help text area
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 39;
|
||||
$preContent = 'admin/helpedit.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$setSaveLangId = 'private';
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$chkHidVersion = filter_input(INPUT_POST, 'hidVersion', 513, array('options' => array('default' => 'all')));
|
||||
$chkKey1 = filter_input(INPUT_POST, 'selInfoKey1', FILTER_DEFAULT, array('options' => array('default' => '')));
|
||||
$chkKey2 = filter_input(INPUT_POST, 'selInfoKey2', FILTER_DEFAULT, array('options' => array('default' => '')));
|
||||
$chkVersion = filter_input(INPUT_POST, 'selInfoVersion', FILTER_DEFAULT, array('options' => array('default' => '')));
|
||||
/*
|
||||
Security function for text fields
|
||||
*/
|
||||
$chkHidVersion = $myVisClass->tfSecure($chkHidVersion);
|
||||
$chkKey1 = $myVisClass->tfSecure($chkKey1);
|
||||
$chkKey2 = $myVisClass->tfSecure($chkKey2);
|
||||
$chkVersion = $myVisClass->tfSecure($chkVersion);
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if (($chkTaFileTextRaw !== '') && ($chkTfValue3 === '1')) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info` WHERE `key1`='$chkTfValue1' AND `key2`='$chkTfValue2' "
|
||||
. "AND `version`='$chkHidVersion' AND `language`='$setSaveLangId'";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($intDataCount === 0) {
|
||||
$strSQL = 'INSERT INTO `tbl_info` (`key1`,`key2`,`version`,`language`,`infotext`) '
|
||||
. "VALUES ('$chkTfValue1','$chkTfValue2','$chkHidVersion','$setSaveLangId','$chkTaFileTextRaw')";
|
||||
} else {
|
||||
$strSQL = "UPDATE `tbl_info` SET `infotext` = '$chkTaFileTextRaw' WHERE `key1` = '$chkTfValue1' "
|
||||
. "AND `key2` = '$chkTfValue2' AND `version` = '$chkHidVersion' AND `language` = '$setSaveLangId'";
|
||||
}
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
}
|
||||
}
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Help text editor'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("MAINSITE",$_SESSION['SETS']['path']['base_url']."admin.php");
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Help text editor'));
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('MAINSITE', $_SESSION['SETS']['path']['base_url'] . 'admin.php');
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable("INFOKEY_1",translate('Main key'));
|
||||
$conttp->setVariable("INFOKEY_2",translate('Sub key'));
|
||||
$conttp->setVariable("INFO_LANG",translate('Language'));
|
||||
$conttp->setVariable("INFO_VERSION",translate('Nagios version'));
|
||||
$conttp->setVariable("LOAD_DEFAULT",translate('Load default text'));
|
||||
if ($chkChbValue1 == "1") $conttp->setVariable("DEFAULT_CHECKED","checked");
|
||||
//
|
||||
// Get Key
|
||||
// =======
|
||||
$strSQL = "SELECT DISTINCT `key1` FROM `tbl_info` ORDER BY `key1`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($intDataCount != 0) {
|
||||
foreach ($arrData AS $elem) {
|
||||
$conttp->setVariable("INFOKEY_1_VAL",$elem['key1']);
|
||||
if ($chkKey1 == $elem['key1']) {
|
||||
$conttp->setVariable("INFOKEY_1_SEL","selected");
|
||||
$conttp->setVariable("INFOKEY_1_SEL_VAL",$elem['key1']);
|
||||
}
|
||||
$conttp->parse("infokey1");
|
||||
}
|
||||
$conttp->setVariable('INFOKEY_1', translate('Main key'));
|
||||
$conttp->setVariable('INFOKEY_2', translate('Sub key'));
|
||||
$conttp->setVariable('INFO_LANG', translate('Language'));
|
||||
$conttp->setVariable('INFO_VERSION', translate('Nagios version'));
|
||||
$conttp->setVariable('LOAD_DEFAULT', translate('Load default text'));
|
||||
if ($chkChbValue1 === 1) {
|
||||
$conttp->setVariable('DEFAULT_CHECKED', 'checked');
|
||||
}
|
||||
if ($chkKey1 != "") {
|
||||
$strSQL = "SELECT DISTINCT `key2` FROM `tbl_info` WHERE `key1` = '$chkKey1' ORDER BY `key1`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($intDataCount != 0) {
|
||||
foreach ($arrData AS $elem) {
|
||||
$conttp->setVariable("INFOKEY_2_VAL",$elem['key2']);
|
||||
if ($chkKey2 == $elem['key2']) {
|
||||
$conttp->setVariable("INFOKEY_2_SEL","selected");
|
||||
$conttp->setVariable("INFOKEY_2_SEL_VAL",$elem['key2']);
|
||||
}
|
||||
$conttp->parse("infokey2");
|
||||
}
|
||||
}
|
||||
/*
|
||||
Get Key
|
||||
*/
|
||||
$arrData = array();
|
||||
$strSQL = 'SELECT DISTINCT `key1` FROM `tbl_info` ORDER BY `key1`';
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($intDataCount !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
$conttp->setVariable('INFOKEY_1_VAL', $elem['key1']);
|
||||
if ($chkKey1 === $elem['key1']) {
|
||||
$conttp->setVariable('INFOKEY_1_SEL', 'selected');
|
||||
$conttp->setVariable('INFOKEY_1_SEL_VAL', $elem['key1']);
|
||||
}
|
||||
/** @noinspection DisconnectedForeachInstructionInspection */
|
||||
$conttp->parse('infokey1');
|
||||
}
|
||||
}
|
||||
if (($chkKey1 != "") && ($chkKey2 != "")) {
|
||||
$strSQL = "SELECT DISTINCT `version` FROM `tbl_info` WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' ORDER BY `version`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($intDataCount != 0) {
|
||||
if (($intDataCount == 1) && ($chkVersion == "")) $chkVersion = $arrData[0]['version'];
|
||||
foreach ($arrData AS $elem) {
|
||||
$conttp->setVariable("INFOVERSION_2_VAL",$elem['version']);
|
||||
if ($chkVersion == $elem['version']) {
|
||||
$conttp->setVariable("INFOVERSION_2_SEL","selected");
|
||||
$conttp->setVariable("INFOVERSION_2_SEL_VAL",$elem['version']);
|
||||
}
|
||||
$conttp->parse("infoversion");
|
||||
}
|
||||
}
|
||||
if ($chkKey1 !== '') {
|
||||
$strSQL = "SELECT DISTINCT `key2` FROM `tbl_info` WHERE `key1` = '$chkKey1' ORDER BY `key1`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($intDataCount !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
$conttp->setVariable('INFOKEY_2_VAL', $elem['key2']);
|
||||
if ($chkKey2 === $elem['key2']) {
|
||||
$conttp->setVariable('INFOKEY_2_SEL', 'selected');
|
||||
$conttp->setVariable('INFOKEY_2_SEL_VAL', $elem['key2']);
|
||||
}
|
||||
/** @noinspection DisconnectedForeachInstructionInspection */
|
||||
$conttp->parse('infokey2');
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Insert content
|
||||
// ==============
|
||||
if (($chkKey1 != "") && ($chkKey2 != "") && ($chkVersion != "")) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info`
|
||||
WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' AND `language` = '$setSaveLangId'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
if (($chkChbValue1 == 1) || ($strContentDB == "")) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info`
|
||||
WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' AND `language` = 'default'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
}
|
||||
$conttp->setVariable("DAT_HELPTEXT",$strContentDB);
|
||||
if (($chkKey1 !== '') && ($chkKey2 !== '')) {
|
||||
$strSQL = 'SELECT DISTINCT `version` FROM `tbl_info` '
|
||||
. "WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' ORDER BY `version`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($intDataCount !== 0) {
|
||||
if (($intDataCount === 1) && ($chkVersion === '')) {
|
||||
$chkVersion = $arrData[0]['version'];
|
||||
}
|
||||
foreach ($arrData as $elem) {
|
||||
$conttp->setVariable('INFOVERSION_2_VAL', $elem['version']);
|
||||
if ($chkVersion === $elem['version']) {
|
||||
$conttp->setVariable('INFOVERSION_2_SEL', 'selected');
|
||||
$conttp->setVariable('INFOVERSION_2_SEL_VAL', $elem['version']);
|
||||
}
|
||||
/** @noinspection DisconnectedForeachInstructionInspection */
|
||||
$conttp->parse('infoversion');
|
||||
}
|
||||
}
|
||||
}
|
||||
// Messages
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
if ($strInfoMessage != "") $conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("helpedit");
|
||||
$conttp->show("helpedit");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/*
|
||||
Insert content
|
||||
*/
|
||||
if (($chkKey1 !== '') && ($chkKey2 !== '') && ($chkVersion !== '')) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info` WHERE `key1`='$chkKey1' AND `key2`='$chkKey2' "
|
||||
. "AND `version`='$chkVersion' AND `language`='$setSaveLangId'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
if (($chkChbValue1 === 1) || ($strContentDB === '')) {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info` WHERE `key1`='$chkKey1' AND `key2`='$chkKey2' "
|
||||
. "AND `version`='$chkVersion' AND `language`='default'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
}
|
||||
$conttp->setVariable('DAT_HELPTEXT', $strContentDB);
|
||||
}
|
||||
/* Messages */
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
if ($strInfoMessage !== '') {
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
}
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('helpedit');
|
||||
$conttp->show('helpedit');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,229 +1,446 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Host dependencies definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 19;
|
||||
$preContent = "admin/hostdependencies.tpl.htm";
|
||||
$preSearchSession = 'hostdependencies';
|
||||
$preTableName = 'tbl_hostdependency';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Data processing
|
||||
// ===============
|
||||
$strEO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d.$chkChbGr1e,0,-1);
|
||||
$strNO = substr($chkChbGr2a.$chkChbGr2b.$chkChbGr2c.$chkChbGr2d.$chkChbGr2e,0,-1);
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `dependent_host_name`=$intMselValue1, `host_name`=$intMselValue2, `dependent_hostgroup_name`=$intMselValue3,
|
||||
`hostgroup_name`=$intMselValue4, `inherits_parent`='$chkChbValue1', `execution_failure_criteria`='$strEO', `notification_failure_criteria`='$strNO',
|
||||
`dependency_period`=$chkSelValue1, $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ((($intMselValue1 != 0) && ($intMselValue2 != 0)) || (($intMselValue3 != 0) && ($intMselValue4 != 0)) ||
|
||||
(($intMselValue1 != 0) && ($intMselValue4 != 0)) || (($intMselValue3 != 0) && ($intMselValue2 != 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New host dependency inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Host dependency modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkHostdependencyToHost_DH",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkHostdependencyToHost_H",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) $intRet3 = $myDataClass->dataInsertRelation("tbl_lnkHostdependencyToHostgroup_DH",$chkDataId,$chkMselValue3);
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) $intRet4 = $myDataClass->dataInsertRelation("tbl_lnkHostdependencyToHostgroup_H",$chkDataId,$chkMselValue4);
|
||||
if (isset($intRet4) && ($intRet4 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkHostdependencyToHost_DH",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkHostdependencyToHost_DH",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkHostdependencyToHost_H",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkHostdependencyToHost_H",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation("tbl_lnkHostdependencyToHostgroup_DH",$chkDataId,$chkMselValue3);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation("tbl_lnkHostdependencyToHostgroup_DH",$chkDataId);
|
||||
}
|
||||
if ($intRet3 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation("tbl_lnkHostdependencyToHostgroup_H",$chkDataId,$chkMselValue4);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation("tbl_lnkHostdependencyToHostgroup_H",$chkDataId);
|
||||
}
|
||||
if ($intRet4 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Update Import HASH
|
||||
// ==================
|
||||
$booReturn = $myDataClass->updateHash($preTableName,$chkDataId);
|
||||
if ($booReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Host dependencies definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strSearchWhere from prepend_content.php -> SQL WHERE addon for data search
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Configuration name
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Dependency period
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Dependent hosts
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Hosts
|
||||
* @var array $chkMselValue3 from prepend_content.php -> Dependent hostgroups
|
||||
* @var array $chkMselValue4 from prepend_content.php -> Hostgroups
|
||||
* @var int $intMselValue1 from prepend_content.php -> Dependent hosts multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Hosts multiselect status value
|
||||
* @var int $intMselValue3 from prepend_content.php -> Dependent hostgroups multiselect status value
|
||||
* @var int $intMselValue4 from prepend_content.php -> Hostgroups multiselect status value
|
||||
* @var string $chkChbGr1a from prepend_content.php -> Execution failure criteria (o)
|
||||
* @var string $chkChbGr1b from prepend_content.php -> Execution failure criteria (d)
|
||||
* @var string $chkChbGr1c from prepend_content.php -> Execution failure criteria (u)
|
||||
* @var string $chkChbGr1d from prepend_content.php -> Execution failure criteria (p)
|
||||
* @var string $chkChbGr1e from prepend_content.php -> Execution failure criteria (n)
|
||||
* @var string $chkChbGr2a from prepend_content.php -> Notification failure criteria (o)
|
||||
* @var string $chkChbGr2b from prepend_content.php -> Notification failure criteria (d)
|
||||
* @var string $chkChbGr2c from prepend_content.php -> Notification failure criteria (u)
|
||||
* @var string $chkChbGr2d from prepend_content.php -> Notification failure criteria (p)
|
||||
* @var string $chkChbGr2e from prepend_content.php -> Notification failure criteria (n)
|
||||
* @var int $chkChbValue1 from prepend_content.php -> Inherit parents
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 19;
|
||||
$preContent = 'admin/hostdependencies.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'hostdependencies';
|
||||
$preTableName = 'tbl_hostdependency';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intRet3 = 0;
|
||||
$intRet4 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define host dependencies (hostdependencies.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process host selection field
|
||||
if (isset($arrModifyData['dependent_host_name'])) {$intFieldId = $arrModifyData['dependent_host_name'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_host','host_name','depend_host','tbl_lnkHostdependencyToHost_DH',2,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['host_name'])) {$intFieldId = $arrModifyData['host_name'];} else {$intFieldId = 0;}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti('tbl_host','host_name','host','tbl_lnkHostdependencyToHost_H',2,$intFieldId);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process time period selection field
|
||||
if (isset($arrModifyData['dependency_period'])) {$intFieldId = $arrModifyData['dependency_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','timeperiod',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process host group selection field
|
||||
if (isset($arrModifyData['dependent_hostgroup_name'])) {$intFieldId = $arrModifyData['dependent_hostgroup_name'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_hostgroup','hostgroup_name','depend_hostgroup','tbl_lnkHostdependencyToHostgroup_DH',2,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['hostgroup_name'])) {$intFieldId = $arrModifyData['hostgroup_name'];} else {$intFieldId = 0;}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti('tbl_hostgroup','hostgroup_name','hostgroup','tbl_lnkHostdependencyToHostgroup_H',2,$intFieldId);
|
||||
if ($intReturn2 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn1 != 0) && ($intReturn2 != 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
if ($arrModifyData['inherits_parent'] == 1) $conttp->setVariable("ACT_INHERIT","checked");
|
||||
foreach(explode(",",$arrModifyData['execution_failure_criteria']) AS $elem) {
|
||||
$conttp->setVariable("DAT_EO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
foreach(explode(",",$arrModifyData['notification_failure_criteria']) AS $elem) {
|
||||
$conttp->setVariable("DAT_NO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Config name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Dependent hosts')." / ".translate('Dependent hostgroups'));
|
||||
$mastertp->setVariable("DISABLE_SORT_2","disable");
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
$mastertp->setVariable("DISABLE_SORT_2","disable");
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `dependent_host_name`, `dependent_hostgroup_name`, `register`, `active`, `config_id`, `access_group`
|
||||
FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)
|
||||
$strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'process_field',40);
|
||||
if (!isset($intMselValue3)) {
|
||||
$intMselValue3 = 0;
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if (!isset($intMselValue4)) {
|
||||
$intMselValue4 = 0;
|
||||
}
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Data processing
|
||||
*/
|
||||
$strEO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d . $chkChbGr1e, 0, -1);
|
||||
$strNO = substr($chkChbGr2a . $chkChbGr2b . $chkChbGr2c . $chkChbGr2d . $chkChbGr2e, 0, -1);
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `dependent_host_name`=$intMselValue1, "
|
||||
. "`host_name`=$intMselValue2, `dependent_hostgroup_name`=$intMselValue3, `hostgroup_name`=$intMselValue4, "
|
||||
. "`inherits_parent`='$chkChbValue1', `execution_failure_criteria`='$strEO', "
|
||||
. "`notification_failure_criteria`='$strNO', `dependency_period`=$chkSelValue1, $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ((($intMselValue1 !== 0) && ($intMselValue2 !== 0)) || (($intMselValue3 !== 0) && ($intMselValue4 !== 0)) ||
|
||||
(($intMselValue1 !== 0) && ($intMselValue4 !== 0)) || (($intMselValue3 !== 0) && ($intMselValue2 !== 0))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New host dependency inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Host dependency modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostdependencyToHost_DH',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostdependencyToHost_H',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostdependencyToHostgroup_DH',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostdependencyToHostgroup_H',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
}
|
||||
if (isset($intRet4) && ($intRet4 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostdependencyToHost_DH',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkHostdependencyToHost_DH', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostdependencyToHost_H',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkHostdependencyToHost_H', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostdependencyToHostgroup_DH',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation('tbl_lnkHostdependencyToHostgroup_DH', $chkDataId);
|
||||
}
|
||||
if ($intRet3 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostdependencyToHostgroup_H',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation('tbl_lnkHostdependencyToHostgroup_H', $chkDataId);
|
||||
}
|
||||
if ($intRet4 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
/*
|
||||
Update Import HASH
|
||||
*/
|
||||
$booReturn = $myDataClass->updateHash($preTableName, $chkDataId);
|
||||
if ($booReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$conttp->setVariable('TITLE', translate('Define host dependencies (hostdependencies.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process host selection field */
|
||||
$intFieldId = $arrModifyData['dependent_host_name'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectMulti(
|
||||
'tbl_host',
|
||||
'host_name',
|
||||
'depend_host',
|
||||
'tbl_lnkHostdependencyToHost_DH',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['host_name'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_host',
|
||||
'host_name',
|
||||
'host',
|
||||
'tbl_lnkHostdependencyToHost_H',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process time period selection field */
|
||||
$intFieldId = $arrModifyData['dependency_period'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'timeperiod', 1, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process host group selection field */
|
||||
$intFieldId = $arrModifyData['dependent_hostgroup_name'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectMulti(
|
||||
'tbl_hostgroup',
|
||||
'hostgroup_name',
|
||||
'depend_hostgroup',
|
||||
'tbl_lnkHostdependencyToHostgroup_DH',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['hostgroup_name'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
'tbl_hostgroup',
|
||||
'hostgroup_name',
|
||||
'hostgroup',
|
||||
'tbl_lnkHostdependencyToHostgroup_H',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intReturn2 !== 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
if ((int)$arrModifyData['inherits_parent'] === 1) {
|
||||
$conttp->setVariable('ACT_INHERIT', 'checked');
|
||||
}
|
||||
foreach (explode(',', $arrModifyData['execution_failure_criteria']) as $elem) {
|
||||
$conttp->setVariable('DAT_EO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
foreach (explode(',', $arrModifyData['notification_failure_criteria']) as $elem) {
|
||||
$conttp->setVariable('DAT_NO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define host dependencies (hostdependencies.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Config name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Dependent hosts') . ' / ' . translate('Dependent hostgroups'));
|
||||
$mastertp->setVariable('DISABLE_SORT_2', 'disable');
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
}
|
||||
$mastertp->setVariable('DISABLE_SORT_2', 'disable');
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `dependent_host_name`, `dependent_hostgroup_name`, `register`, "
|
||||
. "`active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND "
|
||||
. "`access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData(
|
||||
$mastertp,
|
||||
$arrDataLines,
|
||||
$intDataCount,
|
||||
$intLineCount,
|
||||
$preKeyField,
|
||||
'process_field',
|
||||
40
|
||||
);
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,226 +1,438 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Host escalation definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 20;
|
||||
$preContent = "admin/hostescalations.tpl.htm";
|
||||
$preSearchSession = 'hostescalation';
|
||||
$preTableName = 'tbl_hostescalation';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Data processing
|
||||
// ===============
|
||||
$strEO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c,0,-1);
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `host_name`=$intMselValue3, `hostgroup_name`=$intMselValue4, `contacts`=$intMselValue1,
|
||||
`contact_groups`=$intMselValue2, `first_notification`=$chkTfNullVal1, `last_notification`=$chkTfNullVal2, `notification_interval`=$chkTfNullVal3,
|
||||
`escalation_period`='$chkSelValue1', `escalation_options`='$strEO', $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ((($intMselValue3 != 0) || ($chkMselValue4 != 0)) && (($intMselValue1 != 0) || ($intMselValue2 != 0)) &&
|
||||
($chkTfNullVal1 != "NULL") && ($chkTfNullVal2 != "NULL") && ($chkTfNullVal3 != "NULL")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New host escalation inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Host escalation modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkHostescalationToContact",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkHostescalationToContactgroup",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) $intRet3 = $myDataClass->dataInsertRelation("tbl_lnkHostescalationToHost",$chkDataId,$chkMselValue3);
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) $intRet4 = $myDataClass->dataInsertRelation("tbl_lnkHostescalationToHostgroup",$chkDataId,$chkMselValue4);
|
||||
if (isset($intRet4) && ($intRet4 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkHostescalationToContact",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkHostescalationToContact",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkHostescalationToContactgroup",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkHostescalationToContactgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation("tbl_lnkHostescalationToHost",$chkDataId,$chkMselValue3);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation("tbl_lnkHostescalationToHost",$chkDataId);
|
||||
}
|
||||
if ($intRet3 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation("tbl_lnkHostescalationToHostgroup",$chkDataId,$chkMselValue4);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation("tbl_lnkHostescalationToHostgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet4 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Update Import HASH
|
||||
// ==================
|
||||
$booReturn = $myDataClass->updateHash($preTableName,$chkDataId);
|
||||
if ($booReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Host escalation definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strSearchWhere from prepend_content.php -> SQL WHERE addon for data search
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Configuration name
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Escalation period
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Contacts
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Contact groups
|
||||
* @var array $chkMselValue3 from prepend_content.php -> Hosts
|
||||
* @var array $chkMselValue4 from prepend_content.php -> Hostgroups
|
||||
* @var int $intMselValue1 from prepend_content.php -> Contacts multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Contact groups multiselect status value
|
||||
* @var int $intMselValue3 from prepend_content.php -> Hosts multiselect status value
|
||||
* @var int $intMselValue4 from prepend_content.php -> Hostgroups multiselect status value
|
||||
* @var string $chkChbGr1a from prepend_content.php -> Escalation options (d)
|
||||
* @var string $chkChbGr1b from prepend_content.php -> Escalation options (u)
|
||||
* @var string $chkChbGr1c from prepend_content.php -> Escalation options (r)
|
||||
* @var string $chkTfNullVal1 from prepend_content.php -> First notification
|
||||
* @var string $chkTfNullVal2 from prepend_content.php -> Last notification
|
||||
* @var string $chkTfNullVal3 from prepend_content.php -> Notification interval
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 20;
|
||||
$preContent = 'admin/hostescalations.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'hostescalation';
|
||||
$preTableName = 'tbl_hostescalation';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intRet3 = 0;
|
||||
$intRet4 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define host escalation (hostescalations.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process host and host group selection field
|
||||
if (isset($arrModifyData['host_name'])) {$intFieldId = $arrModifyData['host_name'];} else {$intFieldId = 0;}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti('tbl_host','host_name','host','tbl_lnkHostescalationToHost',2,$intFieldId);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['hostgroup_name'])) {$intFieldId = $arrModifyData['hostgroup_name'];} else {$intFieldId = 0;}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti('tbl_hostgroup','hostgroup_name','hostgroup','tbl_lnkHostescalationToHostgroup',2,$intFieldId);
|
||||
if ($intReturn2 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn1 != 0) && ($intReturn2 != 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process timeperiod selection field
|
||||
if (isset($arrModifyData['escalation_period'])) {$intFieldId = $arrModifyData['escalation_period'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','escperiod',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process contact and contact group selection field
|
||||
if (isset($arrModifyData['contacts'])) {$intFieldId = $arrModifyData['contacts'];} else {$intFieldId = 0;}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti('tbl_contact','contact_name','contact','tbl_lnkHostescalationToContact',2,$intFieldId);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['contact_groups'])) {$intFieldId = $arrModifyData['contact_groups'];} else {$intFieldId = 0;}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti('tbl_contactgroup','contactgroup_name','contactgroup','tbl_lnkHostescalationToContactgroup',2,$intFieldId);
|
||||
if ($intReturn2 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn1 != 0) && ($intReturn2 != 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no contacts and contactgroups defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
foreach(explode(",",$arrModifyData['escalation_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_EO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Config name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Hosts')." / ".translate('Host groups'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
$mastertp->setVariable("DISABLE_SORT_2","disable");
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `host_name`, `hostgroup_name`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere
|
||||
$strSearchWhere AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'process_field',40);
|
||||
if (!isset($intMselValue3)) {
|
||||
$intMselValue3 = 0;
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if (!isset($intMselValue4)) {
|
||||
$intMselValue4 = 0;
|
||||
}
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Data processing
|
||||
*/
|
||||
$strEO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c, 0, -1);
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `host_name`=$intMselValue3, "
|
||||
. "`hostgroup_name`=$intMselValue4, `contacts`=$intMselValue1, `contact_groups`=$intMselValue2, "
|
||||
. "`first_notification`=$chkTfNullVal1, `last_notification`=$chkTfNullVal2, "
|
||||
. "`notification_interval`=$chkTfNullVal3, `escalation_period`='$chkSelValue1', "
|
||||
. "`escalation_options`='$strEO', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ((($intMselValue3 !== 0) || ($chkMselValue4 !== 0)) && (($intMselValue1 !== 0) || ($intMselValue2 !== 0)) &&
|
||||
($chkTfNullVal1 !== 'NULL') && ($chkTfNullVal2 !== 'NULL') && ($chkTfNullVal3 !== 'NULL')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New host escalation inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Host escalation modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostescalationToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostescalationToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostescalationToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostescalationToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
}
|
||||
if (isset($intRet4) && ($intRet4 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostescalationToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkHostescalationToContact', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostescalationToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkHostescalationToContactgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostescalationToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation('tbl_lnkHostescalationToHost', $chkDataId);
|
||||
}
|
||||
if ($intRet3 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostescalationToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation('tbl_lnkHostescalationToHostgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet4 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
/*
|
||||
Update Import HASH
|
||||
*/
|
||||
$booReturn = $myDataClass->updateHash($preTableName, $chkDataId);
|
||||
if ($booReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$conttp->setVariable('TITLE', translate('Define host escalation (hostescalations.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process host and host group selection field */
|
||||
$intFieldId = $arrModifyData['host_name'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_host',
|
||||
'host_name',
|
||||
'host',
|
||||
'tbl_lnkHostescalationToHost',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['hostgroup_name'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
'tbl_hostgroup',
|
||||
'hostgroup_name',
|
||||
'hostgroup',
|
||||
'tbl_lnkHostescalationToHostgroup',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intReturn2 !== 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process timeperiod selection field */
|
||||
$intFieldId = $arrModifyData['escalation_period'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'escperiod', 1, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process contact and contact group selection field */
|
||||
$intFieldId = $arrModifyData['contacts'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contact',
|
||||
'contact_name',
|
||||
'contact',
|
||||
'tbl_lnkHostescalationToContact',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['contact_groups'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contactgroup',
|
||||
'contactgroup_name',
|
||||
'contactgroup',
|
||||
'tbl_lnkHostescalationToContactgroup',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intReturn2 !== 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no contacts and contactgroups defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
// Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
// Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
foreach (explode(',', $arrModifyData['escalation_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_EO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define host escalation (hostescalations.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Config name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Hosts') . ' / ' . translate('Host groups'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
}
|
||||
$mastertp->setVariable('DISABLE_SORT_2', 'disable');
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `host_name`, `hostgroup_name`, `register`, `active`, `config_id`, "
|
||||
. "`access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` "
|
||||
. "IN ($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData(
|
||||
$mastertp,
|
||||
$arrDataLines,
|
||||
$intDataCount,
|
||||
$intLineCount,
|
||||
$preKeyField,
|
||||
'process_field',
|
||||
40
|
||||
);
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
|
||||
@@ -1,159 +1,242 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Host extended information definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 21;
|
||||
$preContent = "admin/hostextinfo.tpl.htm";
|
||||
$preSearchSession = 'hostextinfo';
|
||||
$preTableName = 'tbl_hostextinfo';
|
||||
$preKeyField = 'host_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`=$chkSelValue1, `notes`='$chkTfValue1', `notes_url`='$chkTfValue2', `action_url`='$chkTfValue3', `icon_image`='$chkTfValue4',
|
||||
`icon_image_alt`='$chkTfValue5', `vrml_image`='$chkTfValue6', `statusmap_image`='$chkTfValue7', `2d_coords`='$chkTfValue8', `3d_coords`='$chkTfValue9',
|
||||
$preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ($chkSelValue1 != 0) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New host extended information inserted:')." ".$chkSelValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Host extended information modified:')." ".$chkSelValue1);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Host extended information definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strSearchWhere from prepend_content.php -> SQL WHERE addon for data search
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Notes
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Notes URL
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Action URL
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Icon image
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Icon image alt text
|
||||
* @var string $chkTfValue6 from prepend_content.php -> VRML image
|
||||
* @var string $chkTfValue7 from prepend_content.php -> Status image
|
||||
* @var string $chkTfValue8 from prepend_content.php -> 2D coords
|
||||
* @var string $chkTfValue9 from prepend_content.php -> 3D coords
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Host
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 21;
|
||||
$preContent = 'admin/hostextinfo.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'hostextinfo';
|
||||
$preTableName = 'tbl_hostextinfo';
|
||||
$preKeyField = 'host_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`=$chkSelValue1, `notes`='$chkTfValue1', `notes_url`='$chkTfValue2', "
|
||||
. "`action_url`='$chkTfValue3', `icon_image`='$chkTfValue4', `icon_image_alt`='$chkTfValue5', "
|
||||
. "`vrml_image`='$chkTfValue6', `statusmap_image`='$chkTfValue7', `2d_coords`='$chkTfValue8', "
|
||||
. "`3d_coords`='$chkTfValue9', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ($chkSelValue1 !== 0) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New host extended information inserted:') . ' ' . $chkSelValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Host extended information modified:') . ' ' . $chkSelValue1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define host extended information (hostextinfo.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
if (isset($arrModifyData[$preKeyField])) {$intFieldId = $arrModifyData[$preKeyField];} else {$intFieldId = 0;}
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_host',$preKeyField,'host',0,$intFieldId);
|
||||
if ($intReturn1 != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Host name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Notes'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`tbl_host`.`$preKeyField` LIKE '%".$strSearchTxt."%' OR `$preTableName`.`notes` LIKE '%".$strSearchTxt."%'
|
||||
OR `$preTableName`.`notes_url` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `$preTableName`.`config_id`, `notes` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField`=`tbl_host`.`id`
|
||||
WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `$preTableName`.`id`, `tbl_host`.`$preKeyField`, `$preTableName`.`notes`, `$preTableName`.`register`, `$preTableName`.`active`,
|
||||
`$preTableName`.`config_id`, `$preTableName`.`access_group`
|
||||
FROM `$preTableName` LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id`
|
||||
WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)
|
||||
$strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'notes');
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$conttp->setVariable('TITLE', translate('Define host extended information (hostextinfo.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
$intFieldId = $arrModifyData[$preKeyField] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_host', $preKeyField, 'host', 0, $intFieldId);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define host extended information (hostextinfo.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Host name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Notes'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`tbl_host`.`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `$preTableName`.`notes` "
|
||||
. "LIKE '%" . $strSearchTxt . "%' OR `$preTableName`.`notes_url` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `notes` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField`=`tbl_host`.`id` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `$preTableName`.`id`, `tbl_host`.`$preKeyField`, `$preTableName`.`notes`, "
|
||||
. "`$preTableName`.`register`, `$preTableName`.`active`, `$preTableName`.`config_id`, "
|
||||
. "`$preTableName`.`access_group` FROM `$preTableName` "
|
||||
. "LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess) $strOrderString "
|
||||
. "LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'notes');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,182 +1,345 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Hostgroup definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 10;
|
||||
$preContent = "admin/hostgroups.tpl.htm";
|
||||
$preSearchSession = 'hostgroup';
|
||||
$preTableName = 'tbl_hostgroup';
|
||||
$preKeyField = 'hostgroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, `hostgroup_members`=$intMselValue2,
|
||||
`notes`='$chkTfValue3', `notes_url`='$chkTfValue4', `action_url`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "") && (($intMselValue1 != 0) || ($intVersion == 3))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New host group inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Host group modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkHostgroupToHost",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkHostgroupToHostgroup",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkHostgroupToHost",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkHostgroupToHost",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkHostgroupToHostgroup",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkHostgroupToHostgroup",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2) != 0) $strInfoMessage = "";
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Hostgroup definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var int $chkListId from prepend_adm.php -> Actual dataset id (list view)
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Hostgroup name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Hostgroup description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Notes
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Notes URL
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Action URL
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Members
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Hostgroup members
|
||||
* @var int $intMselValue1 from prepend_content.php -> Members multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Hostgroup members multiselect status value
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 10;
|
||||
$preContent = 'admin/hostgroups.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'hostgroup';
|
||||
$preTableName = 'tbl_hostgroup';
|
||||
$preKeyField = 'hostgroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define host groups (hostgroups.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process host selection field
|
||||
if (isset($arrModifyData['members'])) {$intFieldId = $arrModifyData['members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_host','host_name','host_members','tbl_lnkHostgroupToHost',2,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn != 0) && ($intVersion != 3)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process host group selection field
|
||||
if (isset($arrModifyData['hostgroup_members'])) {$intFieldId = $arrModifyData['hostgroup_members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti($preTableName,$preKeyField,'hostgroups','tbl_lnkHostgroupToHostgroup',0,$intFieldId,$chkListId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Host group'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%' OR `notes` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, "
|
||||
. "`hostgroup_members`=$intMselValue2, `notes`='$chkTfValue3', `notes_url`='$chkTfValue4', "
|
||||
. "`action_url`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '') && (($intMselValue1 !== 0) || ($intVersion >= 3))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New host group inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Host group modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostgroupToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkHostgroupToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostgroupToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkHostgroupToHost', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkHostgroupToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkHostgroupToHostgroup', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$conttp->setVariable('TITLE', translate('Define host groups (hostgroups.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process host selection field */
|
||||
$intFieldId = $arrModifyData['members'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_host',
|
||||
'host_name',
|
||||
'host_members',
|
||||
'tbl_lnkHostgroupToHost',
|
||||
2,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intVersion < 3)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process host group selection field */
|
||||
$intFieldId = $arrModifyData['hostgroup_members'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
$preTableName,
|
||||
$preKeyField,
|
||||
'hostgroups',
|
||||
'tbl_lnkHostgroupToHostgroup',
|
||||
0,
|
||||
$intFieldId,
|
||||
$chkListId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define host groups (hostgroups.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Host group'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Process search string and filter */
|
||||
$strSearchWhere = '';
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere .= "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%' "
|
||||
. "OR `notes` LIKE '%" . $strSearchTxt . "%') ";
|
||||
}
|
||||
if ($_SESSION['filter'][$preSearchSession]['registered'] !== '') {
|
||||
$intRegistered = (int)$_SESSION['filter'][$preSearchSession]['registered'];
|
||||
if ($intRegistered === 1) {
|
||||
$strSearchWhere .= "AND `register` = '1' ";
|
||||
}
|
||||
if ($intRegistered === 2) {
|
||||
$strSearchWhere .= "AND `register` = '0' ";
|
||||
}
|
||||
$mastertp->setVariable('SEL_REGFILTER_' . $intRegistered . '_SELECTED', 'selected');
|
||||
}
|
||||
if ($_SESSION['filter'][$preSearchSession]['active'] !== '') {
|
||||
$intActivated = (int)$_SESSION['filter'][$preSearchSession]['active'];
|
||||
if ($intActivated === 1) {
|
||||
$strSearchWhere .= "AND `active` = '1' ";
|
||||
}
|
||||
if ($intActivated === 2) {
|
||||
$strSearchWhere .= "AND `active` = '0' ";
|
||||
}
|
||||
$mastertp->setVariable('SEL_ACTIVEFILTER_' . $intActivated . '_SELECTED', 'selected');
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL1 = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL1, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL2 = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` "
|
||||
. "IN ($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL2, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
1339
admin/hosts.php
1339
admin/hosts.php
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
538
admin/import.php
538
admin/import.php
@@ -1,220 +1,328 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin configuration verification
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 25;
|
||||
$preContent = "admin/import.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intModus = 0;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Initialize import class
|
||||
// =======================
|
||||
include("../functions/import_class.php");
|
||||
$myImportClass = new nagimport;
|
||||
$myImportClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myDBClass =& $myDBClass;
|
||||
$myImportClass->myConfigClass =& $myConfigClass;
|
||||
//
|
||||
// Get configuration set ID
|
||||
// ========================
|
||||
$arrConfigSet = $myConfigClass->getConfigSets();
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
//
|
||||
// Process form variables
|
||||
// ======================
|
||||
if (isset($_FILES['datValue1']) && ($_FILES['datValue1']['name'] != "") && ($chkStatus == 1)) {
|
||||
// Upload Error
|
||||
if ($_FILES['datValue1']['error'] !== UPLOAD_ERR_OK) {
|
||||
$myVisClass->processMessage(translate('File upload error:')." ".$_FILES['filMedia']['error'],$strErrorMessage);
|
||||
} else {
|
||||
$intModus = 1;
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_local_imp');
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Data import
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var int $chkStatus from prepend_adm.php -> (hidden) Status field
|
||||
* @var string $chkTfSearch from prepend_content.php -> Text search string
|
||||
* @var mixed $chkMselValue1 from prepend_content.php -> Import file list
|
||||
* @var int $chkChbValue1 from prepend_content.php -> Overwrite checkbox
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 25;
|
||||
$preContent = 'admin/import.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intModus = 0;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Initialize import class
|
||||
*/
|
||||
$myImportClass = new functions\NagImportClass($_SESSION);
|
||||
$myImportClass->myDBClass =& $myDBClass;
|
||||
$myImportClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myConfigClass =& $myConfigClass;
|
||||
/*
|
||||
Get configuration set ID
|
||||
*/
|
||||
$myConfigClass->getConfigTargets($arrConfigSet);
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
/*
|
||||
Process form variables
|
||||
*/
|
||||
if (isset($_FILES['datValue1']) && ($_FILES['datValue1']['name'] !== '') && ($chkStatus === 1)) {
|
||||
/* Upload Error */
|
||||
if ($_FILES['datValue1']['error'] !== UPLOAD_ERR_OK) {
|
||||
$myVisClass->processMessage(
|
||||
translate('File upload error:') . ' ' . $_FILES['filMedia']['error'],
|
||||
$strErrorMessage
|
||||
);
|
||||
} else {
|
||||
$intModus = 1;
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_local_imp');
|
||||
move_uploaded_file($_FILES['datValue1']['tmp_name'], $strFileName);
|
||||
$intReturn = $myImportClass->fileImport($strFileName,$intConfigId,$chkChbValue1);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myImportClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myImportClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('File imported - File [overwite flag]:')." ".$_FILES['datValue1']['name']." [".$chkChbValue1."]");
|
||||
}
|
||||
}
|
||||
$intReturn = $myImportClass->fileImport($strFileName, $intConfigId, $chkChbValue1);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myImportClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myImportClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('File imported - File [overwrite flag]:') . ' ' .
|
||||
$_FILES['datValue1']['name'] . ' [' . $chkChbValue1 . ']');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (($chkMselValue1[0] != "") && ($chkStatus == 1)) {
|
||||
foreach($chkMselValue1 AS $elem) {
|
||||
$intModus = 1;
|
||||
$myImportClass->strErrorMessage = "";
|
||||
$myImportClass->strInfoMessage = "";
|
||||
$intReturn = $myImportClass->fileImport($elem,$intConfigId,$chkChbValue1);
|
||||
if ($intReturn != 0) {
|
||||
$myVisClass->processMessage($myImportClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myImportClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('File imported - File [overwite flag]:')." ".$elem." [".$chkChbValue1."]");
|
||||
}
|
||||
}
|
||||
if (isset($chkMselValue1[0]) && ($chkMselValue1[0] !== '') && ($chkStatus === 1)) {
|
||||
foreach ($chkMselValue1 as $elem) {
|
||||
$intModus = 1;
|
||||
$myImportClass->strErrorMessage = '';
|
||||
$myImportClass->strInfoMessage = '';
|
||||
$intReturn = $myImportClass->fileImport($elem, $intConfigId, $chkChbValue1);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myImportClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myImportClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('File imported - File [overwrite flag]:') . ' ' . $elem . ' ['
|
||||
. $chkChbValue1 . ']');
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Configuration import'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("LANG_SEARCH_STRING",translate('Filter string'));
|
||||
$conttp->setVariable("LANG_SEARCH",translate('Search'));
|
||||
$conttp->setVariable("LANG_DELETE",translate('Delete'));
|
||||
$conttp->setVariable("LANG_DELETE_SEARCH",translate("Reset filter"));
|
||||
$conttp->setVariable("DAT_SEARCH",$chkTfSearch);
|
||||
$conttp->setVariable("TEMPLATE",translate('Template definition'));
|
||||
$conttp->setVariable("IMPORTFILE",translate('Import file'));
|
||||
$conttp->setVariable("LOCAL_FILE",translate('Local import file'));
|
||||
$conttp->setVariable("OVERWRITE",translate('Overwrite database'));
|
||||
$conttp->setVariable("MAKE",translate('Import'));
|
||||
$conttp->setVariable("ABORT",translate('Abort'));
|
||||
$conttp->setVariable("CTRL_INFO",translate('Hold CTRL to select<br>more than one'));
|
||||
$conttp->setVariable("IMAGE_PATH",$_SESSION['SETS']['path']['base_url']."images/");
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("DAT_IMPORTFILE_1","");
|
||||
$conttp->setVariable("IMPORT_INFO_1",translate("To prevent errors or misconfigurations, you should import your configurations in an useful order. We recommend to do it like this:<br><br><b><i>commands -> timeperiods -> contacttemplates -> contacts -> contactgroups -> hosttemplates -> hosts -> hostgroups -> servicetemplates -> services -> servicegroups</i></b><br><br>"));
|
||||
$conttp->setVariable("IMPORT_INFO_2","<span style=\"color:#FF0000\">".translate("<b>Check your configuration after import!</b><br>In cause of an error or an uncomplete configuration, re-importing the wrong configuration can solve the problem.")."</span>");
|
||||
$conttp->parse("filelist1");
|
||||
// Get settings
|
||||
$myConfigClass->getConfigData($intConfigId,"method",$intMethod);
|
||||
$myConfigClass->getConfigData($intConfigId,"basedir",$strBaseDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"hostconfig",$strHostDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"serviceconfig",$strServiceDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"backupdir",$strBackupDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"hostbackup",$strHostBackupDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"servicebackup",$strServiceBackupDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"importdir",$strImportDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"nagiosbasedir",$strNagiosBaseDir);
|
||||
if ($intMethod == 1) {
|
||||
// Building local file list
|
||||
$output = array();
|
||||
$temp=$myConfigClass->DirToArray($strBaseDir, "\.cfg", "cgi.cfg|nagios.cfg|nrpe.cfg|nsca.cfg",$output,$strErrorMessage);
|
||||
if ($strNagiosBaseDir != $strBaseDir) {
|
||||
$temp=$myConfigClass->DirToArray($strNagiosBaseDir, "\.cfg", "cgi.cfg|nagios.cfg|nrpe.cfg|nsca.cfg",$output,$strErrorMessage);
|
||||
}
|
||||
$temp=$myConfigClass->DirToArray($strHostDir, "\.cfg", "",$output,$strErrorMessage);
|
||||
$temp=$myConfigClass->DirToArray($strServiceDir, "\.cfg", "",$output,$strErrorMessage);
|
||||
$temp=$myConfigClass->DirToArray($strHostBackupDir, "\.cfg_", "",$output,$strErrorMessage);
|
||||
$temp=$myConfigClass->DirToArray($strServiceBackupDir, "\.cfg_", "",$output,$strErrorMessage);
|
||||
if (($strImportDir != "") && ($strImportDir != $strBaseDir) && ($strImportDir != $strNagiosBaseDir)) {
|
||||
$temp=$myConfigClass->DirToArray($strImportDir, "\.cfg", "",$output,$strErrorMessage);
|
||||
}
|
||||
$output=array_unique($output);
|
||||
if (is_array($output) && (count($output) != 0)) {
|
||||
foreach ($output AS $elem) {
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_IMPORTFILE_2",$elem);
|
||||
$conttp->parse("filelist2");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ($intMethod == 2) {
|
||||
// Set up basic connection
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) == "0") {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->resConnectId,$strBaseDir);
|
||||
if (is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->resConnectId,$strHostDir);
|
||||
if (is_array($arrFiles2)) $arrFiles = array_merge($arrFiles,$arrFiles2);
|
||||
$arrFiles3 = ftp_nlist($myConfigClass->resConnectId,$strServiceDir);
|
||||
if (is_array($arrFiles3)) $arrFiles = array_merge($arrFiles,$arrFiles3);
|
||||
$arrFiles4 = ftp_nlist($myConfigClass->resConnectId,$strHostBackupDir);
|
||||
if (is_array($arrFiles4)) $arrFiles = array_merge($arrFiles,$arrFiles4);
|
||||
$arrFiles5 = ftp_nlist($myConfigClass->resConnectId,$strServiceBackupDir);
|
||||
if (is_array($arrFiles5)) $arrFiles = array_merge($arrFiles,$arrFiles5);
|
||||
if ($strImportDir != "" ) {
|
||||
$arrFiles6 = ftp_nlist($myConfigClass->resConnectId,$strImportDir);
|
||||
if (is_array($arrFiles6)) $arrFiles = array_merge($arrFiles,$arrFiles6);
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) != 0)) {
|
||||
foreach ($arrFiles AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (substr_count($elem,"resource.cfg")) continue;
|
||||
if (substr_count($elem,"nagios.cfg")) continue;
|
||||
if (substr_count($elem,"cgi.cfg")) continue;
|
||||
if (substr_count($elem,"nrpe.cfg")) continue;
|
||||
if (substr_count($elem,"nsca.cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_IMPORTFILE_2",str_replace("//","/",$elem));
|
||||
$conttp->parse("filelist2");
|
||||
}
|
||||
}
|
||||
}
|
||||
ftp_close($myConfigClass->resConnectId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else if ($intMethod == 3) {
|
||||
// Set up basic connection
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) == "0") {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = $myConfigClass->sendSSHCommand("ls ".$strBaseDir."*.cfg");
|
||||
if ($arrFiles1 && is_array($arrFiles1)) $arrFiles = array_merge($arrFiles,$arrFiles1);
|
||||
$arrFiles2 = $myConfigClass->sendSSHCommand("ls ".$strHostDir."*.cfg");
|
||||
if (is_array($arrFiles2)) $arrFiles = array_merge($arrFiles,$arrFiles2);
|
||||
$arrFiles3 = $myConfigClass->sendSSHCommand("ls ".$strServiceDir."*.cfg");
|
||||
if (is_array($arrFiles3)) $arrFiles = array_merge($arrFiles,$arrFiles3);
|
||||
$arrFiles4 = $myConfigClass->sendSSHCommand("ls ".$strHostBackupDir."*.cfg*");
|
||||
if (is_array($arrFiles4)) $arrFiles = array_merge($arrFiles,$arrFiles4);
|
||||
$arrFiles5 = $myConfigClass->sendSSHCommand("ls ".$strServiceBackupDir."*.cfg*");
|
||||
if (is_array($arrFiles5)) $arrFiles = array_merge($arrFiles,$arrFiles5);
|
||||
if ($strImportDir != "" ) {
|
||||
$arrFiles6 = $myConfigClass->sendSSHCommand("ls ".$strImportDir."*.cfg");
|
||||
if (is_array($arrFiles6)) $arrFiles = array_merge($arrFiles,$arrFiles6);
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) != 0)) {
|
||||
foreach ($arrFiles AS $elem) {
|
||||
if (!substr_count($elem,"cfg")) continue;
|
||||
if (substr_count($elem,"resource.cfg")) continue;
|
||||
if (substr_count($elem,"nagios.cfg")) continue;
|
||||
if (substr_count($elem,"cgi.cfg")) continue;
|
||||
if (substr_count($elem,"nrpe.cfg")) continue;
|
||||
if (substr_count($elem,"nsca.cfg")) continue;
|
||||
if (($chkTfSearch == "") || (substr_count($elem,$chkTfSearch) != 0)) {
|
||||
$conttp->setVariable("DAT_IMPORTFILE_2",str_replace("//","/",$elem));
|
||||
$conttp->parse("filelist2");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Start content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Configuration import'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('LANG_SEARCH_STRING', translate('Filter string'));
|
||||
$conttp->setVariable('LANG_SEARCH', translate('Search'));
|
||||
$conttp->setVariable('LANG_DELETE', translate('Delete'));
|
||||
$conttp->setVariable('LANG_DELETE_SEARCH', translate('Reset filter'));
|
||||
$conttp->setVariable('DAT_SEARCH', $chkTfSearch);
|
||||
$conttp->setVariable('TEMPLATE', translate('Template definition'));
|
||||
$conttp->setVariable('IMPORTFILE', translate('Import file'));
|
||||
$conttp->setVariable('LOCAL_FILE', translate('Local import file'));
|
||||
$conttp->setVariable('OVERWRITE', translate('Overwrite database'));
|
||||
$conttp->setVariable('MAKE', translate('Import'));
|
||||
$conttp->setVariable('ABORT', translate('Abort'));
|
||||
$conttp->setVariable('CTRL_INFO', translate('Hold CTRL to select<br>more than one'));
|
||||
$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url'] . 'images/');
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('DAT_IMPORTFILE_1');
|
||||
$conttp->setVariable('IMPORT_INFO_1', translate('To prevent errors or misconfigurations, you should import your '
|
||||
. 'configurations in a useful order. We recommend to do it like this:<br><br><b><i>commands -> '
|
||||
. 'timeperiods -> contacttemplates -> contacts -> contactgroups -> hosttemplates -> hosts -> '
|
||||
. 'hostgroups -> servicetemplates -> services -> servicegroups</i></b><br><br>'));
|
||||
$conttp->setVariable('IMPORT_INFO_2', '<span style="color:#FF0000">' . translate('<b>Check your configuration after '
|
||||
. 'import!</b><br>In cause of an error or an uncomplete configuration, re-importing the wrong configuration '
|
||||
. 'can solve the problem.') . '</span>');
|
||||
$conttp->parse('filelist1');
|
||||
/* Get settings */
|
||||
$intMethod = 0;
|
||||
$strMethod = '';
|
||||
if ($myConfigClass->getConfigValues($intConfigId, 'method', $strMethod) === 0) {
|
||||
$intMethod = (int)$strMethod;
|
||||
}
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$myConfigClass->getConfigValues($intConfigId, 'basedir', $strBaseDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'hostconfig', $strHostDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'serviceconfig', $strServiceDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'backupdir', $strBackupDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'hostbackup', $strHostBackupDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'servicebackup', $strServiceBackupDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'importdir', $strImportDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'nagiosbasedir', $strNagiosBaseDir);
|
||||
if ($intMethod === 1) {
|
||||
/* Building local file list */
|
||||
$arrOutput1 = array();
|
||||
if (file_exists($strBaseDir)) {
|
||||
$myConfigClass->storeDirToArray(
|
||||
$strBaseDir,
|
||||
"\.cfg",
|
||||
'cgi.cfg|nagios.cfg|nrpe.cfg|nsca.cfg',
|
||||
$arrOutput1,
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
if (file_exists($strNagiosBaseDir) && $strNagiosBaseDir !== $strBaseDir) {
|
||||
$myConfigClass->storeDirToArray(
|
||||
$strNagiosBaseDir,
|
||||
"\.cfg",
|
||||
'cgi.cfg|nagios.cfg|nrpe.cfg|nsca.cfg',
|
||||
$arrOutput1,
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
if (file_exists($strHostDir)) {
|
||||
$myConfigClass->storeDirToArray($strHostDir, "\.cfg", '', $arrOutput1, $strErrorMessage);
|
||||
}
|
||||
if (file_exists($strServiceDir)) {
|
||||
$myConfigClass->storeDirToArray($strServiceDir, "\.cfg", '', $arrOutput1, $strErrorMessage);
|
||||
}
|
||||
if (file_exists($strHostBackupDir)) {
|
||||
$myConfigClass->storeDirToArray($strHostBackupDir, "\.cfg_", '', $arrOutput1, $strErrorMessage);
|
||||
}
|
||||
if (file_exists($strServiceBackupDir)) {
|
||||
$myConfigClass->storeDirToArray($strServiceBackupDir, "\.cfg_", '', $arrOutput1, $strErrorMessage);
|
||||
}
|
||||
if (($strImportDir !== '') && ($strImportDir !== $strBaseDir) && ($strImportDir !== $strNagiosBaseDir) && file_exists($strImportDir)) {
|
||||
$myConfigClass->storeDirToArray($strImportDir, "\.cfg", '', $arrOutput1, $strErrorMessage);
|
||||
}
|
||||
$arrOutput2 = array_unique($arrOutput1);
|
||||
if (is_array($arrOutput2) && (count($arrOutput2) !== 0)) {
|
||||
foreach ($arrOutput2 as $elem) {
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_IMPORTFILE_2', $elem);
|
||||
$conttp->parse('filelist2');
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($intMethod === 2) {
|
||||
/* Set up basic connection */
|
||||
if ($myConfigClass->getFTPConnection($intConfigId) === 0) {
|
||||
$arrFiles = array();
|
||||
$arrFiles1 = ftp_nlist($myConfigClass->conFTPConId, $strBaseDir);
|
||||
if (is_array($arrFiles1)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles1);
|
||||
}
|
||||
$arrFiles2 = ftp_nlist($myConfigClass->conFTPConId, $strHostDir);
|
||||
if (is_array($arrFiles2)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles2);
|
||||
}
|
||||
$arrFiles3 = ftp_nlist($myConfigClass->conFTPConId, $strServiceDir);
|
||||
if (is_array($arrFiles3)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles3);
|
||||
}
|
||||
$arrFiles4 = ftp_nlist($myConfigClass->conFTPConId, $strHostBackupDir);
|
||||
if (is_array($arrFiles4)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles4);
|
||||
}
|
||||
$arrFiles5 = ftp_nlist($myConfigClass->conFTPConId, $strServiceBackupDir);
|
||||
if (is_array($arrFiles5)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles5);
|
||||
}
|
||||
if ($strImportDir !== '') {
|
||||
$arrFiles6 = ftp_nlist($myConfigClass->conFTPConId, $strImportDir);
|
||||
if (is_array($arrFiles6)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles6);
|
||||
}
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) !== 0)) {
|
||||
foreach ($arrFiles as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'resource.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nagios.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'cgi.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nrpe.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nsca.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_IMPORTFILE_2', str_replace('//', '/', $elem));
|
||||
$conttp->parse('filelist2');
|
||||
}
|
||||
}
|
||||
}
|
||||
ftp_close($myConfigClass->conFTPConId);
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($intMethod === 3) {
|
||||
/* Set up basic connection */
|
||||
if ($myConfigClass->getSSHConnection($intConfigId) === 0) {
|
||||
$arrFiles = array();
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strBaseDir . '*.cfg', $arrFiles1);
|
||||
if (($intReturn === 0) && is_array($arrFiles1)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles1);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strHostDir . '*.cfg', $arrFiles2);
|
||||
if (($intReturn === 0) && is_array($arrFiles2)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles2);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strServiceDir . '*.cfg', $arrFiles3);
|
||||
if (($intReturn === 0) && is_array($arrFiles3)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles3);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strHostBackupDir . '*.cfg*', $arrFiles4);
|
||||
if (($intReturn === 0) && is_array($arrFiles4)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles4);
|
||||
}
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strServiceBackupDir . '*.cfg*', $arrFiles5);
|
||||
if (($intReturn === 0) && is_array($arrFiles5)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles5);
|
||||
}
|
||||
if ($strImportDir !== '') {
|
||||
$intReturn = $myConfigClass->sendSSHCommand('ls ' . $strImportDir . '*.cfg', $arrFiles6);
|
||||
if (($intReturn === 0) && is_array($arrFiles6)) {
|
||||
$arrFiles = array_merge($arrFiles, $arrFiles6);
|
||||
}
|
||||
}
|
||||
if (is_array($arrFiles) && (count($arrFiles) !== 0)) {
|
||||
foreach ($arrFiles as $elem) {
|
||||
if (!substr_count($elem, 'cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'resource.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nagios.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'cgi.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nrpe.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (substr_count($elem, 'nsca.cfg')) {
|
||||
continue;
|
||||
}
|
||||
if (($chkTfSearch === '') || (substr_count($elem, $chkTfSearch) !== 0)) {
|
||||
$conttp->setVariable('DAT_IMPORTFILE_2', str_replace('//', '/', $elem));
|
||||
$conttp->parse('filelist2');
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>NagiosQL</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
186
admin/info.php
186
admin/info.php
@@ -1,94 +1,116 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin information dialog
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
$preNoMain = 1;
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process get parameters
|
||||
// ======================
|
||||
$chkKey1 = isset($_GET['key1']) ? htmlspecialchars($_GET['key1'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkKey2 = isset($_GET['key2']) ? htmlspecialchars($_GET['key2'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkVersion = isset($_GET['version']) ? htmlspecialchars($_GET['version'], ENT_QUOTES, 'utf-8') : "";
|
||||
//
|
||||
// Get information data
|
||||
// ===================================================
|
||||
if ($chkKey1 == "admin" and isset($_SESSION['updInfo'])) {
|
||||
// Exception for version check at admin.php
|
||||
$strContentDB = $_SESSION['updInfo'];
|
||||
} elseif ($chkKey1 == "settings") {
|
||||
// Exception for settings page to have gettext translated text
|
||||
$arrTrans = array (
|
||||
"txtRootPath" => translate("This is relative path of your NagiosQL Installation"),
|
||||
"txtBasePath" => translate("This is the absolut path to your NagiosQL Installation"),
|
||||
"selProtocol" => translate("If you need a secure connection, select HTTPS instead of HTTP"),
|
||||
"txtTempdir" => translate("Please choose a temporary directory with write permissions. The default is the temp directory provided by your OS"),
|
||||
"selLanguage" => translate("Please choose your application language"),
|
||||
"txtEncoding" => translate("Encoding should be set to nothing else than utf-8. Any changes at your own risk"),
|
||||
"txtDBserver" => translate("IP-Address or hostname of the database server<br>e.g. localhost"),
|
||||
"txtDBport" => translate("MySQL Server Port, default is 3306"),
|
||||
"txtDBname" => translate("Name of the NagiosQL database<br>e.g. db_nagiosql_v3"),
|
||||
"txtDBuser" => translate("User with sufficient permission for the NagiosQL database<br>At least this user should have SELECT, INSERT, UPDATE, DELETE permissions"),
|
||||
"txtDBpass" => translate("Password for the above mentioned user"),
|
||||
"txtLogoff" => translate("After the defined amount of seconds the session will terminate for security reasons"),
|
||||
"selWSAuth" => translate("Decide between authentication based on your Webserver<br>e.g. Apache configuration (config file or htaccess) or NagiosQL"),
|
||||
"txtLines" => translate("How many entries per side should be visibile (e.g. services or hosts)"),
|
||||
"selSeldisable" => translate("Selection of multiple entries by using the new dialog or by holding CTRL + left click like in NagiosQL2"),
|
||||
"templatecheck" => translate("Enable or disable the warning if a required field contains no data in objects with templates"),
|
||||
"updatecheck" => translate("Enable or disable the automatic online version check."),
|
||||
"chkUpdProxy" => translate("If you require a Proxyserver to connect to the Internet (Port 80), please define one."),
|
||||
"txtProxyServer"=> translate("Address of your Proxyserver e.g. proxy.yourdomain.com:3128"),
|
||||
"txtProxyUser" => translate("Username to connect through your proxy (optional)"),
|
||||
"txtProxyPasswd"=> translate("Password to connect through your proxy (optional)"),
|
||||
);
|
||||
$strContentDB = $arrTrans[$chkKey2];
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Admin information dialog
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
$preNoMain = 1;
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process get parameters
|
||||
*/
|
||||
$chkKey1 = filter_input(INPUT_GET, 'key1');
|
||||
$chkKey2 = filter_input(INPUT_GET, 'key2');
|
||||
$chkVersion = filter_input(INPUT_GET, 'version');
|
||||
/*
|
||||
Get information data
|
||||
*/
|
||||
if ($chkKey1 === 'admin' and isset($_SESSION['updInfo'])) {
|
||||
/* Exception for version check at admin.php */
|
||||
$strContentDB = $_SESSION['updInfo'];
|
||||
} elseif ($chkKey1 === 'settings') {
|
||||
/* Exception for settings page to have gettext translated text */
|
||||
$arrTrans = array(
|
||||
'txtRootPath' => translate('This is relative path of your NagiosQL Installation'),
|
||||
'txtBasePath' => translate('This is the absolut path to your NagiosQL Installation'),
|
||||
'selProtocol' => translate('If you need a secure connection, select HTTPS instead of HTTP'),
|
||||
'txtTempdir' => translate('Please choose a temporary directory with write permissions. The default is the ' .
|
||||
'temp directory provided by your OS'),
|
||||
'selLanguage' => translate('Please choose your application language for new users and login portal'),
|
||||
'txtEncoding' => translate('Encoding should be set to nothing else than utf-8. Any changes at your own risk'),
|
||||
'txtDBserver' => translate('IP-Address or hostname of the database server<br>e.g. localhost'),
|
||||
'txtDBport' => translate('MySQL Server Port, default is 3306'),
|
||||
'txtDBname' => translate('Name of the NagiosQL database<br>e.g. db_nagiosql_v3'),
|
||||
'txtDBuser' => translate('User with sufficient permission for the NagiosQL database<br>At least this user ' .
|
||||
'should have SELECT, INSERT, UPDATE, DELETE permissions'),
|
||||
'txtDBpass' => translate('Password for the above mentioned user'),
|
||||
'txtLogoff' => translate('After the defined amount of seconds the session will terminate for security ' .
|
||||
'reasons'),
|
||||
'selWSAuth' => translate('Decide between authentication based on your Webserver<br>e.g. Apache ' .
|
||||
'configuration (config file or htaccess) or NagiosQL'),
|
||||
'txtLines' => translate('Number of entries per side that should be visible (e.g. services or hosts)'),
|
||||
'selSeldisable' => translate('Method of selection of multiple entries by using the new dialog or by holding ' .
|
||||
'CTRL + left mouse button, as in NagiosQL 2'),
|
||||
'templatecheck' => translate('Enable or disable the warning if a required field contains no data in objects ' .
|
||||
'with templates'),
|
||||
'updatecheck' => translate('Enable or disable the automatic online version check.'),
|
||||
'chkUpdProxy' => translate('If you require a Proxyserver to connect to the Internet (Port 80), please ' .
|
||||
'define one.'),
|
||||
'txtProxyServer' => translate('Address of your Proxyserver e.g. proxy.yourdomain.com:3128'),
|
||||
'txtProxyUser' => translate('Username to connect through your proxy (optional)'),
|
||||
'txtProxyPasswd' => translate('Password to connect through your proxy (optional)'),
|
||||
'show_parents' => translate('In environments with a high number of host and service objects, the display of the parent objects can be disabled to improve performance. Existing assignments are preserved during modification.')
|
||||
);
|
||||
$strContentDB = $arrTrans[$chkKey2];
|
||||
} elseif ($chkKey1 === 'cmd_arguments') {
|
||||
/* Get information from tbl_command */
|
||||
$strSQL = 'SELECT `arg' . $chkVersion . '_info` FROM `tbl_command` WHERE `id`=' . $chkKey2;
|
||||
$strContentDB = nl2br($myDBClass->getFieldData($strSQL));
|
||||
} else {
|
||||
// Get information from tbl_info
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info`
|
||||
WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' AND `language` = 'private'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
if ($strContentDB == "") {
|
||||
$strSQL = "SELECT `infotext` FROM `tbl_info`
|
||||
WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' AND `language` = 'default'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
}
|
||||
/* Get information from tbl_info */
|
||||
$strSQL = 'SELECT `infotext` FROM `tbl_info` ' .
|
||||
"WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' " .
|
||||
"AND `language` = 'private'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
if ($strContentDB === '') {
|
||||
$strSQL = 'SELECT `infotext` FROM `tbl_info` ' .
|
||||
"WHERE `key1` = '$chkKey1' AND `key2` = '$chkKey2' AND `version` = '$chkVersion' " .
|
||||
"AND `language` = 'default'";
|
||||
$strContentDB = $myDBClass->getFieldData($strSQL);
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!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">
|
||||
<!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" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title><?php echo translate("Information PopUp");?></title>
|
||||
<style>
|
||||
.infobody {
|
||||
font-family:"Courier New", Courier, monospace;
|
||||
font-size:12px;
|
||||
}
|
||||
</style>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title><?php echo translate('Information PopUp'); ?></title>
|
||||
<style type="text/css">
|
||||
.infobody {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="infobody">
|
||||
<?php
|
||||
if ($strContentDB != "") {
|
||||
echo $strContentDB;
|
||||
if (trim($strContentDB) !== '') {
|
||||
echo $strContentDB;
|
||||
} else {
|
||||
echo translate("No information available");
|
||||
echo translate('No information available');
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
|
||||
@@ -1,124 +1,159 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin logbook
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 37;
|
||||
$preContent = "admin/admin_master.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Delete log entries
|
||||
// ==================
|
||||
if (isset($_POST['tfValue1']) && (($chkTfValue1 != "") || ($chkTfValue2 != ""))) {
|
||||
$strWhere = "";
|
||||
if ($chkTfValue1 != "") {
|
||||
$strWhere .= "AND `time` > '$chkTfValue1 00:00:00'";
|
||||
}
|
||||
if ($chkTfValue2 != "") {
|
||||
$strWhere .= "AND `time` < '$chkTfValue2 23:59:59'";
|
||||
}
|
||||
$strSQL = "DELETE FROM `tbl_logbook` WHERE 1=1 $strWhere";
|
||||
$booReturn = $myDBClass->insertData($strSQL);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Dataset successfully deleted. Affected rows:')." ".$myDBClass->intAffectedRows,$strInfoMessage);
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Logbook administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main templat
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var array $SETS Settings array
|
||||
* @var string $chkTfValue1 from prepend_content.php -> User name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> User description
|
||||
* @var string $chkTfSearch from prepend_content.php -> Text search string
|
||||
* @var int $chkFromLine from prepend_content.php -> Line number
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
*
|
||||
*
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 37;
|
||||
$preContent = 'admin/logbook.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Delete log entries
|
||||
*/
|
||||
$strWhere = '';
|
||||
if ($chkTfValue1 !== '') {
|
||||
$strWhere .= "AND `time` > '$chkTfValue1 00:00:00'";
|
||||
}
|
||||
//
|
||||
// Search data
|
||||
// ===========
|
||||
if ($chkTfSearch != "") {
|
||||
$strWhere = "WHERE `user` LIKE '%$chkTfSearch%' OR `ipadress` LIKE '%$chkTfSearch%' OR `domain` LIKE '%$chkTfSearch%' OR `entry` LIKE '%$chkTfSearch%'";
|
||||
if ($chkTfValue2 !== '') {
|
||||
$strWhere .= "AND `time` < '$chkTfValue2 23:59:59'";
|
||||
}
|
||||
if ($strWhere !== '') {
|
||||
$strSQL = 'DELETE FROM `tbl_logbook` WHERE `id`<>0 ';
|
||||
$strSQL .= $strWhere;
|
||||
$booReturn = $myDBClass->insertData($strSQL);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Dataset successfully deleted. Affected rows:') . ' ' .
|
||||
$myDBClass->intAffectedRows, $strInfoMessage);
|
||||
}
|
||||
}
|
||||
/*
|
||||
Search data
|
||||
*/
|
||||
if ($chkTfSearch !== '') {
|
||||
$strWhere = "WHERE `user` LIKE '%$chkTfSearch%' OR `ipadress` LIKE '%$chkTfSearch%' "
|
||||
. "OR `domain` LIKE '%$chkTfSearch%' OR `entry` LIKE '%$chkTfSearch%'";
|
||||
} else {
|
||||
$strWhere = "";
|
||||
$strWhere = '';
|
||||
}
|
||||
//
|
||||
// Get data
|
||||
// ========
|
||||
/*
|
||||
Get data
|
||||
*/
|
||||
$intNumRows = $myDBClass->getFieldData("SELECT count(*) FROM `tbl_logbook` $strWhere");
|
||||
if ($intNumRows <= $chkFromLine) $chkFromLine = 0;
|
||||
$strSQL = "SELECT DATE_FORMAT(time,'%Y-%m-%d %H:%i:%s') AS `time`, `user`, `ipadress`, `domain`, `entry`
|
||||
FROM `tbl_logbook` $strWhere ORDER BY `time` DESC LIMIT $chkFromLine,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intNumRows <= $chkFromLine) {
|
||||
$chkFromLine = 0;
|
||||
}
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('View logbook'));
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
$strSQL = "SELECT DATE_FORMAT(time,'%Y-%m-%d %H:%i:%s') AS `time`, `user`, `ipadress`, `domain`, `entry` "
|
||||
. "FROM `tbl_logbook` $strWhere ORDER BY `time` DESC LIMIT $chkFromLine," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable("LANG_ENTRIES_BEFORE",translate('Delete logentries between:'));
|
||||
$conttp->setVariable("LOCALE",$SETS['data']['locale']);
|
||||
$conttp->setVariable("LANG_SELECT_DATE",translate('Please at least fill in a start or a stop time'));
|
||||
$conttp->setVariable("LANG_DELETELOG",translate('Do you really want to delete all log entries between the selected dates?'));
|
||||
$conttp->setVariable("DAT_SEARCH",$chkTfSearch);
|
||||
/*
|
||||
Start content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('View logbook'));
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable('LANG_ENTRIES_BEFORE', translate('Delete logentries between:'));
|
||||
$conttp->setVariable('LOCALE', $SETS['data']['locale']);
|
||||
$conttp->setVariable('LANG_SELECT_DATE', translate('Please supply a start or a stop time at least'));
|
||||
$conttp->setVariable('LANG_DELETELOG', translate('Do you really want to delete all log entries between the '
|
||||
. 'selected dates?'));
|
||||
$conttp->setVariable('DAT_SEARCH', $chkTfSearch);
|
||||
// Legende einblenden
|
||||
if ($chkFromLine > 1) {
|
||||
$intPrevNumber = $chkFromLine - 20;
|
||||
$conttp->setVariable("LANG_PREVIOUS", "<a href=\"".filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING)."?from_line=".$intPrevNumber."\"><< ".translate('previous 20 entries')."</a>");
|
||||
$intPrevNumber = $chkFromLine - 20;
|
||||
$conttp->setVariable('LANG_PREVIOUS', '<a href="' . filter_input(INPUT_SERVER, 'PHP_SELF') .
|
||||
'?from_line=' . $intPrevNumber . '"><< ' . translate('previous 20 entries') . '</a>');
|
||||
} else {
|
||||
$conttp->setVariable("LANG_PREVIOUS", "");
|
||||
$conttp->setVariable('LANG_PREVIOUS');
|
||||
}
|
||||
if ($chkFromLine < $intNumRows-20) {
|
||||
$intNextNumber = $chkFromLine + 20;
|
||||
$conttp->setVariable("LANG_NEXT", "<a href=\"".filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING)."?from_line=".$intNextNumber."\">".translate('next 20 entries')." >></a>");
|
||||
if ($chkFromLine < $intNumRows - 20) {
|
||||
$intNextNumber = $chkFromLine + 20;
|
||||
$conttp->setVariable('LANG_NEXT', '<a href="' . filter_input(INPUT_SERVER, 'PHP_SELF') .
|
||||
'?from_line=' . $intNextNumber . '">' . translate('next 20 entries') . ' >></a>');
|
||||
} else {
|
||||
$conttp->setVariable("LANG_NEXT", "");
|
||||
$conttp->setVariable('LANG_NEXT');
|
||||
}
|
||||
//
|
||||
// Output log data
|
||||
// ===============
|
||||
if ($intDataCount != 0) {
|
||||
for ($i=0;$i<$intDataCount;$i++) {
|
||||
// Set default values
|
||||
if ($arrDataLines[$i]['ipadress'] == "") $arrDataLines[$i]['ipadress'] = " ";
|
||||
// Insert data values
|
||||
$conttp->setVariable("DAT_TIME", $arrDataLines[$i]['time']);
|
||||
$conttp->setVariable("DAT_ACCOUNT", $arrDataLines[$i]['user']);
|
||||
$conttp->setVariable("DAT_ACTION", $arrDataLines[$i]['entry']);
|
||||
$conttp->setVariable("DAT_IPADRESS", $arrDataLines[$i]['ipadress']);
|
||||
$conttp->setVariable("DAT_DOMAIN", $arrDataLines[$i]['domain']);
|
||||
$conttp->parse("logdatacell");
|
||||
}
|
||||
/*
|
||||
Output log data
|
||||
*/
|
||||
if ($intDataCount !== 0) {
|
||||
for ($i = 0; $i < $intDataCount; $i++) {
|
||||
/* Set default values */
|
||||
if ($arrDataLines[$i]['ipadress'] === '') {
|
||||
$arrDataLines[$i]['ipadress'] = ' ';
|
||||
}
|
||||
/* Insert data values */
|
||||
$conttp->setVariable('DAT_TIME', $arrDataLines[$i]['time']);
|
||||
$conttp->setVariable('DAT_ACCOUNT', $arrDataLines[$i]['user']);
|
||||
$conttp->setVariable('DAT_ACTION', $arrDataLines[$i]['entry']);
|
||||
$conttp->setVariable('DAT_IPADRESS', $arrDataLines[$i]['ipadress']);
|
||||
$conttp->setVariable('DAT_DOMAIN', $arrDataLines[$i]['domain']);
|
||||
$conttp->parse('logdatacell');
|
||||
}
|
||||
}
|
||||
$conttp->setVariable("ERRORMESSAGE","<br>".$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE","<br>".$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("logbooksite");
|
||||
$conttp->show("logbooksite");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->setVariable('ERRORMESSAGE', '<br>' . $strErrorMessage);
|
||||
$conttp->setVariable('INFOMESSAGE', '<br>' . $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('logbooksite');
|
||||
$conttp->show('logbooksite');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,99 +1,125 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Menu access administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 34;
|
||||
$preContent = "admin/admin_master.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoAccessGrp = 1;
|
||||
$intFieldId = 0;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Process data
|
||||
// ============
|
||||
if (isset($_POST['subSave']) && ($chkSelValue1 != 0)) {
|
||||
$strSQL = "UPDATE `tbl_menu` SET `mnuGrpId`='$chkSelValue2' WHERE `mnuId`=$chkSelValue1";
|
||||
$booReturn = $myDBClass->insertData($strSQL);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while inserting the data to the data base:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Data were successfully inserted to the data base!'),$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Access group set for menu item:')." ".$myDBClass->getFieldData("SELECT `mnuName` FROM `tbl_menu` WHERE `mnuId`=$chkSelValue1"));
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Menu access administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Language selector
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Standard domain selector
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 34;
|
||||
$preContent = 'admin/menuaccess.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoAccessGrp = 1;
|
||||
$intFieldId = 0;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Process data
|
||||
*/
|
||||
if (filter_input(INPUT_POST, 'subSave') && ($chkSelValue1 !== 0)) {
|
||||
$strSQL = "UPDATE `tbl_menu` SET `mnuGrpId`='$chkSelValue2' WHERE `mnuId`=$chkSelValue1";
|
||||
$booReturn = $myDBClass->insertData($strSQL);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while inserting the data into the database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Data were successfully inserted to the data base!'), $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Access group set for menu item:') . ' ' .
|
||||
$myDBClass->getFieldData("SELECT `mnuName` FROM `tbl_menu` WHERE `mnuId`=$chkSelValue1"));
|
||||
}
|
||||
}
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Define Menu Accessrights'));
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Define Menu Access Rights'));
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable("LANG_ACCESSDESCRIPTION",translate('In order for a user to get access, he needs to be member of the group selected here.'));
|
||||
//
|
||||
// Auswahlfeld einlesen
|
||||
// ====================
|
||||
$strSQL = "SELECT A.`mnuId` , B.`mnuName` AS `mainitem`, A.`mnuName` AS `subitem`, A.`mnuGrpId`
|
||||
FROM `tbl_menu` AS A
|
||||
LEFT JOIN `tbl_menu` AS B ON A.`mnuTopId` = B.`mnuId`
|
||||
ORDER BY A.`mnuTopId`, A.`mnuOrderId`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
$conttp->setVariable('LANG_ACCESSDESCRIPTION', translate('In order for a user to get access, he needs to be member '
|
||||
. 'of the group selected here.'));
|
||||
/*
|
||||
Read menu item
|
||||
*/
|
||||
$strSQL = 'SELECT A.`mnuId` , B.`mnuName` AS `mainitem`, A.`mnuName` AS `subitem`, A.`mnuGrpId` '
|
||||
. 'FROM `tbl_menu` AS A LEFT JOIN `tbl_menu` AS B ON A.`mnuTopId` = B.`mnuId` '
|
||||
. 'ORDER BY A.`mnuTopId`, A.`mnuOrderId`';
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$conttp->setVariable("SUBMENU_VALUE","0");
|
||||
$conttp->setVariable("SUBMENU_NAME"," ");
|
||||
$conttp->parse("submenu");
|
||||
foreach($arrDataLines AS $elem) {
|
||||
$conttp->setVariable("SUBMENU_VALUE",$elem['mnuId']);
|
||||
if ($elem['mainitem'] != '') {
|
||||
$conttp->setVariable("SUBMENU_NAME",translate($elem['mainitem'])." - ".translate($elem['subitem']));
|
||||
} else {
|
||||
$conttp->setVariable("SUBMENU_NAME",translate($elem['subitem']));
|
||||
}
|
||||
if ($chkSelValue1 == $elem['mnuId']) {
|
||||
$conttp->setVariable("SUBMENU_SELECTED","selected");
|
||||
$intFieldId = $elem['mnuGrpId'];
|
||||
}
|
||||
// Bypass main site
|
||||
if ($elem['mnuId'] != 1) $conttp->parse("submenu");
|
||||
}
|
||||
// Process access group selection field
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
$conttp->setVariable('SUBMENU_VALUE', '0');
|
||||
$conttp->setVariable('SUBMENU_NAME', ' ');
|
||||
$conttp->parse('submenu');
|
||||
foreach ($arrDataLines as $elem) {
|
||||
$conttp->setVariable('SUBMENU_VALUE', $elem['mnuId']);
|
||||
if (($elem['mainitem'] !== null) && ($elem['mainitem'] !== '')) {
|
||||
$conttp->setVariable('SUBMENU_NAME', translate($elem['mainitem']) . ' - ' . translate($elem['subitem']));
|
||||
} else {
|
||||
$conttp->setVariable('SUBMENU_NAME', translate($elem['subitem']));
|
||||
}
|
||||
if ($chkSelValue1 === (int)$elem['mnuId']) {
|
||||
$conttp->setVariable('SUBMENU_SELECTED', 'selected');
|
||||
$intFieldId = $elem['mnuGrpId'];
|
||||
}
|
||||
/* Bypass main site */
|
||||
if ((int)$elem['mnuId'] !== 1) {
|
||||
$conttp->parse('submenu');
|
||||
}
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
}
|
||||
$conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($intGlobalWriteAccess == 1) $conttp->setVariable("DISABLE_SAVE","disabled=\"disabled\"");
|
||||
$conttp->parse("menuaccesssite");
|
||||
$conttp->show("menuaccesssite");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($intGlobalWriteAccess === 1) {
|
||||
$conttp->setVariable('DISABLE_SAVE', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('menuaccesssite');
|
||||
$conttp->show('menuaccesssite');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,90 +1,121 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin specials overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 2;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Monitoring'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('To define host and service supervisions as well as host and service groups.'));
|
||||
$conttp->setVariable("STATISTICS",translate('Statistical datas'));
|
||||
$conttp->setVariable("TYPE",translate('Group'));
|
||||
$conttp->setVariable("ACTIVE",translate('Active'));
|
||||
$conttp->setVariable("INACTIVE",translate('Inactive'));
|
||||
//
|
||||
// Include statistical data
|
||||
// ========================
|
||||
// Get read access groups
|
||||
$strAccess = $myVisClass->getAccGroups('read');
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=8")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Hosts'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_host` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_host` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Admin specials overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var int $chkDomainId from prepend_adm.php
|
||||
* @var string $setFileVersion from prepend_adm.php
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 2;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Monitoring'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('DESC', translate('Define host and service supervisions as well as host and service groups.'));
|
||||
$conttp->setVariable('STATISTICS', translate('Statistical datas'));
|
||||
$conttp->setVariable('TYPE', translate('Group'));
|
||||
$conttp->setVariable('ACTIVE', translate('Active'));
|
||||
$conttp->setVariable('INACTIVE', translate('Inactive'));
|
||||
/*
|
||||
Include statistical data
|
||||
*/
|
||||
/* Get read access groups */
|
||||
$strAccess = $myVisClass->getAccessGroups('read');
|
||||
$intAccessGrp8 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=8');
|
||||
$intAccessGrp9 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=9');
|
||||
$intAccessGrp10 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=10');
|
||||
$intAccessGrp11 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=11');
|
||||
$intAccessGrp12 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=12');
|
||||
$intAccessGrp13 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=13');
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp8, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Hosts'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_host` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_host` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=9")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Services'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_service` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_service` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp9, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Services'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_service` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_service` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=10")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Host groups'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostgroup` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostgroup` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp10, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Host groups'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostgroup` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostgroup` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=11")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Service groups'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicegroup` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicegroup` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp11, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Service groups'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicegroup` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicegroup` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=12")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Host templates'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hosttemplate` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hosttemplate` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp12, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Host templates'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hosttemplate` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hosttemplate` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=13")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Service templates'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicetemplate` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicetemplate` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp13, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Service templates'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicetemplate` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicetemplate` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
$conttp->parse("statistics");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->parse('statistics');
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,59 +1,65 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin timeperiod definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preContent = "admin/mutdialog.tpl.htm";
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkObject = isset($_GET['object']) ? htmlspecialchars($_GET['object'], ENT_QUOTES, 'utf-8') : "";
|
||||
$intExclude = isset($_GET['exclude']) ? htmlspecialchars($_GET['exclude'], ENT_QUOTES, 'utf-8') : 0;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
$preAccess = 1;
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Mutation dialog
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preContent = 'admin/mutdialog.htm.tpl';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$intExclude = filter_input(INPUT_GET, 'exclude', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkObject = filter_input(INPUT_GET, 'object');
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoMain = 1;
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("BASE_PATH",$_SESSION['SETS']['path']['base_url']);
|
||||
$conttp->setVariable("OPENER_FIELD",$chkObject);
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Form
|
||||
// ====
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
$preNoMain = 1;
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('BASE_PATH', $_SESSION['SETS']['path']['base_url']);
|
||||
$conttp->setVariable('OPENER_FIELD', $chkObject);
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
/*
|
||||
Form
|
||||
*/
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable("OPENER_FIELD",$chkObject);
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("IMAGE_PATH",$_SESSION['SETS']['path']['base_url']."images/");
|
||||
$conttp->setVariable("AVAILABLE",translate('Available'));
|
||||
$conttp->setVariable("SELECTED",translate('Selected'));
|
||||
if (($intExclude == 1) || ($intVersion < 3)) {
|
||||
$conttp->setVariable("DISABLE_HTML_BEGIN","<!--");
|
||||
$conttp->setVariable("DISABLE_HTML_END","-->");
|
||||
$conttp->setVariable('OPENER_FIELD', $chkObject);
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url'] . 'images/');
|
||||
$conttp->setVariable('AVAILABLE', translate('Available'));
|
||||
$conttp->setVariable('SELECTED', translate('Selected'));
|
||||
if (($intExclude === 1) || ($intVersion < 3)) {
|
||||
$conttp->setVariable('DISABLE_HTML_BEGIN', '<!--');
|
||||
$conttp->setVariable('DISABLE_HTML_END', '-->');
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
?>
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
@@ -1,153 +1,181 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin timeperiod definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 28;
|
||||
$preContent = "admin/nagioscfg.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intRemoveTmp = 0;
|
||||
$strConfig = "";
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Get configuration set ID
|
||||
// ========================
|
||||
$arrConfigSet = $myConfigClass->getConfigSets();
|
||||
$intConfigId = $arrConfigSet[0];
|
||||
$myConfigClass->getConfigData($intConfigId,"method",$intMethod);
|
||||
$myConfigClass->getConfigData($intConfigId,"nagiosbasedir",$strBaseDir);
|
||||
$myConfigClass->getConfigData($intConfigId,"conffile",$strConfigfile);
|
||||
$strLocalBackup = $strConfigfile."_old_".date("YmdHis",time());
|
||||
//
|
||||
// Convert Windows to UNIX
|
||||
// =======================
|
||||
$chkTaFileText = str_replace("\r\n","\n",$chkTaFileText);
|
||||
//
|
||||
// Process data
|
||||
// ============
|
||||
if ($chkTaFileText != "") {
|
||||
if ($intMethod == 1) {
|
||||
if (file_exists($strBaseDir) && (is_writable($strBaseDir) && (is_writable($strConfigfile)))) {
|
||||
// Backup config file
|
||||
$intReturn = $myConfigClass->moveFile("nagiosbasic",basename($strConfigfile),$intConfigId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Write configuration
|
||||
$resFile = fopen($strConfigfile,"w");
|
||||
fputs($resFile,$chkTaFileText);
|
||||
fclose($resFile);
|
||||
$myVisClass->processMessage("<span style=\"color:green\">".translate('Configuration file successfully written!')."</span>",$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:')." ".$strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions)!'),$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed:')." ".$strConfigfile);
|
||||
}
|
||||
} else if (($intMethod == 2) || ($intMethod == 3)) {
|
||||
// Backup config file
|
||||
$intReturn = $myConfigClass->moveFile("nagiosbasic",basename($strConfigfile),$intConfigId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Write file to temporary
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_conf');
|
||||
$resFile = fopen($strFileName,"w");
|
||||
fputs($resFile,$chkTaFileText);
|
||||
fclose($resFile);
|
||||
// Copy configuration to remoty system
|
||||
$intReturn = $myConfigClass->configCopy($strConfigfile,$intConfigId,$strFileName,1);
|
||||
if ($intReturn == 0) {
|
||||
$myVisClass->processMessage("<span style=\"color:green\">".translate('Configuration file successfully written!')."</span>",$strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:')." ".$strConfigfile);
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions on remote system)!'),$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed (remote):')." ".$strConfigfile);
|
||||
unlink($strFileName);
|
||||
}
|
||||
}
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Nagios configuration file editor
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var string $chkTaFileText from prepend_content.php -> Text area
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 28;
|
||||
$preContent = 'admin/nagioscfg.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intRemoveTmp = 0;
|
||||
$strConfig = '';
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Get configuration set ID
|
||||
*/
|
||||
$intMethod = 0;
|
||||
$strMethod = '';
|
||||
$myConfigClass->getConfigTargets($arrConfigSet);
|
||||
$intConfigId = (int)$arrConfigSet[0];
|
||||
if ($myConfigClass->getConfigValues($intConfigId, 'method', $strMethod) === 0) {
|
||||
$intMethod = (int)$strMethod;
|
||||
}
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Nagios main configuration file'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Include input form
|
||||
// ===================
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("MAINSITE",$_SESSION['SETS']['path']['base_url']."admin.php");
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'nagiosbasedir', $strBaseDir);
|
||||
$myConfigClass->getConfigValues($intConfigId, 'conffile', $strConfigfile);
|
||||
$strLocalBackup = $strConfigfile . '_old_' . date('YmdHis');
|
||||
/* Convert Windows to UNIX */
|
||||
$chkTaFileText = str_replace("\r\n", "\n", $chkTaFileText);
|
||||
/*
|
||||
Process data
|
||||
*/
|
||||
if (($chkTaFileText !== '') && ($arrConfigSet[0] !== 0)) {
|
||||
if ($intMethod === 1) {
|
||||
if (file_exists($strBaseDir) && (is_writable($strBaseDir) && is_writable($strConfigfile))) {
|
||||
/* Backup config file */
|
||||
$intReturn = $myConfigClass->moveFile('nagiosbasic', basename($strConfigfile), $intConfigId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Write configuration */
|
||||
$resFile = fopen($strConfigfile, 'wb');
|
||||
fwrite($resFile, $chkTaFileText);
|
||||
fclose($resFile);
|
||||
$myVisClass->processMessage('<span style="color:green">' . translate('Configuration file successfully '
|
||||
. 'written!') . '</span>', $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:') . ' ' . $strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the '
|
||||
. 'permissions)!'), $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed:') . ' ' . $strConfigfile);
|
||||
}
|
||||
} elseif (($intMethod === 2) || ($intMethod === 3)) {
|
||||
/* Backup config file */
|
||||
$intReturn1 = $myConfigClass->moveFile('nagiosbasic', basename($strConfigfile), $intConfigId);
|
||||
if ($intReturn1 === 1) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Write file to temporary */
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_conf');
|
||||
$resFile = fopen($strFileName, 'wb');
|
||||
fwrite($resFile, $chkTaFileText);
|
||||
fclose($resFile);
|
||||
/* Copy configuration to remoty system */
|
||||
$intReturn2 = $myConfigClass->remoteFileCopy($strConfigfile, $intConfigId, $strFileName, 1);
|
||||
if ($intReturn2 === 0) {
|
||||
$myVisClass->processMessage('<span style="color:green">' . translate('Configuration file successfully '
|
||||
. 'written!') . '</span>', $strInfoMessage);
|
||||
$myDataClass->writeLog(translate('Configuration successfully written:') . ' ' . $strConfigfile);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open/overwrite the configuration file (check the permissions '
|
||||
. 'on remote system)!'), $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration write failed (remote):') . ' ' . $strConfigfile);
|
||||
}
|
||||
unlink($strFileName);
|
||||
}
|
||||
} elseif ($arrConfigSet[0] === 0) {
|
||||
$myVisClass->processMessage(translate('There are no nagios configuration files in common domain, please select a ' .
|
||||
'valid domain to edit this files!'), $strErrorMessage);
|
||||
}
|
||||
//
|
||||
// Open configuration
|
||||
// ==================
|
||||
if ($intMethod == 1) {
|
||||
if (file_exists($strConfigfile) && is_readable($strConfigfile)) {
|
||||
$resFile = fopen($strConfigfile,"r");
|
||||
if ($resFile) {
|
||||
while(!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile,1024);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the data file (check the permissions)!'),$strErrorMessage);
|
||||
}
|
||||
} else if (($intMethod == 2) || ($intMethod == 3)) {
|
||||
// Write file to temporary
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_conf');
|
||||
// Copy configuration from remoty system
|
||||
$intReturn = $myConfigClass->configCopy($strConfigfile,$intConfigId,$strFileName,0);
|
||||
if ($intReturn == 0) {
|
||||
$resFile = fopen($strFileName,"r");
|
||||
if (is_resource($resFile)) {
|
||||
while(!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile,1024);
|
||||
}
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the temporary file'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration read failed (remote):')." ".$strErrorMessage);
|
||||
if (file_exists($strFileName)) unlink($strFileName);
|
||||
}
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Nagios main configuration file'));
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('MAINSITE', $_SESSION['SETS']['path']['base_url'] . 'admin.php');
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable("DAT_NAGIOS_CONFIG",$strConfig);
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("naginsert");
|
||||
$conttp->show("naginsert");
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/*
|
||||
Open configuration
|
||||
*/
|
||||
if ($intMethod === 1) {
|
||||
if (file_exists($strConfigfile) && is_readable($strConfigfile)) {
|
||||
$resFile = fopen($strConfigfile, 'rb');
|
||||
if ($resFile) {
|
||||
while (!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile, 1024);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the data file (check the permissions)!'), $strErrorMessage);
|
||||
}
|
||||
} elseif (($intMethod === 2) || ($intMethod === 3)) {
|
||||
/* Write file to temporary */
|
||||
$strFileName = tempnam($_SESSION['SETS']['path']['tempdir'], 'nagiosql_conf');
|
||||
/* Copy configuration from remoty system */
|
||||
$intReturn = $myConfigClass->remoteFileCopy($strConfigfile, $intConfigId, $strFileName);
|
||||
if ($intReturn === 0) {
|
||||
$resFile = fopen($strFileName, 'rb');
|
||||
if (is_resource($resFile)) {
|
||||
while (!feof($resFile)) {
|
||||
$strConfig .= fgets($resFile, 1024);
|
||||
}
|
||||
unlink($strFileName);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Cannot open the temporary file'), $strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
$myDataClass->writeLog(translate('Configuration read failed (remote):') . ' ' . $strErrorMessage);
|
||||
if (file_exists($strFileName)) {
|
||||
unlink($strFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
$conttp->setVariable('DAT_NAGIOS_CONFIG', $strConfig);
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('naginsert');
|
||||
$conttp->show('naginsert');
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,102 +1,137 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Password administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 31;
|
||||
$preContent = "admin/admin_master.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preShowHeader = 0;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Change password
|
||||
// =======================
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "")) {
|
||||
// Check old password
|
||||
$strSQL = "SELECT * FROM `tbl_user` WHERE `username`='".$_SESSION['username']."' AND `password`=MD5('$chkTfValue1')";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($intDataCount == 1) {
|
||||
// Check equality and password length
|
||||
if (($chkTfValue2 === $chkTfValue3) && (strlen($chkTfValue2) >=5)) {
|
||||
// Update database
|
||||
$strSQLUpdate = "UPDATE `tbl_user` SET `password`=MD5('$chkTfValue2'),
|
||||
`last_login`=NOW() WHERE `username`='".$_SESSION['username']."'";
|
||||
$booReturn = $myDBClass->insertData($strSQLUpdate);
|
||||
if ($booReturn == true) {
|
||||
$myDataClass->writeLog(translate('Password successfully modified'));
|
||||
// Force new login
|
||||
$_SESSION['logged_in'] = 0;
|
||||
$_SESSION['username'] = "";
|
||||
$_SESSION['userid'] = 0;
|
||||
$_SESSION['groupadm'] = 0;
|
||||
$_SESSION['domain'] = 0;
|
||||
header("Location: ".$SETS['path']['protocol']."://".$_SERVER['HTTP_HOST'].$_SESSION['SETS']['path']['base_url']."index.php");
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
// New password wrong
|
||||
$myVisClass->processMessage(translate('Password too short or password fields unequally!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
// Old password wrong
|
||||
$myVisClass->processMessage(translate('Old password is wrong'),$strErrorMessage);
|
||||
}
|
||||
} else if (isset($_POST['submit'])) {
|
||||
// Wrong data
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Password administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main Template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $tplHeaderVar from prepend_adm.php -> Header content
|
||||
* @var int $prePageKey from prepend_adm.php -> Admin access key
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
* @var array $SETS Settings array
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Old Password
|
||||
* @var string $chkTfValue2 from prepend_content.php -> New Password 1
|
||||
* @var string $chkTfValue3 from prepend_content.php -> New Password 2
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 31;
|
||||
$preContent = 'admin/password.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preShowHeader = 0;
|
||||
$strErrorMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Change password
|
||||
*/
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '')) {
|
||||
/* Check old password */
|
||||
$strSQL = 'SELECT * FROM `tbl_user` '
|
||||
. "WHERE `username`='" . $_SESSION['username'] . "' AND `password`=MD5('$chkTfValue1')";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} elseif ($intDataCount === 1) {
|
||||
/* Check equality and password length */
|
||||
if (($chkTfValue2 === $chkTfValue3) && (strlen($chkTfValue2) >= 5)) {
|
||||
/* Update database */
|
||||
$strSQLUpdate = "UPDATE `tbl_user` SET `password`=MD5('$chkTfValue2'), `last_login`=NOW() "
|
||||
. "WHERE `username`='" . $_SESSION['username'] . "'";
|
||||
$booReturn = $myDBClass->insertData($strSQLUpdate);
|
||||
if ($booReturn === true) {
|
||||
$myDataClass->writeLog(translate('Password successfully modified'));
|
||||
/* Force new login */
|
||||
$_SESSION['logged_in'] = 0;
|
||||
$_SESSION['username'] = '';
|
||||
$_SESSION['userid'] = 0;
|
||||
$_SESSION['groupadm'] = 0;
|
||||
$_SESSION['domain'] = 0;
|
||||
header('Location: ' . $SETS['path']['protocol'] . '://' .
|
||||
filter_input(INPUT_SERVER, 'HTTP_HOST') .
|
||||
$_SESSION['SETS']['path']['base_url'] . 'index.php');
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
/* New password wrong */
|
||||
$myVisClass->processMessage(
|
||||
translate('Password too short or password fields do not match!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
/* Old password wrong */
|
||||
$myVisClass->processMessage(translate('The old password is invalid'), $strErrorMessage);
|
||||
}
|
||||
} elseif (filter_input(INPUT_POST, 'submit')) {
|
||||
/* Wrong data */
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
//
|
||||
// Output header variable
|
||||
// ======================
|
||||
/*
|
||||
Output header variable
|
||||
*/
|
||||
echo $tplHeaderVar;
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable("LANG_SAVE",translate('Save'));
|
||||
$conttp->setVariable("LANG_ABORT",translate('Abort'));
|
||||
$conttp->setVariable("FILL_ALLFIELDS",translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable("FILL_NEW_PASSWD_NOT_EQUAL",translate('The new passwords are not equal!'));
|
||||
$conttp->setVariable("FILL_NEW_PWDSHORT",translate('The new password is too short - use at least 6 characters!'));
|
||||
if ($strErrorMessage != "") $conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("IMAGE_PATH",$_SESSION['SETS']['path']['base_url']."images/");
|
||||
// Check access rights for adding new objects
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("passwordsite");
|
||||
$conttp->show("passwordsite");
|
||||
//
|
||||
// Include footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->setVariable('LANG_SAVE', translate('Save'));
|
||||
$conttp->setVariable('LANG_ABORT', translate('Abort'));
|
||||
$conttp->setVariable('FILL_ALLFIELDS', translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable('FILL_NEW_PASSWD_NOT_EQUAL', translate('The new passwords don not match!'));
|
||||
$conttp->setVariable('FILL_NEW_PWDSHORT', translate('The new password is too short - use at least 6 characters!'));
|
||||
if ($strErrorMessage !== '') {
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('IMAGE_PATH', $_SESSION['SETS']['path']['base_url'] . 'images/');
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('passwordsite');
|
||||
$conttp->show('passwordsite');
|
||||
/*
|
||||
Include footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,326 +1,664 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Service escalation definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 23;
|
||||
$preContent = "admin/serviceescalations.tpl.htm";
|
||||
$preSearchSession = 'serviceescalation';
|
||||
$preTableName = 'tbl_serviceescalation';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Data processing
|
||||
// ===============
|
||||
$strEO = substr($chkChbGr1a.$chkChbGr1b.$chkChbGr1c.$chkChbGr1d,0,-1);
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `host_name`=$intMselValue1, `service_description`=$intMselValue3, `hostgroup_name`=$intMselValue2,
|
||||
`contacts`=$intMselValue4, `contact_groups`=$intMselValue5, `servicegroup_name`=$intMselValue6, `first_notification`=$chkTfNullVal1,
|
||||
`last_notification`=$chkTfNullVal2, `notification_interval`=$chkTfNullVal3, `escalation_period`='$chkSelValue1', `escalation_options`='$strEO',
|
||||
$preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if ((($intMselValue1 != 0) || ($intMselValue2 != 0) || ($intMselValue6 != 0)) && (($intMselValue3 != 0) || ($intMselValue6 != 0)) &&
|
||||
(($intMselValue5 != 0) || ($intMselValue4 != 0)) && ($chkTfNullVal1 != "NULL") && ($chkTfNullVal2 != "NULL") && ($chkTfNullVal3 != "NULL")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New service escalation inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Service escalation modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToHost",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToHostgroup",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) $intRet3 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToService",$chkDataId,$chkMselValue3);
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) $intRet4 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToContact",$chkDataId,$chkMselValue4);
|
||||
if (isset($intRet4) && ($intRet4 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue5 != 0) $intRet5 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToContactgroup",$chkDataId,$chkMselValue5);
|
||||
if (isset($intRet5) && ($intRet5 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue6 != 0) $intRet6 = $myDataClass->dataInsertRelation("tbl_lnkServiceescalationToServicegroup",$chkDataId,$chkMselValue6);
|
||||
if (isset($intRet6) && ($intRet6 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToHost",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToHost",$chkDataId);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToHostgroup",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToHostgroup",$chkDataId);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue3 != 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToService",$chkDataId,$chkMselValue3);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToService",$chkDataId);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue4 != 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToContact",$chkDataId,$chkMselValue4);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToContact",$chkDataId);
|
||||
}
|
||||
if (isset($intRet4) && ($intRet4 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue5 != 0) {
|
||||
$intRet5 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToContactgroup",$chkDataId,$chkMselValue5);
|
||||
} else {
|
||||
$intRet5 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToContactgroup",$chkDataId);
|
||||
}
|
||||
if (isset($intRet5) && ($intRet5 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue6 != 0) {
|
||||
$intRet6 = $myDataClass->dataUpdateRelation("tbl_lnkServiceescalationToServicegroup",$chkDataId,$chkMselValue6);
|
||||
} else {
|
||||
$intRet6 = $myDataClass->dataDeleteRelation("tbl_lnkServiceescalationToServicegroup",$chkDataId);
|
||||
}
|
||||
if (isset($intRet6) && ($intRet6 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4 + $intRet5 + $intRet6) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Update Import HASH
|
||||
// ==================
|
||||
$booReturn = $myDataClass->updateHash($preTableName,$chkDataId);
|
||||
if ($booReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Service escalation definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strSearchWhere from prepend_content.php -> SQL WHERE addon for data search
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkSelAccGr from prepend_content.php -> Access group selector
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Configuration name
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Escalation period
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Hosts
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Host groups
|
||||
* @var array $chkMselValue3 from prepend_content.php -> Services
|
||||
* @var array $chkMselValue4 from prepend_content.php -> Contacts
|
||||
* @var array $chkMselValue5 from prepend_content.php -> Contact groups
|
||||
* @var array $chkMselValue6 from prepend_content.php -> Service groups
|
||||
* @var int $intMselValue1 from prepend_content.php -> Hosts multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Host groups multiselect status value
|
||||
* @var int $intMselValue3 from prepend_content.php -> Services multiselect status value
|
||||
* @var int $intMselValue4 from prepend_content.php -> Contacts multiselect status value
|
||||
* @var int $intMselValue5 from prepend_content.php -> Contact groups multiselect status value
|
||||
* @var int $intMselValue6 from prepend_content.php -> Service groups multiselect status value
|
||||
* @var string $chkChbGr1a from prepend_content.php -> Escalation options (w)
|
||||
* @var string $chkChbGr1b from prepend_content.php -> Escalation options (u)
|
||||
* @var string $chkChbGr1c from prepend_content.php -> Escalation options (c)
|
||||
* @var string $chkChbGr1d from prepend_content.php -> Escalation options (r)
|
||||
* @var string $chkTfNullVal1 from prepend_content.php -> First notification
|
||||
* @var string $chkTfNullVal2 from prepend_content.php -> Last notification
|
||||
* @var string $chkTfNullVal3 from prepend_content.php -> Notification interval
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var int $chkRegister from prepend_adm.php -> Register checkbox
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 23;
|
||||
$preContent = 'admin/serviceescalations.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'serviceescalation';
|
||||
$preTableName = 'tbl_serviceescalation';
|
||||
$preKeyField = 'config_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intRet3 = 0;
|
||||
$intRet4 = 0;
|
||||
$intRet5 = 0;
|
||||
$intRet6 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if (($chkModus != "add") && ($chkModus != "refresh")) $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define service escalation (serviceescalations.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if (($chkModus == "add") || ($chkModus == "refresh")) {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Refresh mode
|
||||
if ($chkModus == "refresh") {
|
||||
$_SESSION['refresh']['se_host'] = $chkMselValue1;
|
||||
$_SESSION['refresh']['se_hostgroup'] = $chkMselValue2;
|
||||
$_SESSION['refresh']['se_service'] = $chkMselValue3;
|
||||
$_SESSION['refresh']['se_contact'] = $chkMselValue4;
|
||||
$_SESSION['refresh']['se_contactgroup'] = $chkMselValue5;
|
||||
$_SESSION['refresh']['se_servicegroup'] = $chkMselValue6;
|
||||
} else {
|
||||
$_SESSION['refresh']['se_host'] = $chkMselValue1;
|
||||
$_SESSION['refresh']['se_hostgroup'] = $chkMselValue2;
|
||||
$_SESSION['refresh']['se_service'] = $chkMselValue3;
|
||||
$_SESSION['refresh']['se_contact'] = $chkMselValue4;
|
||||
$_SESSION['refresh']['se_contactgroup'] = $chkMselValue5;
|
||||
$_SESSION['refresh']['se_servicegroup'] = $chkMselValue6;
|
||||
if (isset($arrModifyData['host_name']) && ($arrModifyData['host_name'] > 0 )){
|
||||
$arrTemp = array();
|
||||
$strSQL = "SELECT `idSlave`, `exclude` FROM `tbl_lnkServiceescalationToHost` WHERE `idMaster` = ".$arrModifyData['id'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDC);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDC != 0) {
|
||||
foreach ($arrData AS $elem) {
|
||||
if ($elem['exclude'] == 1) {
|
||||
$arrTemp[] = "e".$elem['idSlave'];
|
||||
} else {
|
||||
$arrTemp[] = $elem['idSlave'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrModifyData['host_name'] == 2) $arrTemp[] = '*';
|
||||
$_SESSION['refresh']['se_host'] = $arrTemp;
|
||||
}
|
||||
if (isset($arrModifyData['hostgroup_name']) && ($arrModifyData['hostgroup_name'] > 0 )){
|
||||
$arrTemp = array();
|
||||
$strSQL = "SELECT `idSlave`, `exclude` FROM `tbl_lnkServiceescalationToHostgroup` WHERE `idMaster` = ".$arrModifyData['id'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDC);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intDC != 0) {
|
||||
|
||||
foreach ($arrData AS $elem) {
|
||||
if ($elem['exclude'] == 1) {
|
||||
$arrTemp[] = "e".$elem['idSlave'];
|
||||
} else {
|
||||
$arrTemp[] = $elem['idSlave'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrModifyData['hostgroup_name'] == 2) $arrTemp[] = '*';
|
||||
$_SESSION['refresh']['se_hostgroup'] = $arrTemp;
|
||||
}
|
||||
}
|
||||
// Process host selection field
|
||||
if (isset($arrModifyData['host_name'])) {$intFieldId = $arrModifyData['host_name'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue1) != 0)) {$strRefresh = 'se_host';} else {$strRefresh = '';}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti('tbl_host','host_name','host','tbl_lnkServiceescalationToHost',2,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['hostgroup_name'])) {$intFieldId = $arrModifyData['hostgroup_name'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue2) != 0)) {$strRefresh = 'se_hostgroup';} else {$strRefresh = '';}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti('tbl_hostgroup','hostgroup_name','hostgroup','tbl_lnkServiceescalationToHostgroup',2,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn2 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn1 != 0) && ($intReturn2 != 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process time period selection field
|
||||
if (isset($arrModifyData['escalation_period'])) {$intFieldId = $arrModifyData['escalation_period'];} else {$intFieldId = 0;}
|
||||
if ($chkModus == "refresh") $intFieldId = $chkSelValue1;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod','timeperiod_name','timeperiod',1,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process contact and contact group selection field
|
||||
if (isset($arrModifyData['contacts'])) {$intFieldId = $arrModifyData['contacts'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue4) != 0)) {$strRefresh = 'se_contact';} else {$strRefresh = '';}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti('tbl_contact','contact_name','contact','tbl_lnkServiceescalationToContact',2,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (isset($arrModifyData['contact_groups'])) {$intFieldId = $arrModifyData['contact_groups'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue5) != 0)) {$strRefresh = 'se_contactgroup';} else {$strRefresh = '';}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti('tbl_contactgroup','contactgroup_name','contactgroup','tbl_lnkServiceescalationToContactgroup',2,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn2 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn1 != 0) && ($intReturn2 != 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no contacts and contactgroups defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process services selection field
|
||||
if (isset($arrModifyData['service_description'])) {$intFieldId = $arrModifyData['service_description'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue3) != 0)) {$strRefresh = 'se_service';} else {$strRefresh = '';}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_service','service_description','service','tbl_lnkServiceescalationToService',2,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process servicegroup selection field
|
||||
if (isset($arrModifyData['servicegroup_name'])) {$intFieldId = $arrModifyData['servicegroup_name'];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && (count($chkMselValue6) != 0)) {$strRefresh = 'se_servicegroup';} else {$strRefresh = '';}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_servicegroup','servicegroup_name','servicegroup','tbl_lnkServiceescalationToServicegroup',0,$intFieldId,-9,$strRefresh);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
if ($chkModus == "refresh") $intFieldId = $chkSelAccGr;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
if ($chkModus == "refresh") {
|
||||
if ($chkTfNullVal1 != "NULL") $conttp->setVariable("DAT_FIRST_NOTIFICATION",$chkTfNullVal1);
|
||||
if ($chkTfNullVal2 != "NULL") $conttp->setVariable("DAT_LAST_NOTIFICATION",$chkTfNullVal2);
|
||||
if ($chkTfNullVal3 != "NULL") $conttp->setVariable("DAT_NOTIFICATION_INTERVAL",$chkTfNullVal3);
|
||||
if ($chkTfValue1 != "") $conttp->setVariable("DAT_CONFIG_NAME",$chkTfValue1);
|
||||
foreach(explode(",",$strEO) AS $elem) {
|
||||
$conttp->setVariable("DAT_EO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
if ($chkActive != 1) $conttp->setVariable("ACT_CHECKED","");
|
||||
if ($chkRegister != 1) $conttp->setVariable("REG_CHECKED","");
|
||||
if ($chkDataId != 0) {
|
||||
$conttp->setVariable("MODUS","modify");
|
||||
$conttp->setVariable("DAT_ID",$chkDataId);
|
||||
}
|
||||
// Insert data from database in "modify" mode
|
||||
} else if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
// Process option fields
|
||||
foreach(explode(",",$arrModifyData['escalation_options']) AS $elem) {
|
||||
$conttp->setVariable("DAT_EO".strtoupper($elem)."_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Config name'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Services'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
$mastertp->setVariable("DISABLE_SORT_2","disable");
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `service_description`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName`
|
||||
WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'process_field',40);
|
||||
if (!isset($intMselValue3)) {
|
||||
$intMselValue3 = 0;
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if (!isset($intMselValue4)) {
|
||||
$intMselValue4 = 0;
|
||||
}
|
||||
if (!isset($intMselValue5)) {
|
||||
$intMselValue5 = 0;
|
||||
}
|
||||
if (!isset($intMselValue6)) {
|
||||
$intMselValue6 = 0;
|
||||
}
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Data processing
|
||||
*/
|
||||
$strEO = substr($chkChbGr1a . $chkChbGr1b . $chkChbGr1c . $chkChbGr1d, 0, -1);
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `host_name`=$intMselValue1, "
|
||||
. "`service_description`=$intMselValue3, `hostgroup_name`=$intMselValue2, `contacts`=$intMselValue4, "
|
||||
. "`contact_groups`=$intMselValue5, `servicegroup_name`=$intMselValue6, `first_notification`=$chkTfNullVal1, "
|
||||
. "`last_notification`=$chkTfNullVal2, `notification_interval`=$chkTfNullVal3, "
|
||||
. "`escalation_period`='$chkSelValue1', `escalation_options`='$strEO', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if ((($intMselValue1 !== 0) || ($intMselValue2 !== 0) || ($intMselValue6 !== 0)) && (($intMselValue3 !== 0) ||
|
||||
($intMselValue6 !== 0)) && (($intMselValue5 !== 0) || ($intMselValue4 !== 0)) && ($chkTfNullVal1 !== 'NULL') &&
|
||||
($chkTfNullVal2 !== 'NULL') && ($chkTfNullVal3 !== 'NULL')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New service escalation inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Service escalation modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
}
|
||||
if (isset($intRet4) && ($intRet4 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue5 !== 0) {
|
||||
$intRet5 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue5
|
||||
);
|
||||
}
|
||||
if (isset($intRet5) && ($intRet5 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue6 !== 0) {
|
||||
$intRet6 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServiceescalationToServicegroup',
|
||||
$chkDataId,
|
||||
$chkMselValue6
|
||||
);
|
||||
}
|
||||
if (isset($intRet6) && ($intRet6 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToHost',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkServiceescalationToHost', $chkDataId);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToHostgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkServiceescalationToHostgroup', $chkDataId);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue3 !== 0) {
|
||||
$intRet3 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToService',
|
||||
$chkDataId,
|
||||
$chkMselValue3
|
||||
);
|
||||
} else {
|
||||
$intRet3 = $myDataClass->dataDeleteRelation('tbl_lnkServiceescalationToService', $chkDataId);
|
||||
}
|
||||
if (isset($intRet3) && ($intRet3 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue4 !== 0) {
|
||||
$intRet4 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToContact',
|
||||
$chkDataId,
|
||||
$chkMselValue4
|
||||
);
|
||||
} else {
|
||||
$intRet4 = $myDataClass->dataDeleteRelation('tbl_lnkServiceescalationToContact', $chkDataId);
|
||||
}
|
||||
if (isset($intRet4) && ($intRet4 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue5 !== 0) {
|
||||
$intRet5 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToContactgroup',
|
||||
$chkDataId,
|
||||
$chkMselValue5
|
||||
);
|
||||
} else {
|
||||
$intRet5 = $myDataClass->dataDeleteRelation(
|
||||
'tbl_lnkServiceescalationToContactgroup',
|
||||
$chkDataId
|
||||
);
|
||||
}
|
||||
if (isset($intRet5) && ($intRet5 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue6 !== 0) {
|
||||
$intRet6 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServiceescalationToServicegroup',
|
||||
$chkDataId,
|
||||
$chkMselValue6
|
||||
);
|
||||
} else {
|
||||
$intRet6 = $myDataClass->dataDeleteRelation(
|
||||
'tbl_lnkServiceescalationToServicegroup',
|
||||
$chkDataId
|
||||
);
|
||||
}
|
||||
if (isset($intRet6) && ($intRet6 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2 + $intRet3 + $intRet4 + $intRet5 + $intRet6) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
/*
|
||||
Update Import HASH
|
||||
*/
|
||||
$booReturn = $myDataClass->updateHash($preTableName, $chkDataId);
|
||||
if ($booReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if (($chkModus !== 'add') && ($chkModus !== 'refresh')) {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if (($chkModus === 'add') || ($chkModus === 'refresh')) {
|
||||
$conttp->setVariable('TITLE', translate('Define service escalation (serviceescalations.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Refresh mode */
|
||||
$_SESSION['refresh']['se_host'] = $chkMselValue1;
|
||||
$_SESSION['refresh']['se_hostgroup'] = $chkMselValue2;
|
||||
$_SESSION['refresh']['se_service'] = $chkMselValue3;
|
||||
$_SESSION['refresh']['se_contact'] = $chkMselValue4;
|
||||
$_SESSION['refresh']['se_contactgroup'] = $chkMselValue5;
|
||||
$_SESSION['refresh']['se_servicegroup'] = $chkMselValue6;
|
||||
if ($chkModus !== 'refresh') {
|
||||
if (isset($arrModifyData['host_name']) && ($arrModifyData['host_name'] > 0)) {
|
||||
$arrTemp = array();
|
||||
$strSQL = 'SELECT `idSlave`, `exclude` '
|
||||
. 'FROM `tbl_lnkServiceescalationToHost` WHERE `idMaster` = ' . $arrModifyData['id'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDC);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDC !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
if ($elem['exclude'] === 1) {
|
||||
$arrTemp[] = 'e' . $elem['idSlave'];
|
||||
} else {
|
||||
$arrTemp[] = $elem['idSlave'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrModifyData['host_name'] === 2) {
|
||||
$arrTemp[] = '*';
|
||||
}
|
||||
$_SESSION['refresh']['se_host'] = $arrTemp;
|
||||
}
|
||||
if (isset($arrModifyData['hostgroup_name']) && ($arrModifyData['hostgroup_name'] > 0)) {
|
||||
$arrTemp = array();
|
||||
$strSQL = 'SELECT `idSlave`, `exclude` '
|
||||
. 'FROM `tbl_lnkServiceescalationToHostgroup` WHERE `idMaster` = ' . $arrModifyData['id'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDC);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intDC !== 0) {
|
||||
foreach ($arrData as $elem) {
|
||||
if ($elem['exclude'] === 1) {
|
||||
$arrTemp[] = 'e' . $elem['idSlave'];
|
||||
} else {
|
||||
$arrTemp[] = $elem['idSlave'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrModifyData['hostgroup_name'] === 2) {
|
||||
$arrTemp[] = '*';
|
||||
}
|
||||
$_SESSION['refresh']['se_hostgroup'] = $arrTemp;
|
||||
}
|
||||
}
|
||||
$myVisClass->arrSession = $_SESSION;
|
||||
/* Process host selection field */
|
||||
$intFieldId = $arrModifyData['host_name'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue1) && (count($chkMselValue1) !== 0)) {
|
||||
$strRefresh = 'se_host';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_host',
|
||||
'host_name',
|
||||
'host',
|
||||
'tbl_lnkServiceescalationToHost',
|
||||
2,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['hostgroup_name'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue2) && (count($chkMselValue2) !== 0)) {
|
||||
$strRefresh = 'se_hostgroup';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
'tbl_hostgroup',
|
||||
'hostgroup_name',
|
||||
'hostgroup',
|
||||
'tbl_lnkServiceescalationToHostgroup',
|
||||
2,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intReturn2 !== 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no hosts and hostgroups defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process time period selection field */
|
||||
$intFieldId = $arrModifyData['escalation_period'] ?? 0;
|
||||
if ($chkModus === 'refresh') {
|
||||
$intFieldId = $chkSelValue1;
|
||||
}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_timeperiod', 'timeperiod_name', 'timeperiod', 1, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process contact and contact group selection field */
|
||||
$intFieldId = $arrModifyData['contacts'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue4) && (count($chkMselValue4) !== 0)) {
|
||||
$strRefresh = 'se_contact';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contact',
|
||||
'contact_name',
|
||||
'contact',
|
||||
'tbl_lnkServiceescalationToContact',
|
||||
2,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$intFieldId = $arrModifyData['contact_groups'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue5) && (count($chkMselValue5) !== 0)) {
|
||||
$strRefresh = 'se_contactgroup';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
'tbl_contactgroup',
|
||||
'contactgroup_name',
|
||||
'contactgroup',
|
||||
'tbl_lnkServiceescalationToContactgroup',
|
||||
2,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intReturn2 !== 0)) {
|
||||
$myVisClass->processMessage(translate('Attention, no contacts and contactgroups defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process services selection field */
|
||||
$intFieldId = $arrModifyData['service_description'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue3) && (count($chkMselValue3) !== 0)) {
|
||||
$strRefresh = 'se_service';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn = $myVisClass->parseSelectMulti(
|
||||
'tbl_service',
|
||||
'service_description',
|
||||
'service',
|
||||
'tbl_lnkServiceescalationToService',
|
||||
2,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process servicegroup selection field */
|
||||
$intFieldId = $arrModifyData['servicegroup_name'] ?? 0;
|
||||
if (($chkModus === 'refresh') && is_array($chkMselValue6) && (count($chkMselValue6) !== 0)) {
|
||||
$strRefresh = 'se_servicegroup';
|
||||
} else {
|
||||
$strRefresh = '';
|
||||
}
|
||||
$intReturn = $myVisClass->parseSelectMulti(
|
||||
'tbl_servicegroup',
|
||||
'servicegroup_name',
|
||||
'servicegroup',
|
||||
'tbl_lnkServiceescalationToServicegroup',
|
||||
0,
|
||||
$intFieldId,
|
||||
-9,
|
||||
$strRefresh
|
||||
);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
if ($chkModus === 'refresh') {
|
||||
$intFieldId = $chkSelAccGr;
|
||||
}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
if ($chkModus === 'refresh') {
|
||||
if ($chkTfNullVal1 !== 'NULL') {
|
||||
$conttp->setVariable('DAT_FIRST_NOTIFICATION', $chkTfNullVal1);
|
||||
}
|
||||
if ($chkTfNullVal2 !== 'NULL') {
|
||||
$conttp->setVariable('DAT_LAST_NOTIFICATION', $chkTfNullVal2);
|
||||
}
|
||||
if ($chkTfNullVal3 !== 'NULL') {
|
||||
$conttp->setVariable('DAT_NOTIFICATION_INTERVAL', $chkTfNullVal3);
|
||||
}
|
||||
if ($chkTfValue1 !== '') {
|
||||
$conttp->setVariable('DAT_CONFIG_NAME', $chkTfValue1);
|
||||
}
|
||||
foreach (explode(',', $strEO) as $elem) {
|
||||
$conttp->setVariable('DAT_EO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
if ($chkActive !== 1) {
|
||||
$conttp->setVariable('ACT_CHECKED');
|
||||
}
|
||||
if ($chkRegister !== 1) {
|
||||
$conttp->setVariable('REG_CHECKED');
|
||||
}
|
||||
if ($chkDataId !== 0) {
|
||||
$conttp->setVariable('MODUS', 'modify');
|
||||
$conttp->setVariable('DAT_ID', $chkDataId);
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
} elseif (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
/* Process option fields */
|
||||
foreach (explode(',', $arrModifyData['escalation_options']) as $elem) {
|
||||
$conttp->setVariable('DAT_EO' . strtoupper($elem) . '_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define service escalation (serviceescalations.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Config name'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Services'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
}
|
||||
$mastertp->setVariable('DISABLE_SORT_2', 'disable');
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `service_description`, `register`, `active`, `config_id`, "
|
||||
. "`access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN "
|
||||
. "($strAccess) $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData(
|
||||
$mastertp,
|
||||
$arrDataLines,
|
||||
$intDataCount,
|
||||
$intLineCount,
|
||||
$preKeyField,
|
||||
'process_field',
|
||||
40
|
||||
);
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,203 +1,313 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Service extended information definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 24;
|
||||
$preContent = "admin/serviceextinfo.tpl.htm";
|
||||
$preSearchSession = 'serviceextinfo';
|
||||
$preTableName = 'tbl_serviceextinfo';
|
||||
$preKeyField = 'host_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkSelValue1', `service_description`='$chkSelValue2', `notes`='$chkTfValue1', `notes_url`='$chkTfValue2',
|
||||
`action_url`='$chkTfValue3', `icon_image`='$chkTfValue4', `icon_image_alt`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkSelValue1 != 0) && ($chkSelValue2 != 0)) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New service extended information inserted:')." ".$chkSelValue1."::".$chkSelValue2);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Service extended information modified:')." ".$chkSelValue1."::".$chkSelValue2);
|
||||
//
|
||||
// Update Import HASH
|
||||
// ==================
|
||||
$booReturn = $myDataClass->updateHash($preTableName,$chkDataId);
|
||||
if ($booReturn != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Service extended information definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $chkDomainId from prepend_adm.php -> Configuration domain id
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strSearchWhere from prepend_content.php -> SQL WHERE addon for data search
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Notes
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Notes URL
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Action URL
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Icon image
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Icon image alt text
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Host
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Service description
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var int $chkRegister from prepend_adm.php -> Register checkbox
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 24;
|
||||
$preContent = 'admin/serviceextinfo.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'serviceextinfo';
|
||||
$preTableName = 'tbl_serviceextinfo';
|
||||
$preKeyField = 'host_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkSelValue1', `service_description`='$chkSelValue2', "
|
||||
. "`notes`='$chkTfValue1', `notes_url`='$chkTfValue2', `action_url`='$chkTfValue3', "
|
||||
. "`icon_image`='$chkTfValue4', `icon_image_alt`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkSelValue1 !== 0) && ($chkSelValue2 !== 0)) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New service extended information inserted:') . ' ' . $chkSelValue1 .
|
||||
'::' . $chkSelValue2);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Service extended information modified:') . ' ' . $chkSelValue1 .
|
||||
'::' . $chkSelValue2);
|
||||
}
|
||||
/*
|
||||
Update Import HASH
|
||||
*/
|
||||
$booReturn = $myDataClass->updateHash($preTableName, $chkDataId);
|
||||
if ($booReturn !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if (($chkModus != "add") && ($chkModus != "refresh")) $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define service extended information (serviceextinfo.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if (($chkModus == "add") || ($chkModus == "refresh")) {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Refresh mode
|
||||
if ($chkModus == "refresh") {
|
||||
$_SESSION['refresh']['se_host'] = $chkSelValue1;
|
||||
} else {
|
||||
$_SESSION['refresh']['se_host'] = $chkSelValue1;
|
||||
if (isset($arrModifyData[$preKeyField]) && ($arrModifyData[$preKeyField] != 0 )){
|
||||
$strSQL = "SELECT `$preKeyField` FROM `$preTableName` WHERE `id` = ".$arrModifyData['id'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDC);
|
||||
if ($intDC != 0) {
|
||||
$_SESSION['refresh']['se_host'] = $arrData[0][$preKeyField];
|
||||
}
|
||||
} else {
|
||||
$strSQL = "SELECT `id` FROM `tbl_host` WHERE `active`='1' AND `config_id`=$chkDomainId ORDER BY `$preKeyField`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDC);
|
||||
if ($intDC != 0) {
|
||||
$_SESSION['refresh']['se_host'] = $arrData[0]['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
// Process host selection field
|
||||
if (isset($arrModifyData[$preKeyField])) {$intFieldId = $arrModifyData[$preKeyField];} else {$intFieldId = 0;}
|
||||
if (($chkModus == "refresh") && ($chkSelValue1 != 0)) $intFieldId = $chkSelValue1;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_host',$preKeyField,'host',0,$intFieldId);
|
||||
if ($intReturn1 != 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process service selection field
|
||||
if (isset($arrModifyData['service_description'])) {$intFieldId = $arrModifyData['service_description'];} else {$intFieldId = 0;}
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_service','service_description','service_extinfo',0,$intFieldId);
|
||||
if ($intReturn1 != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
if ($chkModus == "refresh") {
|
||||
$conttp->setVariable("DAT_NOTES",$chkTfValue1);
|
||||
$conttp->setVariable("DAT_NOTES_URL",$chkTfValue2);
|
||||
$conttp->setVariable("DAT_ACTION_URL",$chkTfValue3);
|
||||
$conttp->setVariable("DAT_ICON_IMAGE",$chkTfValue4);
|
||||
$conttp->setVariable("DAT_ICON_IMAGE_ALT",$chkTfValue5);
|
||||
if ($chkActive != 1) $conttp->setVariable("ACT_CHECKED","");
|
||||
if ($chkRegister != 1) $conttp->setVariable("REG_CHECKED","");
|
||||
if ($chkDataId != 0) {
|
||||
$conttp->setVariable("MODUS","modify");
|
||||
$conttp->setVariable("DAT_ID",$chkDataId);
|
||||
}
|
||||
// Insert data from database in "modify" mode
|
||||
} else if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (($chkModus !== 'add') && ($chkModus !== 'refresh')) {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Hostname'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Service'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`tbl_host`.`$preKeyField` LIKE '%".$strSearchTxt."%' OR `$preTableName`.`notes` LIKE '%".$strSearchTxt."%'
|
||||
OR `$preTableName`.`notes_url` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `$preTableName`.`config_id`, `tbl_service`.`service_description` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id`
|
||||
LEFT JOIN `tbl_service` ON `$preTableName`.`service_description` = `tbl_service`.`id`
|
||||
WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `$preTableName`.`id`, `tbl_host`.`$preKeyField`, `tbl_service`.`service_description`, `$preTableName`.`notes`, `$preTableName`.`register`,
|
||||
`$preTableName`.`active`, `$preTableName`.`config_id`, `$preTableName`.`access_group` FROM `$preTableName`
|
||||
LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id`
|
||||
LEFT JOIN `tbl_service` ON `$preTableName`.`service_description` = `tbl_service`.`id`
|
||||
WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)
|
||||
$strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'));
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'service_description');
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if (($chkModus === 'add') || ($chkModus === 'refresh')) {
|
||||
$conttp->setVariable('TITLE', translate('Define service extended information (serviceextinfo.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Refresh mode */
|
||||
$_SESSION['refresh']['se_host'] = $chkSelValue1;
|
||||
if ($chkModus !== 'refresh') {
|
||||
if (isset($arrModifyData[$preKeyField]) && ($arrModifyData[$preKeyField] !== 0)) {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT `$preKeyField` FROM `$preTableName` WHERE `id` = " . $arrModifyData['id'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDC);
|
||||
if ($intDC !== 0) {
|
||||
$_SESSION['refresh']['se_host'] = $arrData[0][$preKeyField];
|
||||
}
|
||||
} else {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = 'SELECT `id` FROM `tbl_host` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId ORDER BY `$preKeyField`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDC);
|
||||
if ($intDC !== 0) {
|
||||
$_SESSION['refresh']['se_host'] = $arrData[0]['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
$myVisClass->arrSession = $_SESSION;
|
||||
/* Process host selection field */
|
||||
$intFieldId = $arrModifyData[$preKeyField] ?? 0;
|
||||
if (($chkModus === 'refresh') && ($chkSelValue1 !== 0)) {
|
||||
$intFieldId = $chkSelValue1;
|
||||
}
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_host', $preKeyField, 'host', 0, $intFieldId);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Attention, no hosts defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process service selection field */
|
||||
$intFieldId = $arrModifyData['service_description'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple(
|
||||
'tbl_service',
|
||||
'service_description',
|
||||
'service_extinfo',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
if ($chkModus === 'refresh') {
|
||||
$conttp->setVariable('DAT_NOTES', $chkTfValue1);
|
||||
$conttp->setVariable('DAT_NOTES_URL', $chkTfValue2);
|
||||
$conttp->setVariable('DAT_ACTION_URL', $chkTfValue3);
|
||||
$conttp->setVariable('DAT_ICON_IMAGE', $chkTfValue4);
|
||||
$conttp->setVariable('DAT_ICON_IMAGE_ALT', $chkTfValue5);
|
||||
if ($chkActive !== 1) {
|
||||
$conttp->setVariable('ACT_CHECKED');
|
||||
}
|
||||
if ($chkRegister !== 1) {
|
||||
$conttp->setVariable('REG_CHECKED');
|
||||
}
|
||||
if ($chkDataId !== 0) {
|
||||
$conttp->setVariable('MODUS', 'modify');
|
||||
$conttp->setVariable('DAT_ID', $chkDataId);
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
} elseif (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define service extended information (serviceextinfo.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Hostname'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Service'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process search string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`tbl_host`.`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `$preTableName`.`notes` "
|
||||
. "LIKE '%" . $strSearchTxt . "%' OR `$preTableName`.`notes_url` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `$preTableName`.`config_id`, `tbl_service`.`service_description` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` "
|
||||
. "LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id` "
|
||||
. "LEFT JOIN `tbl_service` ON `$preTableName`.`service_description` = `tbl_service`.`id` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `$preTableName`.`id`, `tbl_host`.`$preKeyField`, `tbl_service`.`service_description`, "
|
||||
. "`$preTableName`.`notes`, `$preTableName`.`register`, `$preTableName`.`active`, `$preTableName`.`config_id`, "
|
||||
. "`$preTableName`.`access_group` FROM `$preTableName` "
|
||||
. "LEFT JOIN `tbl_host` ON `$preTableName`.`$preKeyField` = `tbl_host`.`id` "
|
||||
. "LEFT JOIN `tbl_service` ON `$preTableName`.`service_description` = `tbl_service`.`id` "
|
||||
. "WHERE $strDomainWhere $strSearchWhere AND `$preTableName`.`access_group` IN ($strAccess) $strOrderString "
|
||||
. "LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData(
|
||||
$mastertp,
|
||||
$arrDataLines,
|
||||
$intDataCount,
|
||||
$intLineCount,
|
||||
$preKeyField,
|
||||
'service_description'
|
||||
);
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,183 +1,347 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin servicegroup definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 11;
|
||||
$preContent = "admin/servicegroups.tpl.htm";
|
||||
$preSearchSession = 'servicegroup';
|
||||
$preTableName = 'tbl_servicegroup';
|
||||
$preKeyField = 'servicegroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, `servicegroup_members`=$intMselValue2,
|
||||
`notes`='$chkTfValue3', `notes_url`='$chkTfValue4', `action_url`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "") && (($intMselValue1 != 0) || ($intVersion == 3))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New service group inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Service group modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkServicegroupToService",$chkDataId,$chkMselValue1,1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkServicegroupToServicegroup",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkServicegroupToService",$chkDataId,$chkMselValue1,1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkServicegroupToService",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkServicegroupToServicegroup",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkServicegroupToServicegroup",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2) != 0) $strInfoMessage = "";
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Servicegroup definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var int $chkListId from prepend_adm.php -> Actual dataset id (list view)
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Servicegroup name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Servicegroup description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Notes
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Notes URL
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Action URL
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Members
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Servicegroup members
|
||||
* @var int $intMselValue1 from prepend_content.php -> Members multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Servicegroup members multiselect status value
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 11;
|
||||
$preContent = 'admin/servicegroups.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'servicegroup';
|
||||
$preTableName = 'tbl_servicegroup';
|
||||
$preKeyField = 'servicegroup_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
$strDBWarning = '';
|
||||
$intDataWarning = 0;
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
$intNoTime = 0;
|
||||
/*
|
||||
Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Define service groups (servicegroups.cfg)'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process service selection field
|
||||
$intReturn = 0;
|
||||
if (isset($arrModifyData['members'])) {$intFieldId = $arrModifyData['members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti('tbl_service','service_description','service_members','tbl_lnkServicegroupToService',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
if (($intReturn != 0) && ($intVersion != 3)) {
|
||||
$myVisClass->processMessage(translate('Attention, no services defined!'),$strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
// Process service group selection field
|
||||
if (isset($arrModifyData['servicegroup_members'])) {$intFieldId = $arrModifyData['servicegroup_members'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti($preTableName,$preKeyField,'servicegroups','tbl_lnkServicegroupToServicegroup',0,$intFieldId,$chkListId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process access group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Service group'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process search string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%' OR `notes` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `members`=$intMselValue1, "
|
||||
. "`servicegroup_members`=$intMselValue2, `notes`='$chkTfValue3', `notes_url`='$chkTfValue4', "
|
||||
. "`action_url`='$chkTfValue5', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '') && (($intMselValue1 !== 0) || ($intVersion >= 3))) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New service group inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Service group modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServicegroupToService',
|
||||
$chkDataId,
|
||||
$chkMselValue1,
|
||||
1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkServicegroupToServicegroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServicegroupToService',
|
||||
$chkDataId,
|
||||
$chkMselValue1,
|
||||
1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkServicegroupToService', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkServicegroupToServicegroup',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkServicegroupToServicegroup', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$conttp->setVariable('TITLE', translate('Define service groups (servicegroups.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process service selection field */
|
||||
$intFieldId = $arrModifyData['members'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
'tbl_service',
|
||||
'service_description',
|
||||
'service_members',
|
||||
'tbl_lnkServicegroupToService',
|
||||
0,
|
||||
$intFieldId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if (($intReturn1 !== 0) && ($intVersion < 3)) {
|
||||
$myVisClass->processMessage(translate('Attention, no services defined!'), $strDBWarning);
|
||||
$intDataWarning = 1;
|
||||
}
|
||||
/* Process service group selection field */
|
||||
$intFieldId = $arrModifyData['servicegroup_members'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
$preTableName,
|
||||
$preKeyField,
|
||||
'servicegroups',
|
||||
'tbl_lnkServicegroupToServicegroup',
|
||||
0,
|
||||
$intFieldId,
|
||||
$chkListId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process access group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
// Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Define service groups (servicegroups.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Service group'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Process search string and filter */
|
||||
$strSearchWhere = '';
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere .= "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%' "
|
||||
. "OR `notes` LIKE '%" . $strSearchTxt . "%') ";
|
||||
}
|
||||
if ($_SESSION['filter'][$preSearchSession]['registered'] !== '') {
|
||||
$intRegistered = (int)$_SESSION['filter'][$preSearchSession]['registered'];
|
||||
if ($intRegistered === 1) {
|
||||
$strSearchWhere .= "AND `register` = '1' ";
|
||||
}
|
||||
if ($intRegistered === 2) {
|
||||
$strSearchWhere .= "AND `register` = '0' ";
|
||||
}
|
||||
$mastertp->setVariable('SEL_REGFILTER_' . $intRegistered . '_SELECTED', 'selected');
|
||||
}
|
||||
if ($_SESSION['filter'][$preSearchSession]['active'] !== '') {
|
||||
$intActivated = (int)$_SESSION['filter'][$preSearchSession]['active'];
|
||||
if ($intActivated === 1) {
|
||||
$strSearchWhere .= "AND `active` = '1' ";
|
||||
}
|
||||
if ($intActivated === 2) {
|
||||
$strSearchWhere .= "AND `active` = '0' ";
|
||||
}
|
||||
$mastertp->setVariable('SEL_ACTIVEFILTER_' . $intActivated . '_SELECTED', 'selected');
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL1 = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere "
|
||||
. "AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL1, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL2 = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess) "
|
||||
. "$strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL2, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
1420
admin/services.php
1420
admin/services.php
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,261 +1,351 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Settings configuration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 38;
|
||||
$preContent = "admin/settings.tpl.htm";
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Process initial values
|
||||
// ======================
|
||||
if (!isset($_POST['tfValue1'])) $chkTfValue1 = $SETS['path']['tempdir'];
|
||||
if (!isset($_POST['tfValue2'])) $chkTfValue2 = $SETS['data']['encoding'];
|
||||
if (!isset($_POST['tfValue3'])) $chkTfValue3 = $SETS['db']['server'];
|
||||
if (!isset($_POST['tfValue4'])) $chkTfValue4 = $SETS['db']['port'];
|
||||
if (!isset($_POST['tfValue5'])) $chkTfValue5 = $SETS['db']['database'];
|
||||
if (!isset($_POST['tfValue6'])) $chkTfValue6 = $SETS['db']['username'];
|
||||
if (!isset($_POST['tfValue7'])) $chkTfValue7 = $SETS['db']['password'];
|
||||
if (!isset($_POST['tfValue8'])) $chkTfValue8 = $SETS['security']['logofftime'];
|
||||
if (!isset($_POST['tfValue9'])) $chkTfValue9 = $SETS['common']['pagelines'];
|
||||
if (!isset($_POST['tfValue10'])) $chkTfValue10 = $SETS['network']['proxyserver'];
|
||||
if (!isset($_POST['tfValue11'])) $chkTfValue11 = $SETS['network']['proxyuser'];
|
||||
if (!isset($_POST['tfValue12'])) $chkTfValue12 = $SETS['network']['proxypasswd'];
|
||||
if (!isset($_POST['selValue3'])) $chkSelValue3 = $SETS['security']['wsauth'];
|
||||
if (!isset($_POST['selValue4'])) $chkSelValue4 = $SETS['common']['seldisable'];
|
||||
if (!isset($_POST['radValue1'])) $chkRadValue1 = $SETS['common']['tplcheck'];
|
||||
if (!isset($_POST['radValue2'])) $chkRadValue2 = $SETS['common']['updcheck'];
|
||||
if (!isset($_POST['radValue3'])) $chkRadValue3 = $SETS['network']['proxy'];
|
||||
//
|
||||
// Save changes
|
||||
// ============
|
||||
if (isset($_POST) && isset($_POST['selValue1'])) {
|
||||
//
|
||||
// Write settings to database
|
||||
// ==========================
|
||||
if ($chkSelValue1 == 2) {$strProtocol = "https";} else {$strProtocol = "http";}
|
||||
$strLocale = $myDBClass->getFieldData("SELECT `locale` FROM `tbl_language` WHERE `id`='".$chkSelValue2."'");
|
||||
if ($strLocale == "") $strLocale = "en_GB";
|
||||
// Check Proxy via curl
|
||||
if (!function_exists('curl_init')) {
|
||||
$myVisClass->processMessage(translate('Curl module not loaded, Proxy will be deactivated!'),$strErrorMessage);
|
||||
$chkRadValue3 = 0;
|
||||
}
|
||||
// Check base paths
|
||||
$strBaseURL = str_replace("admin/settings.php","",$_SERVER["PHP_SELF"]);
|
||||
$strBasePath = substr(realpath('.'),0,-5);
|
||||
$arrSQL = "";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$strProtocol."' WHERE `category` = 'path' AND `name`='protocol'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue1."' WHERE `category` = 'path' AND `name`='tempdir'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$strBaseURL."' WHERE `category` = 'path' AND `name`='base_url'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$strBasePath."' WHERE `category` = 'path' AND `name`='base_path'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$strLocale."' WHERE `category` = 'data' AND `name`='locale'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue2."' WHERE `category` = 'data' AND `name`='encoding'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue8."' WHERE `category` = 'security' AND `name`='logofftime'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkSelValue3."' WHERE `category` = 'security' AND `name`='wsauth'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue9."' WHERE `category` = 'common' AND `name`='pagelines'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkSelValue4."' WHERE `category` = 'common' AND `name`='seldisable'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkRadValue1."' WHERE `category` = 'common' AND `name`='tplcheck'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkRadValue2."' WHERE `category` = 'common' AND `name`='updcheck'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkRadValue3."' WHERE `category` = 'network' AND `name`='proxy'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue10."' WHERE `category` = 'network' AND `name`='proxyserver'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue11."' WHERE `category` = 'network' AND `name`='proxyuser'";
|
||||
$arrSQL[] = "UPDATE `tbl_settings` SET `value` = '".$chkTfValue12."' WHERE `category` = 'network' AND `name`='proxypasswd'";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
foreach ($arrSQL AS $elem) {
|
||||
$booReturn = $myDBClass->insertData($elem);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('An error occured while writing settings to database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
// Write db settings to file
|
||||
if (is_writable($strBasePath."config/settings.php")) {
|
||||
$filSettings = fopen($strBasePath."config/settings.php","w");
|
||||
if ($filSettings) {
|
||||
fwrite($filSettings,"<?php\n");
|
||||
fwrite($filSettings,"exit;\n");
|
||||
fwrite($filSettings,"?>\n");
|
||||
fwrite($filSettings,";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings,";\n");
|
||||
fwrite($filSettings,"; NagiosQL\n");
|
||||
fwrite($filSettings,";\n");
|
||||
fwrite($filSettings,";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings,";\n");
|
||||
fwrite($filSettings,"; Project : NagiosQL\n");
|
||||
fwrite($filSettings,"; Component: Database Configuration\n");
|
||||
fwrite($filSettings,"; Website : http://www.nagiosql.org\n");
|
||||
fwrite($filSettings,"; Date : ".date("F j, Y, g:i a")."\n");
|
||||
fwrite($filSettings,"; Version : ".$setFileVersion."\n");
|
||||
fwrite($filSettings,";\n");
|
||||
fwrite($filSettings,";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings,"[db]\n");
|
||||
fwrite($filSettings,"server = ".$chkTfValue3."\n");
|
||||
fwrite($filSettings,"port = ".$chkTfValue4."\n");
|
||||
fwrite($filSettings,"database = ".$chkTfValue5."\n");
|
||||
fwrite($filSettings,"username = ".$chkTfValue6."\n");
|
||||
fwrite($filSettings,"password = ".$chkTfValue7."\n");
|
||||
fwrite($filSettings,"[path]\n");
|
||||
fwrite($filSettings,"base_url = ".$strBaseURL."\n");
|
||||
fwrite($filSettings,"base_path = ".$strBasePath."\n");
|
||||
fclose($filSettings);
|
||||
// Activate new language settings
|
||||
$arrLocale = explode(".",$strLocale);
|
||||
$strDomain = $arrLocale[0];
|
||||
$loc = setlocale(LC_ALL, $strLocale, $strLocale.".utf-8", $strLocale.".utf-8", $strLocale.".utf8", "en_GB", "en_GB.utf-8", "en_GB.utf8");
|
||||
if (!isset($loc)) {
|
||||
$myVisClass->processMessage(translate("Error in setting the correct locale, please report this error with the associated output of 'locale -a'"),$strErrorMessage);
|
||||
}
|
||||
putenv("LC_ALL=".$strLocale.".utf-8");
|
||||
putenv("LANG=".$strLocale.".utf-8");
|
||||
bindtextdomain($strLocale, $strBasePath."config/locale");
|
||||
bind_textdomain_codeset($strLocale, $chkTfValue2);
|
||||
textdomain($strLocale);
|
||||
$myVisClass->processMessage(translate("Settings were changed"),$strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate("An error occured while writing settings.php, please check permissions!"),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($strBasePath."config/settings.php ".translate("is not writeable, please check permissions!"),$strErrorMessage);
|
||||
}
|
||||
Project : NagiosQL
|
||||
Component : NagiosQL settings
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $prePageKey from prepend_adm.php -> Menu group id
|
||||
* @var array $SETS Settings array
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Temporary directory
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Encoding
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Database server
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Database server port
|
||||
* @var string $chkTfValue5 from prepend_content.php -> Database server db name
|
||||
* @var string $chkTfValue6 from prepend_content.php -> Database server user
|
||||
* @var string $chkTfValue7 from prepend_content.php -> Database server password
|
||||
* @var string $chkTfValue8 from prepend_content.php -> Logoff time
|
||||
* @var string $chkTfValue9 from prepend_content.php -> Data lines per page
|
||||
* @var string $chkTfValue10 from prepend_content.php -> Proxy server
|
||||
* @var string $chkTfValue11 from prepend_content.php -> Proxy user
|
||||
* @var string $chkTfValue12 from prepend_content.php -> Proxy password
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Server protocol
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Standard language
|
||||
* @var int $chkSelValue3 from prepend_content.php -> Webserver authentication
|
||||
* @var int $chkSelValue4 from prepend_content.php -> Multiselect method
|
||||
* @var int $chkRadValue1 from prepend_content.php -> Template warnings
|
||||
* @var int $chkRadValue2 from prepend_content.php -> Update check
|
||||
* @var int $chkRadValue3 from prepend_content.php -> Enable proxy server
|
||||
* @var int $chkRadValue4 from prepend_content.php -> Show dependencies
|
||||
* @var array $arrDescription from fieldvars.php -> Translated common strings
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 38;
|
||||
$preContent = 'admin/settings.htm.tpl';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$arrSQL = array();
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Process initial values
|
||||
*/
|
||||
if (filter_input(INPUT_POST, 'tfValue1') === null) {
|
||||
$chkTfValue1 = $SETS['path']['tempdir'];
|
||||
}
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Configure Settings'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
foreach($arrDescription AS $elem) {
|
||||
$conttp->setVariable($elem['name'],$elem['string']);
|
||||
if (filter_input(INPUT_POST, 'tfValue2') === null) {
|
||||
$chkTfValue2 = $SETS['data']['encoding'];
|
||||
}
|
||||
$conttp->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$conttp->setVariable("LANG_DESCRIPTION",translate('Change your current NagiosQL settings (e.g. Database user, Language).'));
|
||||
//
|
||||
// Path settings
|
||||
// =============
|
||||
$conttp->setVariable("PATH",translate('Path'));
|
||||
$conttp->setVariable("TEMPDIR_NAME",translate('Temporary Directory'));
|
||||
$conttp->setVariable("TEMPDIR_VALUE",htmlspecialchars($chkTfValue1, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("PROTOCOL_NAME",translate('Server protocol'));
|
||||
$conttp->setVariable(strtoupper($SETS['path']['protocol'])."_SELECTED","selected");
|
||||
//
|
||||
// Data settings
|
||||
// =============
|
||||
$conttp->setVariable("DATA",translate('Language'));
|
||||
$conttp->setVariable("LOCALE",translate('Language'));
|
||||
// Process language selection field
|
||||
$strSQL = "SELECT * FROM `tbl_language` WHERE `active`='1' ORDER BY `id`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrData,$intDataCount);
|
||||
if ($booReturn && ($intDataCount != 0)) {
|
||||
foreach($arrData AS $elem) {
|
||||
$conttp->setVariable("LANGUAGE_ID",$elem['id']);
|
||||
$conttp->setVariable("LANGUAGE_NAME",translate($elem['language']));
|
||||
if ($elem['locale'] == $SETS['data']['locale']) $conttp->setVariable("LANGUAGE_SELECTED","selected");
|
||||
$conttp->parse("language");
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue3') === null) {
|
||||
$chkTfValue3 = $SETS['db']['server'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue4') === null) {
|
||||
$chkTfValue4 = $SETS['db']['port'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue5') === null) {
|
||||
$chkTfValue5 = $SETS['db']['database'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue6') === null) {
|
||||
$chkTfValue6 = $SETS['db']['username'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue7') === null) {
|
||||
$chkTfValue7 = $SETS['db']['password'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue8') === null) {
|
||||
$chkTfValue8 = $SETS['security']['logofftime'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue9') === null) {
|
||||
$chkTfValue9 = $SETS['common']['pagelines'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue10') === null) {
|
||||
$chkTfValue10 = $SETS['network']['proxyserver'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue11') === null) {
|
||||
$chkTfValue11 = $SETS['network']['proxyuser'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'tfValue12') === null) {
|
||||
$chkTfValue12 = $SETS['network']['proxypasswd'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'selValue3') === null) {
|
||||
$chkSelValue3 = (int)$SETS['security']['wsauth'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'selValue4') === null) {
|
||||
$chkSelValue4 = (int)$SETS['common']['seldisable'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'radValue1') === null) {
|
||||
$chkRadValue1 = (int)$SETS['common']['tplcheck'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'radValue2') === null) {
|
||||
$chkRadValue2 = (int)$SETS['common']['updcheck'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'radValue3') === null) {
|
||||
$chkRadValue3 = (int)$SETS['network']['proxy'];
|
||||
}
|
||||
if (filter_input(INPUT_POST, 'radValue4') === null) {
|
||||
$chkRadValue4 = (int)$SETS['performance']['parents'];
|
||||
}
|
||||
/*
|
||||
Save changes
|
||||
*/
|
||||
if (filter_input(INPUT_POST, 'selValue1')) {
|
||||
/*
|
||||
Write settings to database
|
||||
*/
|
||||
if ($chkSelValue1 === 2) {
|
||||
$strProtocol = 'https';
|
||||
} else {
|
||||
$strProtocol = 'http';
|
||||
}
|
||||
$strLocale = $myDBClass->getFieldData("SELECT `locale` FROM `tbl_language` WHERE `id`='" . $chkSelValue2 . "'");
|
||||
if ($strLocale === '') {
|
||||
$strLocale = 'en_GB';
|
||||
}
|
||||
$SETS['path']['protocol'] = $strProtocol;
|
||||
$SETS['data']['locale'] = $strLocale;
|
||||
/* Check Proxy via curl */
|
||||
if (!function_exists('curl_init')) {
|
||||
$myVisClass->processMessage(translate('Curl module not loaded, Proxy will be deactivated!'), $strErrorMessage);
|
||||
$chkRadValue3 = 0;
|
||||
}
|
||||
/* Check base paths */
|
||||
$strSQLBase = "UPDATE `tbl_settings` SET `value`='%s' WHERE `category`='%s' AND `name`='%s'";
|
||||
$arrSQL[] = sprintf($strSQLBase, $strProtocol, 'path', 'protocol');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue1, 'path', 'tempdir');
|
||||
$arrSQL[] = sprintf($strSQLBase, $preRelPath, 'path', 'base_url');
|
||||
$arrSQL[] = sprintf($strSQLBase, $preBasePath, 'path', 'base_path');
|
||||
$arrSQL[] = sprintf($strSQLBase, $strLocale, 'data', 'locale');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue2, 'data', 'encoding');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue8, 'security', 'logofftime');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkSelValue3, 'security', 'wsauth');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue9, 'common', 'pagelines');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkSelValue4, 'common', 'seldisable');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkRadValue1, 'common', 'tplcheck');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkRadValue2, 'common', 'updcheck');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkRadValue3, 'network', 'proxy');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue10, 'network', 'proxyserver');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue11, 'network', 'proxyuser');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkTfValue12, 'network', 'proxypasswd');
|
||||
$arrSQL[] = sprintf($strSQLBase, $chkRadValue4, 'performance', 'parents');
|
||||
foreach ($arrSQL as $elem) {
|
||||
$booReturn = $myDBClass->insertData($elem);
|
||||
if ($booReturn === false) {
|
||||
$myVisClass->processMessage(
|
||||
translate('An error occured while writing settings to database:'),
|
||||
$strErrorMessage
|
||||
);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
/* Write db settings to file */
|
||||
if (is_writable($preBasePath . 'config/settings.php')) {
|
||||
$filSettings = fopen($preBasePath . 'config/settings.php', 'wb');
|
||||
if ($filSettings) {
|
||||
fwrite($filSettings, "<?php\n");
|
||||
fwrite($filSettings, "exit;\n");
|
||||
fwrite($filSettings, "?>\n");
|
||||
fwrite($filSettings, ";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings, ";\n");
|
||||
fwrite($filSettings, "; NagiosQL\n");
|
||||
fwrite($filSettings, ";\n");
|
||||
fwrite($filSettings, ";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings, ";\n");
|
||||
fwrite($filSettings, "; Project : NagiosQL\n");
|
||||
fwrite($filSettings, "; Component: Database Configuration\n");
|
||||
fwrite($filSettings, "; Website : https://sourceforge.net/projects/nagiosql/\n");
|
||||
fwrite($filSettings, '; Date : ' . date('F j, Y, g:i a') . "\n");
|
||||
fwrite($filSettings, '; Version : ' . $setFileVersion . "\n");
|
||||
fwrite($filSettings, ";\n");
|
||||
fwrite($filSettings, ";///////////////////////////////////////////////////////////////////////////////\n");
|
||||
fwrite($filSettings, "[db]\n");
|
||||
fwrite($filSettings, "type = 'mysqli'\n");
|
||||
fwrite($filSettings, 'server = \'' . $chkTfValue3 . "'\n");
|
||||
fwrite($filSettings, 'port = \'' . $chkTfValue4 . "'\n");
|
||||
fwrite($filSettings, 'database = \'' . $chkTfValue5 . "'\n");
|
||||
fwrite($filSettings, 'username = \'' . $chkTfValue6 . "'\n");
|
||||
fwrite($filSettings, 'password = \'' . $chkTfValue7 . "'\n");
|
||||
fwrite($filSettings, "[path]\n");
|
||||
fwrite($filSettings, 'base_url = \'' . $preRelPath . "'\n");
|
||||
fwrite($filSettings, 'base_path = \'' . $preBasePath . "'\n");
|
||||
fclose($filSettings);
|
||||
/* Activate new language settings */
|
||||
$arrLocale = explode('.', $strLocale);
|
||||
$strDomain = $arrLocale[0];
|
||||
$loc = setlocale(
|
||||
LC_ALL,
|
||||
$strLocale,
|
||||
$strLocale . '.utf-8',
|
||||
$strLocale . '.utf-8',
|
||||
$strLocale . '.utf8',
|
||||
'en_GB',
|
||||
'en_GB.utf-8',
|
||||
'en_GB.utf8'
|
||||
);
|
||||
if (!isset($loc)) {
|
||||
$myVisClass->processMessage(translate('Error setting the correct locale. Please report this error '
|
||||
. "with the associated output of 'locale -a'"), $strErrorMessage);
|
||||
}
|
||||
putenv('LC_ALL=' . $strLocale . '.utf-8');
|
||||
putenv('LANG=' . $strLocale . '.utf-8');
|
||||
bindtextdomain($strLocale, $preBasePath . 'config/locale');
|
||||
bind_textdomain_codeset($strLocale, $chkTfValue2);
|
||||
textdomain($strLocale);
|
||||
$myVisClass->processMessage(translate('Settings were changed'), $strInfoMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('An error occured while writing settings.php. Please '
|
||||
. 'check permissions!'), $strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage($preBasePath . 'config/settings.php ' . translate('is not writeable, please '
|
||||
. 'check permissions!'), $strErrorMessage);
|
||||
}
|
||||
}
|
||||
/*
|
||||
Start content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Configure Settings'));
|
||||
foreach ($arrDescription as $elem) {
|
||||
$conttp->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
$conttp->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$conttp->setVariable('LANG_DESCRIPTION', translate('Change your current NagiosQL settings (e.g. Database user, '
|
||||
. 'Language).'));
|
||||
/* Path settings */
|
||||
$conttp->setVariable('PATH', translate('Path'));
|
||||
$conttp->setVariable('TEMPDIR_NAME', translate('Temporary Directory'));
|
||||
$conttp->setVariable('TEMPDIR_VALUE', htmlspecialchars($chkTfValue1, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('PROTOCOL_NAME', translate('Server protocol'));
|
||||
$conttp->setVariable(strtoupper($SETS['path']['protocol']) . '_SELECTED', 'selected');
|
||||
/* Data settings */
|
||||
$conttp->setVariable('DATA', translate('Language'));
|
||||
$conttp->setVariable('LOCALE', translate('Language'));
|
||||
/* Process language selection field */
|
||||
$strSQL = "SELECT * FROM `tbl_language` WHERE `active`='1' ORDER BY `id`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrData, $intDataCount);
|
||||
if ($booReturn && ($intDataCount !== 0)) {
|
||||
foreach ($arrData as $elem) {
|
||||
$conttp->setVariable('LANGUAGE_ID', $elem['id']);
|
||||
$conttp->setVariable('LANGUAGE_NAME', translate($elem['language']));
|
||||
if ($elem['locale'] === $SETS['data']['locale']) {
|
||||
$conttp->setVariable('LANGUAGE_SELECTED', 'selected');
|
||||
}
|
||||
/** @noinspection DisconnectedForeachInstructionInspection */
|
||||
$conttp->parse('language');
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
$conttp->setVariable("ENCODING_NAME",translate('Encoding'));
|
||||
$conttp->setVariable("ENCODING_VALUE",htmlspecialchars($chkTfValue2, ENT_QUOTES, 'utf-8'));
|
||||
//
|
||||
// Database settings
|
||||
// =================
|
||||
$conttp->setVariable("DB",translate('Database'));
|
||||
$conttp->setVariable("SERVER_NAME",translate('MySQL Server'));
|
||||
$conttp->setVariable("SERVER_VALUE",htmlspecialchars($chkTfValue3, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("SERVER_PORT",translate('MySQL Server Port'));
|
||||
$conttp->setVariable("PORT_VALUE",htmlspecialchars($chkTfValue4, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("DATABASE_NAME",translate('Database name'));
|
||||
$conttp->setVariable("DATABASE_VALUE",htmlspecialchars($chkTfValue5, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("USERNAME_NAME",translate('Database user'));
|
||||
$conttp->setVariable("USERNAME_VALUE",htmlspecialchars($chkTfValue6, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("PASSWORD_NAME",translate('Database password'));
|
||||
$conttp->setVariable("PASSWORD_VALUE",htmlspecialchars($chkTfValue7, ENT_QUOTES, 'utf-8'));
|
||||
//
|
||||
// Security settings
|
||||
// =================
|
||||
$conttp->setVariable("SECURITY",translate('Security'));
|
||||
$conttp->setVariable("LOGOFFTIME_NAME",translate('Session auto logoff time'));
|
||||
$conttp->setVariable("LOGOFFTIME_VALUE",htmlspecialchars($chkTfValue8, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("WSAUTH_NAME",translate('Authentication type'));
|
||||
$conttp->setVariable("WSAUTH_".$chkSelValue3."_SELECTED","selected");
|
||||
//
|
||||
// Common settings
|
||||
// ===============
|
||||
$conttp->setVariable("COMMON",translate('Common'));
|
||||
$conttp->setVariable("PAGELINES_NAME",translate('Data lines per page'));
|
||||
$conttp->setVariable("PAGELINES_VALUE",htmlspecialchars($chkTfValue9, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("SELDISABLE_NAME",translate('Selection method'));
|
||||
$conttp->setVariable("SELDISABLE_".$chkSelValue4."_SELECTED","selected");
|
||||
//
|
||||
// Template Check
|
||||
// ==============
|
||||
$conttp->setVariable("TEMPLATE_CHECK", translate('Template warn message'));
|
||||
$conttp->setVariable("LANG_ENABLE", translate('Enable'));
|
||||
$conttp->setVariable("LANG_DISABLE", translate('Disable'));
|
||||
$conttp->setVariable("TPL_CHECK_".$chkRadValue1."_CHECKED","checked");
|
||||
//
|
||||
// Online version check
|
||||
// ====================
|
||||
$conttp->setVariable("CLASS_NAME_1","elementHide");
|
||||
$conttp->setVariable("CLASS_NAME_2","elementHide");
|
||||
$conttp->setVariable("UPDATE_CHECK", translate('Online version check'));
|
||||
$conttp->setVariable("UPD_CHECK_".$chkRadValue2."_CHECKED","checked");
|
||||
if ($chkRadValue2 == 1) $conttp->setVariable("CLASS_NAME_1","elementShow");
|
||||
//
|
||||
// Online update proxy settings
|
||||
// ============================
|
||||
$conttp->setVariable("UPD_PROXY_CHECK", translate('Proxyserver'));
|
||||
$conttp->setVariable("UPD_PROXY_".$chkRadValue3."_CHECKED","checked");
|
||||
if (($chkRadValue3 == 1) && ($chkRadValue2 == 1)) $conttp->setVariable("CLASS_NAME_2","elementShow");
|
||||
$conttp->setVariable("UPD_PROXY_SERVER", translate('Proxy Address'));
|
||||
$conttp->setVariable("UPD_PROXY_SERVER_VALUE",htmlspecialchars($chkTfValue10, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("UPD_PROXY_USERNAME", translate('Proxy Username (optional)'));
|
||||
$conttp->setVariable("UPD_PROXY_USERNAME_VALUE",htmlspecialchars($chkTfValue11, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable("UPD_PROXY_PASSWORD", translate('Proxy Password (optional)'));
|
||||
$conttp->setVariable("UPD_PROXY_PASSWORD_VALUE",htmlspecialchars($chkTfValue12, ENT_QUOTES, 'utf-8'));
|
||||
//
|
||||
// Requirements of form
|
||||
// ====================
|
||||
$conttp->setVariable("LANG_SAVE", translate('Save'));
|
||||
$conttp->setVariable("LANG_ABORT", translate('Abort'));
|
||||
$conttp->setVariable("LANG_REQUIRED", translate('required'));
|
||||
$conttp->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$conttp->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
//
|
||||
// Check access rights for adding new objects
|
||||
// ==========================================
|
||||
if ($myVisClass->checkAccGroup($prePageKey,'write') != 0) $conttp->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
$conttp->parse("settingssite");
|
||||
$conttp->show("settingssite");
|
||||
//
|
||||
// Footer ausgeben
|
||||
// ===============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->setVariable('ENCODING_NAME', translate('Encoding'));
|
||||
$conttp->setVariable('ENCODING_VALUE', htmlspecialchars($chkTfValue2, ENT_QUOTES, 'utf-8'));
|
||||
/* Database settings */
|
||||
$conttp->setVariable('DB', translate('Database'));
|
||||
$conttp->setVariable('SERVER_NAME', translate('MySQL Server'));
|
||||
$conttp->setVariable('SERVER_VALUE', htmlspecialchars($chkTfValue3, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('SERVER_PORT', translate('MySQL Server Port'));
|
||||
$conttp->setVariable('PORT_VALUE', htmlspecialchars($chkTfValue4, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('DATABASE_NAME', translate('Database name'));
|
||||
$conttp->setVariable('DATABASE_VALUE', htmlspecialchars($chkTfValue5, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('USERNAME_NAME', translate('Database user'));
|
||||
$conttp->setVariable('USERNAME_VALUE', htmlspecialchars($chkTfValue6, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('PASSWORD_NAME', translate('Database password'));
|
||||
$conttp->setVariable('PASSWORD_VALUE', htmlspecialchars($chkTfValue7, ENT_QUOTES, 'utf-8'));
|
||||
/* Security settings */
|
||||
$conttp->setVariable('SECURITY', translate('Security'));
|
||||
$conttp->setVariable('LOGOFFTIME_NAME', translate('Session auto logoff time'));
|
||||
$conttp->setVariable('LOGOFFTIME_VALUE', htmlspecialchars($chkTfValue8, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('WSAUTH_NAME', translate('Authentication type'));
|
||||
$conttp->setVariable('WSAUTH_' . $chkSelValue3 . '_SELECTED', 'selected');
|
||||
/* Common settings */
|
||||
$conttp->setVariable('COMMON', translate('Common'));
|
||||
$conttp->setVariable('PAGELINES_NAME', translate('Data lines per page'));
|
||||
$conttp->setVariable('PAGELINES_VALUE', htmlspecialchars($chkTfValue9, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('SELDISABLE_NAME', translate('Selection method'));
|
||||
$conttp->setVariable('SELDISABLE_' . $chkSelValue4 . '_SELECTED', 'selected');
|
||||
/* Template Check */
|
||||
$conttp->setVariable('TEMPLATE_CHECK', translate('Template warn message'));
|
||||
$conttp->setVariable('LANG_ENABLE', translate('Enable'));
|
||||
$conttp->setVariable('LANG_DISABLE', translate('Disable'));
|
||||
$conttp->setVariable('TPL_CHECK_' . $chkRadValue1 . '_CHECKED', 'checked');
|
||||
/* Online version check */
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementHide');
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementHide');
|
||||
$conttp->setVariable('UPDATE_CHECK', translate('Online version check'));
|
||||
$conttp->setVariable('UPD_CHECK_' . $chkRadValue2 . '_CHECKED', 'checked');
|
||||
if ($chkRadValue2 === 1) {
|
||||
$conttp->setVariable('CLASS_NAME_1', 'elementShow');
|
||||
}
|
||||
/* Online update proxy settings */
|
||||
$conttp->setVariable('UPD_PROXY_CHECK', translate('Proxyserver'));
|
||||
$conttp->setVariable('UPD_PROXY_' . $chkRadValue3 . '_CHECKED', 'checked');
|
||||
if (($chkRadValue3 === 1) && ($chkRadValue2 === 1)) {
|
||||
echo "da";
|
||||
$conttp->setVariable('CLASS_NAME_2', 'elementShow');
|
||||
}
|
||||
$conttp->setVariable('UPD_PROXY_SERVER', translate('Proxy Address'));
|
||||
$conttp->setVariable('UPD_PROXY_SERVER_VALUE', htmlspecialchars($chkTfValue10, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('UPD_PROXY_USERNAME', translate('Proxy Username (optional)'));
|
||||
$conttp->setVariable('UPD_PROXY_USERNAME_VALUE', htmlspecialchars($chkTfValue11, ENT_QUOTES, 'utf-8'));
|
||||
$conttp->setVariable('UPD_PROXY_PASSWORD', translate('Proxy Password (optional)'));
|
||||
$conttp->setVariable('UPD_PROXY_PASSWORD_VALUE', htmlspecialchars($chkTfValue12, ENT_QUOTES, 'utf-8'));
|
||||
/* Performance options */
|
||||
$conttp->setVariable('PERFORMANCE', translate('Performance options'));
|
||||
$conttp->setVariable('SHOW_PARENTS', translate('Show object parents'));
|
||||
$conttp->setVariable('PAR_CHECK_' . $chkRadValue4 . '_CHECKED', 'checked');
|
||||
/* Requirements of form */
|
||||
$conttp->setVariable('LANG_SAVE', translate('Save'));
|
||||
$conttp->setVariable('LANG_ABORT', translate('Abort'));
|
||||
$conttp->setVariable('LANG_REQUIRED', translate('required'));
|
||||
$conttp->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
$conttp->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
/* Check access rights for adding new objects */
|
||||
if ($myVisClass->checkAccountGroup($prePageKey, 'write') !== 0) {
|
||||
$conttp->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
$conttp->parse('settingssite');
|
||||
$conttp->show('settingssite');
|
||||
/*
|
||||
Footer ausgeben
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
@@ -1,89 +1,121 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Specials overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 5;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Misc commands'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('To define host and service dependencies, host and service escalations as well as host and service additional data.'));
|
||||
$conttp->setVariable("STATISTICS",translate('Statistical datas'));
|
||||
$conttp->setVariable("TYPE",translate('Group'));
|
||||
$conttp->setVariable("ACTIVE",translate('Active'));
|
||||
$conttp->setVariable("INACTIVE",translate('Inactive'));
|
||||
//
|
||||
// Include statistical data
|
||||
// ========================
|
||||
// Get read access groups
|
||||
$strAccess = $myVisClass->getAccGroups('read');
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=19")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Host dependencies'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostdependency` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostdependency` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Specials overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var int $chkDomainId from prepend_adm.php
|
||||
* @var string $setFileVersion from prepend_adm.php
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 5;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Misc commands'));
|
||||
$conttp->parse('header');
|
||||
$conttp->show('header');
|
||||
$conttp->setVariable('DESC', translate('Define host and service dependencies, host and service escalations as well ' .
|
||||
'as host and service additional data.'));
|
||||
$conttp->setVariable('STATISTICS', translate('Statistical datas'));
|
||||
$conttp->setVariable('TYPE', translate('Group'));
|
||||
$conttp->setVariable('ACTIVE', translate('Active'));
|
||||
$conttp->setVariable('INACTIVE', translate('Inactive'));
|
||||
/*
|
||||
Include statistical data
|
||||
*/
|
||||
/* Get read access groups */
|
||||
$strAccess = $myVisClass->getAccessGroups('read');
|
||||
$intAccessGrp19 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=19');
|
||||
$intAccessGrp20 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=20');
|
||||
$intAccessGrp21 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=21');
|
||||
$intAccessGrp22 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=22');
|
||||
$intAccessGrp23 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=23');
|
||||
$intAccessGrp24 = (int)$myDBClass->getFieldData('SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=24');
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp19, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Host dependencies'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostdependency` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostdependency` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=20")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Host escalations'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostescalation` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostescalation` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp20, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Host escalations'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostescalation` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostescalation` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=21")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Host ext. info'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostextinfo` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_hostextinfo` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp21, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Host ext. info'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostextinfo` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_hostextinfo` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=22")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Service dependencies'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicedependency` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_servicedependency` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp22, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Service dependencies'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicedependency` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_servicedependency` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=23")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Service escalations'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_serviceescalation` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_serviceescalation` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp23, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Service escalations'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_serviceescalation` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_serviceescalation` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
if ($myVisClass->checkAccGroup($myDBClass->getFieldData("SELECT `mnuGrpId` FROM `tbl_menu` WHERE `mnuId`=24")+0,'read') == 0) {
|
||||
$conttp->setVariable("NAME",translate('Service ext. info'));
|
||||
$conttp->setVariable("ACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_serviceextinfo` WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable("INACT_COUNT",$myDBClass->getFieldData("SELECT count(*) FROM `tbl_serviceextinfo` WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse("statisticrow");
|
||||
if ($myVisClass->checkAccountGroup($intAccessGrp24, 'read') === 0) {
|
||||
$conttp->setVariable('NAME', translate('Service ext. info'));
|
||||
$conttp->setVariable('ACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_serviceextinfo` '
|
||||
. "WHERE `active`='1' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->setVariable('INACT_COUNT', $myDBClass->getFieldData('SELECT count(*) FROM `tbl_serviceextinfo` '
|
||||
. "WHERE `active`='0' AND `config_id`=$chkDomainId AND `access_group` IN ($strAccess)"));
|
||||
$conttp->parse('statisticrow');
|
||||
}
|
||||
$conttp->parse("statistics");
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
$conttp->parse('statistics');
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
1292
admin/support.php
1292
admin/support.php
File diff suppressed because it is too large
Load Diff
@@ -1,249 +1,317 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Template definition list
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkDataId = isset($_GET['dataId']) ? htmlspecialchars($_GET['dataId'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkMode = isset($_GET['mode']) ? htmlspecialchars($_GET['mode'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkKey = isset($_GET['key']) ? htmlspecialchars($_GET['key'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkDef = isset($_GET['def']) ? htmlspecialchars($_GET['def'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkType = isset($_GET['type']) ? htmlspecialchars($_GET['type'], ENT_QUOTES, 'utf-8') : "";
|
||||
if ($chkDataId == "") $chkDataId = 0;
|
||||
if (get_magic_quotes_gpc() == 0) {
|
||||
$chkDef = addslashes($chkDef);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Template definition list
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
$chkLinkTab = '';
|
||||
$chkPreTab = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$chkDataId = filter_input(INPUT_GET, 'dataId', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkMode = filter_input(INPUT_GET, 'mode');
|
||||
$chkKey = filter_input(INPUT_GET, 'key');
|
||||
$chkDef = filter_input(INPUT_GET, 'def');
|
||||
$chkType = filter_input(INPUT_GET, 'type');
|
||||
if ($chkDataId === '') {
|
||||
$chkDataId = 0;
|
||||
}
|
||||
$arrDefinition = explode("::",$chkDef);
|
||||
if ($chkType == "") {
|
||||
exit;
|
||||
$arrDefinition = explode('::', $chkDef);
|
||||
if ($chkType === '') {
|
||||
exit;
|
||||
}
|
||||
if ($chkType == "host") {
|
||||
$chkLinkTab = "tbl_lnkHostToHosttemplate";
|
||||
$chkPreTab = "host";
|
||||
if ($chkType === 'host') {
|
||||
$chkLinkTab = 'tbl_lnkHostToHosttemplate';
|
||||
$chkPreTab = 'host';
|
||||
}
|
||||
if ($chkType == "hosttemplate") {
|
||||
$chkLinkTab = "tbl_lnkHosttemplateToHosttemplate";
|
||||
$chkPreTab = "host";
|
||||
if ($chkType === 'hosttemplate') {
|
||||
$chkLinkTab = 'tbl_lnkHosttemplateToHosttemplate';
|
||||
$chkPreTab = 'host';
|
||||
}
|
||||
if ($chkType == "service") {
|
||||
$chkLinkTab = "tbl_lnkServiceToServicetemplate";
|
||||
$chkPreTab = "service";
|
||||
if ($chkType === 'service') {
|
||||
$chkLinkTab = 'tbl_lnkServiceToServicetemplate';
|
||||
$chkPreTab = 'service';
|
||||
}
|
||||
if ($chkType == "servicetemplate") {
|
||||
$chkLinkTab = "tbl_lnkServicetemplateToServicetemplate";
|
||||
$chkPreTab = "service";
|
||||
if ($chkType === 'servicetemplate') {
|
||||
$chkLinkTab = 'tbl_lnkServicetemplateToServicetemplate';
|
||||
$chkPreTab = 'service';
|
||||
}
|
||||
if ($chkType == "contact") {
|
||||
$chkLinkTab = "tbl_lnkContactToContacttemplate";
|
||||
$chkPreTab = "contact";
|
||||
if ($chkType === 'contact') {
|
||||
$chkLinkTab = 'tbl_lnkContactToContacttemplate';
|
||||
$chkPreTab = 'contact';
|
||||
}
|
||||
if ($chkType == "contacttemplate") {
|
||||
$chkLinkTab = "tbl_lnkContacttemplateToContacttemplate";
|
||||
$chkPreTab = "contact";
|
||||
if ($chkType === 'contacttemplate') {
|
||||
$chkLinkTab = 'tbl_lnkContacttemplateToContacttemplate';
|
||||
$chkPreTab = 'contact';
|
||||
}
|
||||
//
|
||||
// Get data
|
||||
// ========
|
||||
if ($chkLinkTab != "") {
|
||||
$strSQL = "SELECT * FROM `".$chkLinkTab."` WHERE `idMaster` = $chkDataId ORDER BY `idSort`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
//
|
||||
// Store data to session
|
||||
// ============================
|
||||
if ($chkMode == "") {
|
||||
$_SESSION['templatedefinition'] = "";
|
||||
if ($booReturn && ($intDataCount != 0)) {
|
||||
foreach ($arrDataLines AS $elem) {
|
||||
if ($elem['idTable'] == 1) {
|
||||
$strSQL2 = "SELECT `template_name` FROM `tbl_".$chkPreTab."template` WHERE `id` = ".$elem['idSlave'];
|
||||
$strSQL3 = "SELECT `active` FROM `tbl_".$chkPreTab."template` WHERE `id` = ".$elem['idSlave'];
|
||||
} else {
|
||||
$strSQL2 = "SELECT `name` FROM `tbl_".$chkPreTab."` WHERE `id` = ".$elem['idSlave'];
|
||||
$strSQL3 = "SELECT `active` FROM `tbl_".$chkPreTab."` WHERE `id` = ".$elem['idSlave'];
|
||||
}
|
||||
$arrTemp['idSlave'] = $elem['idSlave'];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $elem['idTable'];
|
||||
$arrTemp['idSort'] = $elem['idSort'];
|
||||
$arrTemp['active'] = $myDBClass->getFieldData($strSQL3)+0;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Get data
|
||||
*/
|
||||
if ($chkLinkTab !== '') {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = 'SELECT * FROM `' . $chkLinkTab . "` WHERE `idMaster` = $chkDataId ORDER BY `idSort`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
/* Store data to session */
|
||||
if ($chkMode === null) {
|
||||
$_SESSION['templatedefinition'] = array();
|
||||
$arrTemp = array();
|
||||
if ($booReturn && ($intDataCount !== 0)) {
|
||||
foreach ($arrDataLines as $elem) {
|
||||
if ((int)$elem['idTable'] === 1) {
|
||||
$strSQL2 = 'SELECT `template_name` '
|
||||
. 'FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $elem['idSlave'];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL3 = 'SELECT `active` FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $elem['idSlave'];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL4 = 'SELECT `config_id` FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $elem['idSlave'];
|
||||
} else {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL2 = 'SELECT `name` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $elem['idSlave'];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL3 = 'SELECT `active` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $elem['idSlave'];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL4 = 'SELECT `config_id` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $elem['idSlave'];
|
||||
}
|
||||
$arrTemp['idSlave'] = $elem['idSlave'];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $elem['idTable'];
|
||||
$arrTemp['idSort'] = $elem['idSort'];
|
||||
$arrTemp['active'] = (int)$myDBClass->getFieldData($strSQL3);
|
||||
$arrTemp['config_id'] = (int)$myDBClass->getFieldData($strSQL4);
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Add mode
|
||||
// ========
|
||||
if ($chkMode == "add") {
|
||||
if ($arrDefinition[1] == 1) {
|
||||
$strSQL2 = "SELECT `template_name` FROM `tbl_".$chkPreTab."template` WHERE `id` = ".$arrDefinition[0];
|
||||
$strSQL3 = "SELECT `active` FROM `tbl_".$chkPreTab."template` WHERE `id` = ".$arrDefinition[0];
|
||||
} else {
|
||||
$strSQL2 = "SELECT `name` FROM `tbl_".$chkPreTab."` WHERE `id` = ".$arrDefinition[0];
|
||||
$strSQL3 = "SELECT `active` FROM `tbl_".$chkPreTab."` WHERE `id` = ".$arrDefinition[0];
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if (($elem['idSlave'] == $arrDefinition[0]) && ($elem['idTable'] == $arrDefinition[1]) && ($elem['status'] == 0)) {
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck == 0) {
|
||||
$arrTemp['idSlave'] = $arrDefinition[0];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $arrDefinition[1];
|
||||
$arrTemp['idSort'] = 0;
|
||||
$arrTemp['status'] = 0;
|
||||
$arrTemp['active'] = $myDBClass->getFieldData($strSQL3)+0;
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['idSlave'] = $arrDefinition[0];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $arrDefinition[1];
|
||||
$arrTemp['idSort'] = 0;
|
||||
$arrTemp['status'] = 0;
|
||||
$arrTemp['active'] = $myDBClass->getFieldData($strSQL3)+0;
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
/*
|
||||
Add mode
|
||||
*/
|
||||
if ($chkMode === 'add') {
|
||||
$arrTemp = array();
|
||||
if ((int)$arrDefinition[1] === 1) {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL2 = 'SELECT `template_name` FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $arrDefinition[0];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL3 = 'SELECT `active` FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $arrDefinition[0];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL4 = 'SELECT `config_id` FROM `tbl_' . $chkPreTab . 'template` WHERE `id` = ' . $arrDefinition[0];
|
||||
} else {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL2 = 'SELECT `name` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $arrDefinition[0];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL3 = 'SELECT `active` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $arrDefinition[0];
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL4 = 'SELECT `config_id` FROM `tbl_' . $chkPreTab . '` WHERE `id` = ' . $arrDefinition[0];
|
||||
}
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if ((int)($elem['idSlave'] === $arrDefinition[0]) && ((int)$elem['idTable'] === (int)$arrDefinition[1]) &&
|
||||
((int)$elem['status'] === 0)) {
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck === 0) {
|
||||
$arrTemp['idSlave'] = $arrDefinition[0];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $arrDefinition[1];
|
||||
$arrTemp['idSort'] = 0;
|
||||
$arrTemp['status'] = 0;
|
||||
$arrTemp['active'] = (int)$myDBClass->getFieldData($strSQL3);
|
||||
$arrTemp['config_id'] = (int)$myDBClass->getFieldData($strSQL4);
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['idSlave'] = $arrDefinition[0];
|
||||
$arrTemp['definition'] = addslashes($myDBClass->getFieldData($strSQL2));
|
||||
$arrTemp['idTable'] = $arrDefinition[1];
|
||||
$arrTemp['idSort'] = 0;
|
||||
$arrTemp['status'] = 0;
|
||||
$arrTemp['active'] = (int)$myDBClass->getFieldData($strSQL3);
|
||||
$arrTemp['config_id'] = (int)$myDBClass->getFieldData($strSQL4);
|
||||
$_SESSION['templatedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Deletion mode
|
||||
// =============
|
||||
if ($chkMode == "del") {
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
foreach ($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if (($elem['idSlave'] == $arrDefinition[0]) && ($elem['idTable'] == $arrDefinition[1]) && ($elem['status'] == 0)) {
|
||||
$_SESSION['templatedefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Deletion mode
|
||||
*/
|
||||
if ($chkMode === 'del' && isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if (((int)$elem['idSlave'] === (int)$arrDefinition[0]) && ((int)$elem['idTable'] === (int)$arrDefinition[1]) &&
|
||||
((int)$elem['status'] === 0)) {
|
||||
$_SESSION['templatedefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Sort mode
|
||||
// =========
|
||||
if ($chkMode == "sortup") {
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
$arrTemp = "";
|
||||
$arrWait = "";
|
||||
$intNow = 0;
|
||||
foreach ($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if ($key != ($chkKey-1)) {
|
||||
$arrTemp[] = $elem;
|
||||
if ($intNow == 1) {
|
||||
$intNow = 0;
|
||||
$arrTemp[] = $arrWait;
|
||||
}
|
||||
} else {
|
||||
$arrWait = $elem;
|
||||
$intNow = 1;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
}
|
||||
/*
|
||||
Sort mode
|
||||
*/
|
||||
if ($chkMode === 'sortup') {
|
||||
$chkKey = (int)$chkKey;
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
||||
(count($_SESSION['templatedefinition']) > 1) && ($chkKey !== 0)) {
|
||||
$arrTemp = array();
|
||||
$arrWait = array();
|
||||
$intNow = 0;
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if ($key !== ($chkKey - 1)) {
|
||||
$arrTemp[] = $elem;
|
||||
if ($intNow === 1) {
|
||||
$intNow = 0;
|
||||
$arrTemp[] = $arrWait;
|
||||
}
|
||||
} else {
|
||||
$arrWait = $elem;
|
||||
$intNow = 1;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
}
|
||||
}
|
||||
if ($chkMode == "sortdown") {
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
$arrTemp = "";
|
||||
$arrWait = "";
|
||||
$intNow = 0;
|
||||
foreach ($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if ($key != $chkKey) {
|
||||
$arrTemp[] = $elem;
|
||||
if ($intNow == 1) {
|
||||
$intNow = 0;
|
||||
$arrTemp[] = $arrWait;
|
||||
}
|
||||
} else {
|
||||
$arrWait = $elem;
|
||||
$intNow = 1;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
}
|
||||
if ($chkMode === 'sortdown') {
|
||||
$chkKey = (int)$chkKey;
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
||||
(count($_SESSION['templatedefinition']) > 1) && ($chkKey < (count($_SESSION['templatedefinition']) - 1))) {
|
||||
$arrTemp = array();
|
||||
$arrWait = array();
|
||||
$intNow = 0;
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if ($key !== $chkKey) {
|
||||
$arrTemp[] = $elem;
|
||||
if ($intNow === 1) {
|
||||
$intNow = 0;
|
||||
$arrTemp[] = $arrWait;
|
||||
}
|
||||
} else {
|
||||
$arrWait = $elem;
|
||||
$intNow = 1;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Clean up data structure
|
||||
// =======================
|
||||
/*
|
||||
Clean up data structure
|
||||
*/
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition'])) {
|
||||
$arrTemp = "";
|
||||
foreach ($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
$arrTemp[] = $elem;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
$arrTemp = array();
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$arrTemp[] = $elem;
|
||||
}
|
||||
}
|
||||
$_SESSION['templatedefinition'] = $arrTemp;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/templatedefinitions.php?dataId=<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=del&def="+key;
|
||||
}
|
||||
function doUp(key,elem) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/templatedefinitions.php?dataId=<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=sortup&key="+key+"def="+elem;
|
||||
}
|
||||
function doDown(key,elem) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/templatedefinitions.php?dataId=<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=sortdown&key="+key+"def="+elem;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url'] ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
const base = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/templatedefinitions.php?dataId=";
|
||||
|
||||
function doDel(key) {
|
||||
let link;
|
||||
link = base + "<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=del&def=" + key;
|
||||
document.location.href = link;
|
||||
}
|
||||
|
||||
function doUp(key, elem) {
|
||||
let link;
|
||||
link = base + "<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=sortup&key=" + key + "def=" + elem;
|
||||
document.location.href = link;
|
||||
}
|
||||
|
||||
function doDown(key, elem) {
|
||||
let link;
|
||||
link = base + "<?php echo $chkDataId; ?>&type=<?php echo $chkType; ?>&mode=sortdown&key=" + key + "def=" + elem;
|
||||
document.location.href = link;
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) && (count($_SESSION['templatedefinition']) != 0)) {
|
||||
foreach($_SESSION['templatedefinition'] AS $key => $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px;"><?php echo htmlspecialchars(stripslashes($elem['definition']),ENT_COMPAT,'UTF-8'); if ($elem['active'] == 0) echo " [inactive]"; ?></td>
|
||||
<td class="tablerow" align="right"><img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/up.gif" width="18" height="18" alt="<?php echo translate('Up');?>" title="<?php echo translate('Up');?>" onClick="doUp('<?php echo $key; ?>','<?php echo $elem['idSlave']."::".$elem['idTable']; ?>')" style="cursor:pointer"> <img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/down.gif" width="18" height="18" alt="<?php echo translate('Down'); ?>" title="<?php echo translate('Down'); ?>" onClick="doDown('<?php echo $key; ?>','<?php echo $elem['idSlave']."::".$elem['idTable']; ?>')" style="cursor:pointer"> <img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18" alt="<?php echo translate('Delete'); ?>" title="<?php echo translate('Delete'); ?>" onClick="doDel('<?php echo $elem['idSlave']."::".$elem['idTable']; ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['templatedefinition']) && is_array($_SESSION['templatedefinition']) &&
|
||||
(count($_SESSION['templatedefinition']) !== 0)) {
|
||||
foreach ($_SESSION['templatedefinition'] as $key => $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px;"><?php
|
||||
echo htmlspecialchars(stripslashes($elem['definition']), ENT_COMPAT, 'UTF-8');
|
||||
if ($elem['active'] === 0) {
|
||||
echo ' [inactive]';
|
||||
}
|
||||
if ($elem['config_id'] === 0) {
|
||||
echo ' [common]';
|
||||
}?></td>
|
||||
<td class="tablerow" align="right"><img src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/up.gif" width="18" height="18" alt="<?php
|
||||
echo translate('Up'); ?>" title="<?php echo translate('Up'); ?>" onClick="doUp('<?php
|
||||
echo $key; ?>','<?php
|
||||
echo $elem['idSlave'] . '::' . $elem['idTable']; ?>')" style="cursor:pointer"> <img
|
||||
src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/down.gif" width="18" height="18"
|
||||
alt="<?php
|
||||
echo translate('Down'); ?>" title="<?php echo translate('Down'); ?>"
|
||||
onClick="doDown('<?php
|
||||
echo $key; ?>','<?php
|
||||
echo $elem['idSlave'] . '::' . $elem['idTable']; ?>')" style="cursor:pointer"> <img
|
||||
src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18"
|
||||
alt="<?php
|
||||
echo translate('Delete'); ?>" title="<?php echo translate('Delete'); ?>"
|
||||
onClick="doDel('<?php
|
||||
echo $elem['idSlave'] . '::' . $elem['idTable']; ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -1,183 +1,202 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Admin time definition list
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preAccess = 1;
|
||||
//$prePageId = 16;
|
||||
$preNoMain = 1;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkTipId = (isset($_GET['tipId']) && ($_GET['tipId'] != "")) ? htmlspecialchars($_GET['tipId'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkMode = isset($_GET['mode']) ? htmlspecialchars($_GET['mode'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkDef = isset($_GET['def']) ? html_entity_decode($_GET['def']) : "";
|
||||
$chkRange = isset($_GET['range']) ? html_entity_decode($_GET['range']) : "";
|
||||
$chkId = isset($_GET['id']) ? htmlspecialchars($_GET['id'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkVersion = isset($_GET['version']) ? htmlspecialchars($_GET['version'], ENT_QUOTES, 'utf-8') : 0;
|
||||
if (get_magic_quotes_gpc() == 0) {
|
||||
$chkDef = addslashes($chkDef);
|
||||
$chkRange = addslashes($chkRange);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Time definition list
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$chkTipId = filter_input(INPUT_GET, 'tipId', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkVersion = filter_input(INPUT_GET, 'version', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkMode = filter_input(INPUT_GET, 'mode');
|
||||
$chkDef = filter_input(INPUT_GET, 'def');
|
||||
$chkRange = filter_input(INPUT_GET, 'range');
|
||||
$chkId = filter_input(INPUT_GET, 'id');
|
||||
/*
|
||||
Get data
|
||||
*/
|
||||
$strSQL = "SELECT * FROM `tbl_timedefinition` WHERE `tipId`=$chkTipId ORDER BY `definition`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
/*
|
||||
Store data to session
|
||||
*/
|
||||
if ($chkMode === null) {
|
||||
$_SESSION['timedefinition'] = array();
|
||||
if ($booReturn && ($intDataCount !== 0)) {
|
||||
foreach ($arrDataLines as $elem) {
|
||||
$arrTemp['id'] = $elem['id'];
|
||||
$arrTemp['definition'] = addslashes($elem['definition']);
|
||||
$arrTemp['range'] = addslashes($elem['range']);
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Get data
|
||||
// ========
|
||||
$strSQL = "SELECT * FROM `tbl_timedefinition` WHERE `tipId` = $chkTipId ORDER BY `definition`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
//
|
||||
// Store data to session
|
||||
// ============================
|
||||
if ($chkMode == "") {
|
||||
$_SESSION['timedefinition'] = "";
|
||||
if ($booReturn && ($intDataCount != 0)) {
|
||||
foreach ($arrDataLines AS $elem) {
|
||||
$arrTemp['id'] = $elem['id'];
|
||||
$arrTemp['definition'] = addslashes($elem['definition']);
|
||||
$arrTemp['range'] = addslashes($elem['range']);
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
/*
|
||||
Add mode
|
||||
*/
|
||||
if ($chkMode === 'add') {
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['timedefinition'] as $key => $elem) {
|
||||
if (($elem['definition'] === $chkDef) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['timedefinition'][$key]['definition'] = $chkDef;
|
||||
$_SESSION['timedefinition'][$key]['range'] = $chkRange;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck === 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Add mode
|
||||
// =========
|
||||
if ($chkMode == "add") {
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['timedefinition'] AS $key => $elem) {
|
||||
if (($elem['definition'] == $chkDef) && ($elem['status'] == 0)) {
|
||||
$_SESSION['timedefinition'][$key]['definition'] = $chkDef;
|
||||
$_SESSION['timedefinition'][$key]['range'] = $chkRange;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck == 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['timedefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Deletion mode
|
||||
// =============
|
||||
if ($chkMode == "del") {
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition'])) {
|
||||
foreach ($_SESSION['timedefinition'] AS $key => $elem) {
|
||||
if (($elem['definition'] == $chkDef) && ($elem['status'] == 0)) {
|
||||
$_SESSION['timedefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Deletion mode
|
||||
*/
|
||||
if ($chkMode === 'del' && isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition'])) {
|
||||
foreach ($_SESSION['timedefinition'] as $key => $elem) {
|
||||
if (($elem['definition'] === $chkDef) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['timedefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
function doEdit(key,range) {
|
||||
<?php
|
||||
if ($chkVersion == 3) {
|
||||
?>
|
||||
parent.document.frmDetail.txtTimedefinition.value = decodeURIComponent(key);
|
||||
parent.document.frmDetail.txtTimerange2.value = decodeURIComponent(range);
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
if (key == "monday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 0;
|
||||
} else if (key == "tuesday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 1;
|
||||
} else if (key == "wednesday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 2;
|
||||
} else if (key == "thursday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 3;
|
||||
} else if (key == "friday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 4;
|
||||
} else if (key == "saturday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 5;
|
||||
} else if (key == "sunday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 6;
|
||||
}
|
||||
parent.document.frmDetail.txtTimerange1.value = range;
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
}
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/timedefinitions.php?tipId=<?php echo $chkTipId; ?>&mode=del&def="+key;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.tablerow {
|
||||
border-bottom:1px solid #009900;
|
||||
font-size:12px;
|
||||
height:20px;
|
||||
padding-top:2px;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
}
|
||||
</style>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<!--suppress JSUnresolvedVariable -->
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
function doEdit(key, range) {
|
||||
<?php
|
||||
if ($chkVersion >= 3) {
|
||||
?>
|
||||
parent.document.frmDetail.txtTimedefinition.value = decodeURIComponent(key);
|
||||
parent.document.frmDetail.txtTimerange2.value = decodeURIComponent(range);
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
if (key === "monday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 0;
|
||||
} else if (key === "tuesday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 1;
|
||||
} else if (key === "wednesday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 2;
|
||||
} else if (key === "thursday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 3;
|
||||
} else if (key === "friday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 4;
|
||||
} else if (key === "saturday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 5;
|
||||
} else if (key === "sunday") {
|
||||
parent.document.frmDetail.selTimedefinition.selectedIndex = 6;
|
||||
}
|
||||
parent.document.frmDetail.txtTimerange1.value = range;
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
}
|
||||
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>admin/timedefinitions.php?tipId=<?php
|
||||
echo $chkTipId; ?>&version=<?php echo $chkVersion; ?>&mode=del&def=" + key;
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
<style type="text/css">
|
||||
.tablerow {
|
||||
border-bottom: 1px solid #009900;
|
||||
font-size: 12px;
|
||||
height: 20px;
|
||||
padding-top: 2px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition']) && (count($_SESSION['timedefinition']) != 0)) {
|
||||
foreach($_SESSION['timedefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo htmlentities(stripslashes($elem['definition']),ENT_COMPAT,'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo htmlentities(stripslashes($elem['range']),ENT_COMPAT,'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php echo $_SESSION['SETS']['path']['base_url'];?>images/edit.gif" width="18" height="18" alt="<?php echo translate('Modify');?>" title="<?php echo translate('Modify'); ?>" onClick="doEdit('<?php echo rawurlencode(stripslashes($elem['definition']));?>','<?php echo rawurlencode(stripslashes($elem['range'])); ?>')" style="cursor:pointer"> <img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18" alt="<?php echo translate('Delete');?>" title="<?php echo translate('Delete');?>" onClick="doDel('<?php echo rawurlencode(stripslashes($elem['definition'])); ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition']) &&
|
||||
(count($_SESSION['timedefinition']) !== 0)) {
|
||||
foreach ($_SESSION['timedefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php
|
||||
echo htmlentities(stripslashes($elem['definition']), ENT_COMPAT, 'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php
|
||||
echo htmlentities(stripslashes($elem['range']), ENT_COMPAT, 'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/edit.gif" width="18" height="18" alt="<?php
|
||||
echo translate('Modify'); ?>" title="<?php echo translate('Modify'); ?>" onClick="doEdit('<?php
|
||||
echo rawurlencode(stripslashes($elem['definition'])); ?>','<?php
|
||||
echo rawurlencode(stripslashes($elem['range'])); ?>')" style="cursor:pointer"> <img
|
||||
src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18"
|
||||
alt="<?php
|
||||
echo translate('Delete'); ?>" title="<?php echo translate('Delete'); ?>"
|
||||
onClick="doDel('<?php
|
||||
echo rawurlencode(stripslashes($elem['definition'])); ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow"> </td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,201 +1,349 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Timeperiod definitions
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 16;
|
||||
$preContent = "admin/timeperiods.tpl.htm";
|
||||
$preSearchSession = 'timeperiod';
|
||||
$preTableName = 'tbl_timeperiod';
|
||||
$preKeyField = 'timeperiod_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `exclude`=$intMselValue1, `use_template`=$intMselValue2,
|
||||
`name`='$chkTfValue3', $preSQLCommon1";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($chkModus == "insert") $chkDataId = $intInsertId;
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('New time period inserted:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('Time period modified:')." ".$chkTfValue1);
|
||||
//
|
||||
// Insert/update relations
|
||||
// =======================
|
||||
if ($chkModus == "insert") {
|
||||
if ($intMselValue1 != 0) $intRet1 = $myDataClass->dataInsertRelation("tbl_lnkTimeperiodToTimeperiod",$chkDataId,$chkMselValue1);
|
||||
if (isset($intRet1) && ($intRet1 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) $intRet2 = $myDataClass->dataInsertRelation("tbl_lnkTimeperiodToTimeperiodUse",$chkDataId,$chkMselValue2);
|
||||
if (isset($intRet2) && ($intRet2 != 0)) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else if ($chkModus == "modify") {
|
||||
if ($intMselValue1 != 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation("tbl_lnkTimeperiodToTimeperiod",$chkDataId,$chkMselValue1);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation("tbl_lnkTimeperiodToTimeperiod",$chkDataId);
|
||||
}
|
||||
if ($intRet1 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
if ($intMselValue2 != 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation("tbl_lnkTimeperiodToTimeperiodUse",$chkDataId,$chkMselValue2);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation("tbl_lnkTimeperiodToTimeperiodUse",$chkDataId);
|
||||
}
|
||||
if ($intRet2 != 0) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (($intRet1 + $intRet2) != 0) $strInfoMessage = "";
|
||||
//
|
||||
// Insert/update time defintions
|
||||
// =============================
|
||||
if ($chkModus == "modify") {
|
||||
$strSQL = "DELETE FROM `tbl_timedefinition` WHERE `tipId`=$chkDataId";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition']) && (count($_SESSION['timedefinition']) != 0)) {
|
||||
foreach($_SESSION['timedefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
if ($elem['definition'] != "use") {
|
||||
$elem['range'] = str_replace(" ","",$elem['range']);
|
||||
}
|
||||
$strSQL = "INSERT INTO `tbl_timedefinition` (`tipId`,`definition`,`range`,`last_modified`)
|
||||
VALUES ($chkDataId,'".$elem['definition']."','".$elem['range']."',now())";
|
||||
$booReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($booReturn == false) $myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Timeperiod definitions
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagConfigClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var NagConfigClass $myConfigClass NagiosQL configuration class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var int $intVersion from prepend_adm.php -> Nagios version
|
||||
* @var int $chkListId from prepend_adm.php -> Actual dataset id (list view)
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $strAccess from prepend_content.php -> List of read access group id's for actual user
|
||||
* @var string $preSQLCommon1 from prepend_content.php -> Common SQL part 1
|
||||
* @var string $strDomainWhere from prepend_adm.php -> Domain selection SQL part with table name
|
||||
* @var string $chkTfValue1 from prepend_content.php -> Time period name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> Time period description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Time period template name
|
||||
* @var array $chkMselValue1 from prepend_content.php -> Excluded time period
|
||||
* @var array $chkMselValue2 from prepend_content.php -> Included time period
|
||||
* @var int $intMselValue1 from prepend_content.php -> Excluded time period multiselect status value
|
||||
* @var int $intMselValue2 from prepend_content.php -> Included time period multiselect status value
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 16;
|
||||
$preContent = 'admin/timeperiods.htm.tpl';
|
||||
$preListTpl = 'admin/datalist.htm.tpl';
|
||||
$preSearchSession = 'timeperiod';
|
||||
$preTableName = 'tbl_timeperiod';
|
||||
$preKeyField = 'timeperiod_name';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$intNoTime = 0;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
/*
|
||||
* Default values for form variables
|
||||
*/
|
||||
if (!isset($intMselValue1)) {
|
||||
$intMselValue1 = 0;
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Get date/time of last database and config file manipulation
|
||||
// ===========================================================
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName,$arrTimeData,$strTimeInfoString);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myConfigClass->strErrorMessage,$strErrorMessage);
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('Timeperiod definitions'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Do not show modified time list
|
||||
$intNoTime = 1;
|
||||
// Process exclude selection fields
|
||||
if (isset($arrModifyData['exclude'])) {$intFieldId = $arrModifyData['exclude'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti($preTableName,'name','excludes','tbl_lnkTimeperiodToTimeperiod',0,$intFieldId,$chkListId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process include selection fields
|
||||
if (isset($arrModifyData['use_template'])) {$intFieldId = $arrModifyData['use_template'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectMulti($preTableName,'name','uses','tbl_lnkTimeperiodToTimeperiodUse',0,$intFieldId,$chkListId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process acces group selection field
|
||||
if (isset($arrModifyData['access_group'])) {$intFieldId = $arrModifyData['access_group'];} else {$intFieldId = 0;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_group','groupname','acc_group',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning == 1) $conttp->setVariable("WARNING",$strDBWarning."<br>".translate('Saving not possible!'));
|
||||
if ($intVersion != 3) $conttp->setVariable("VERSION_20_VALUE_MUST","mselValue1,");
|
||||
$conttp->setVariable("LANG_INSERT_ALL_TIMERANGE",translate('Please insert a time definition and a time range'));
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Check relation information to find out locked configuration datasets
|
||||
$intLocked = $myDataClass->infoRelation($preTableName,$arrModifyData['id'],$preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strRelMessage);
|
||||
$strInfo = "<br><span class=\"redmessage\">".translate('Entry cannot be activated because it is used by another configuration').":</span>";
|
||||
$strInfo .= "<br><span class=\"greenmessage\">".$strRelMessage."</span>";
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,$intLocked,$strInfo);
|
||||
$conttp->setVariable("TIP_ID",$arrModifyData['id']);
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if (!isset($intMselValue2)) {
|
||||
$intMselValue2 = 0;
|
||||
}
|
||||
//
|
||||
// List view
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Time period'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Process filter string
|
||||
if ($_SESSION['search'][$preSearchSession] != "") {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%".$strSearchTxt."%' OR `alias` LIKE '%".$strSearchTxt."%' OR `name` LIKE '%".$strSearchTxt."%')";
|
||||
}
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess)";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere
|
||||
AND `access_group` IN ($strAccess) $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Include preprocessing files
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', `exclude`=$intMselValue1, "
|
||||
. "`use_template`=$intMselValue2, `name`='$chkTfValue3', $preSQLCommon1";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($chkModus === 'insert') {
|
||||
$chkDataId = $intInsertId;
|
||||
}
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
$myDataClass->updateStatusTable($preTableName);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New time period inserted:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('Time period modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
/*
|
||||
Insert/update relations
|
||||
*/
|
||||
$intRet1 = 0;
|
||||
$intRet2 = 0;
|
||||
if ($chkModus === 'insert') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkTimeperiodToTimeperiod',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
}
|
||||
if (isset($intRet1) && ($intRet1 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataInsertRelation(
|
||||
'tbl_lnkTimeperiodToTimeperiodUse',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
}
|
||||
if (isset($intRet2) && ($intRet2 !== 0)) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
} elseif ($chkModus === 'modify') {
|
||||
if ($intMselValue1 !== 0) {
|
||||
$intRet1 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkTimeperiodToTimeperiod',
|
||||
$chkDataId,
|
||||
$chkMselValue1
|
||||
);
|
||||
} else {
|
||||
$intRet1 = $myDataClass->dataDeleteRelation('tbl_lnkTimeperiodToTimeperiod', $chkDataId);
|
||||
}
|
||||
if ($intRet1 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
if ($intMselValue2 !== 0) {
|
||||
$intRet2 = $myDataClass->dataUpdateRelation(
|
||||
'tbl_lnkTimeperiodToTimeperiodUse',
|
||||
$chkDataId,
|
||||
$chkMselValue2
|
||||
);
|
||||
} else {
|
||||
$intRet2 = $myDataClass->dataDeleteRelation('tbl_lnkTimeperiodToTimeperiodUse', $chkDataId);
|
||||
}
|
||||
if ($intRet2 !== 0) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (($intRet1 + $intRet2) !== 0) {
|
||||
$strInfoMessage = '';
|
||||
}
|
||||
/*
|
||||
Insert/update time defintions
|
||||
*/
|
||||
if ($chkModus === 'modify') {
|
||||
$strSQL = "DELETE FROM `tbl_timedefinition` WHERE `tipId`=$chkDataId";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
if (isset($_SESSION['timedefinition']) && is_array($_SESSION['timedefinition']) &&
|
||||
(count($_SESSION['timedefinition']) !== 0)) {
|
||||
foreach ($_SESSION['timedefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
if ($elem['definition'] !== 'use') {
|
||||
$elem['range'] = str_replace(' ', '', $elem['range']);
|
||||
}
|
||||
$strSQL = 'INSERT INTO `tbl_timedefinition` (`tipId`,`definition`,`range`, '
|
||||
. "`last_modified`) VALUES ($chkDataId,'" . $elem['definition'] . "',"
|
||||
. "'" . $elem['range'] . "',now())";
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
/*
|
||||
Get date/time of last database and config file manipulation
|
||||
*/
|
||||
$intReturn = $myConfigClass->lastModifiedFile($preTableName, $arrTimeData, $strTimeInfoString);
|
||||
if ($intReturn !== 0) {
|
||||
$myVisClass->processMessage($myConfigClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
$intDataWarning = 0;
|
||||
$strDBWarning = '';
|
||||
$conttp->setVariable('TITLE', translate('Time period definitions (timeperiods.cfg)'));
|
||||
/* Do not show modified time list */
|
||||
$intNoTime = 1;
|
||||
/* Process exclude selection fields */
|
||||
$intFieldId = $arrModifyData['exclude'] ?? 0;
|
||||
$intReturn1 = $myVisClass->parseSelectMulti(
|
||||
$preTableName,
|
||||
'timeperiod_name',
|
||||
'excludes',
|
||||
'tbl_lnkTimeperiodToTimeperiod',
|
||||
0,
|
||||
$intFieldId,
|
||||
$chkListId
|
||||
);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process include selection fields */
|
||||
$intFieldId = $arrModifyData['use_template'] ?? 0;
|
||||
$intReturn2 = $myVisClass->parseSelectMulti(
|
||||
$preTableName,
|
||||
'name',
|
||||
'uses',
|
||||
'tbl_lnkTimeperiodToTimeperiodUse',
|
||||
0,
|
||||
$intFieldId,
|
||||
$chkListId
|
||||
);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process acces group selection field */
|
||||
$intFieldId = $arrModifyData['access_group'] ?? 0;
|
||||
$intReturn3 = $myVisClass->parseSelectSimple('tbl_group', 'groupname', 'acc_group', 0, $intFieldId);
|
||||
if ($intReturn3 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
if ($intDataWarning === 1) {
|
||||
$conttp->setVariable('WARNING', $strDBWarning . '<br>' . translate('Saving not possible!'));
|
||||
}
|
||||
if ($intVersion < 3) {
|
||||
$conttp->setVariable('VERSION_20_VALUE_MUST', 'mselValue1,');
|
||||
}
|
||||
$conttp->setVariable('LANG_INSERT_ALL_TIMERANGE', translate('Please insert a time definition and a time range'));
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Check relation information to find out locked configuration datasets */
|
||||
$intLocked = $myDataClass->infoRelation($preTableName, $arrModifyData['id'], $preKeyField);
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strRelMessage);
|
||||
$strInfo = '<br><span class="redmessage">' . translate('Entry cannot be activated because it is used by '
|
||||
. 'another configuration') . ':</span>';
|
||||
$strInfo .= '<br><span class="greenmessage">' . $strRelMessage . '</span>';
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, $intLocked, $strInfo);
|
||||
$conttp->setVariable('TIP_ID', $arrModifyData['id']);
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
/*
|
||||
List view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
$strSearchWhere = '';
|
||||
// Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('Time period definitions (timeperiods.cfg)'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Time period'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
$mastertp->setVariable('FILTER_VISIBLE', 'visibility: hidden');
|
||||
/* Process filter string */
|
||||
if ($_SESSION['search'][$preSearchSession] !== '') {
|
||||
$strSearchTxt = $_SESSION['search'][$preSearchSession];
|
||||
$strSearchWhere = "AND (`$preKeyField` LIKE '%" . $strSearchTxt . "%' OR `alias` LIKE '%" . $strSearchTxt . "%' "
|
||||
. "OR `name` LIKE '%" . $strSearchTxt . "%')";
|
||||
}
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `config_id`, `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `config_id`, `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere "
|
||||
. "AND `access_group` IN ($strAccess)";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `register`, `active`, `config_id`, `access_group` "
|
||||
. "FROM `$preTableName` WHERE $strDomainWhere $strSearchWhere AND `access_group` IN ($strAccess) "
|
||||
. "$strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages(
|
||||
$mastertp,
|
||||
$strErrorMessage,
|
||||
$strInfoMessage,
|
||||
$strConsistMessage,
|
||||
$arrTimeData,
|
||||
$strTimeInfoString,
|
||||
$intNoTime
|
||||
);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,43 +1,47 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Tools overview
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 6;
|
||||
$preContent = "admin/mainpages.tpl.htm";
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Include content
|
||||
// ===============
|
||||
$conttp->setVariable("TITLE",translate('Different tools'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
$conttp->setVariable("DESC",translate('Useful functions for data import, main configuration, daemon control and so on.'));
|
||||
$conttp->parse("main");
|
||||
$conttp->show("main");
|
||||
//
|
||||
// Include Footer
|
||||
// ==============
|
||||
$maintp->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse("footer");
|
||||
$maintp->show("footer");
|
||||
?>
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Tools overview
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 6;
|
||||
$preContent = 'admin/mainpages.htm.tpl';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Include content
|
||||
*/
|
||||
$conttp->setVariable('TITLE', translate('Different tools'));
|
||||
$conttp->setVariable('DESC', translate('Useful functions for data import, main configuration, daemon control, etc.'));
|
||||
$conttp->parse('main');
|
||||
$conttp->show('main');
|
||||
/*
|
||||
Include Footer
|
||||
*/
|
||||
$maintp->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' "
|
||||
. "target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$maintp->parse('footer');
|
||||
$maintp->show('footer');
|
||||
408
admin/user.php
408
admin/user.php
@@ -1,175 +1,241 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : User administration
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$prePageId = 32;
|
||||
$preContent = "admin/user.tpl.htm";
|
||||
$preSearchSession = 'user';
|
||||
$preTableName = 'tbl_user';
|
||||
$preKeyField = 'username';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
//$preNoAccessGrp = 1;
|
||||
//
|
||||
// Include preprocessing files
|
||||
// ===========================
|
||||
require("../functions/prepend_adm.php");
|
||||
require("../functions/prepend_content.php");
|
||||
//
|
||||
// Add or modify data
|
||||
// ==================
|
||||
if ((($chkModus == "insert") || ($chkModus == "modify")) && ($intGlobalWriteAccess == 0)) {
|
||||
// Check password
|
||||
if ((($chkTfValue3 === $chkTfValue4) && (strlen($chkTfValue3) > 5)) || (($chkModus == "modify") && ($chkTfValue3 == ""))) {
|
||||
if ($chkTfValue3 == "") {$strPasswd = "";} else {$strPasswd = "`password`=MD5('$chkTfValue3'),";}
|
||||
// Grant admin rights
|
||||
if ($chkTfValue5 == "Admin") {
|
||||
$chkTfValue1 = "Admin";
|
||||
$chkActive = "1";
|
||||
$chkChbValue1 = "1";
|
||||
}
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', $strPasswd `admin_enable`='$chkChbValue1',
|
||||
`wsauth`='$chkChbValue2', `active`='$chkActive', `language`='$chkSelValue1', `domain`='$chkSelValue2', `last_modified`=NOW()";
|
||||
if ($chkModus == "insert") {
|
||||
$strSQL = "INSERT INTO ".$strSQLx;
|
||||
} else {
|
||||
$strSQL = "UPDATE ".$strSQLx." WHERE `id`=$chkDataId";
|
||||
}
|
||||
if ($intWriteAccessId == 0) {
|
||||
if (($chkTfValue1 != "") && ($chkTfValue2 != "")) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL,$intInsertId);
|
||||
if ($intReturn == 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage,$strInfoMessage);
|
||||
if ($chkModus == "insert") $myDataClass->writeLog(translate('A new user added:')." ".$chkTfValue1);
|
||||
if ($chkModus == "modify") $myDataClass->writeLog(translate('User modified:')." ".$chkTfValue1);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! Not all necessary data filled in!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'),$strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Password too short or password fields unequally!'),$strErrorMessage);
|
||||
}
|
||||
$chkModus = "display";
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : User administration
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
use functions\NagContentClass;
|
||||
use functions\NagDataClass;
|
||||
use functions\NagVisualClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var HTML_Template_IT $conttp Content template
|
||||
* @var HTML_Template_IT $maintp Main template
|
||||
* @var HTML_Template_IT $mastertp Master template (list view)
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
* @var NagVisualClass $myVisClass Visual content class
|
||||
* @var NagDataClass $myDataClass NagiosQL data class
|
||||
* @var NagContentClass $myContentClass NagiosQL content class
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var int $chkActive from prepend_adm.php -> Active checkbox
|
||||
* @var string $chkModus from prepend_adm.php -> Form work mode
|
||||
* @var int $chkDataId from prepend_adm.php -> Actual dataset id
|
||||
* @var string $chkSelModify from prepend_adm.php -> Modification selection value
|
||||
* @var int $hidSortBy from prepend_adm.php -> Sort data by
|
||||
* @var string $hidSortDir from prepend_adm.php -> Sort data direction (ASC, DESC)
|
||||
* @var int $chkLimit from prepend_adm.php / settings -> Data set count per page
|
||||
* @var array $SETS Settings array
|
||||
* @var int $intGlobalWriteAccess from prepend_content.php -> Global admin write access
|
||||
* @var int $intWriteAccessId from prepend_content.php -> Admin write access to actual dataset id
|
||||
* @var string $chkTfValue1 from prepend_content.php -> User name
|
||||
* @var string $chkTfValue2 from prepend_content.php -> User description
|
||||
* @var string $chkTfValue3 from prepend_content.php -> Password
|
||||
* @var string $chkTfValue4 from prepend_content.php -> Password confirmation
|
||||
* @var string $chkTfValue5 from prepend_content.php -> (hidden) old user name
|
||||
* @var int $chkChbValue1 from prepend_content.php -> Admin rights checkbox
|
||||
* @var int $chkChbValue2 from prepend_content.php -> Webserver authentification checkbox
|
||||
* @var int $chkSelValue1 from prepend_content.php -> Language selector
|
||||
* @var int $chkSelValue2 from prepend_content.php -> Standard domain selector
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$prePageId = 32;
|
||||
$preContent = 'admin/user.htm.tpl';
|
||||
$preListTpl = 'admin/datalist_common.htm.tpl';
|
||||
$preSearchSession = 'user';
|
||||
$preTableName = 'tbl_user';
|
||||
$preKeyField = 'username';
|
||||
$preAccess = 1;
|
||||
$preFieldvars = 1;
|
||||
$preNoAccessGrp = 1;
|
||||
$strErrorMessage = '';
|
||||
$strInfoMessage = '';
|
||||
$strConsistMessage = '';
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
require $preBasePath . 'functions/prepend_content.php';
|
||||
/*
|
||||
Add or modify data
|
||||
*/
|
||||
if ((($chkModus === 'insert') || ($chkModus === 'modify')) && ($intGlobalWriteAccess === 0)) {
|
||||
/* Check password */
|
||||
if ((($chkTfValue3 === $chkTfValue4) && (strlen($chkTfValue3) > 5)) ||
|
||||
(($chkModus === 'modify') && ($chkTfValue3 === ''))) {
|
||||
if ($chkTfValue3 === '') {
|
||||
$strPasswd = '';
|
||||
} else {
|
||||
$strPasswd = "`password`=MD5('$chkTfValue3'),";
|
||||
}
|
||||
/* Admin user cannot be renamed and must be active with full admin rights */
|
||||
if (strtolower($chkTfValue5) === 'admin') {
|
||||
$chkTfValue1 = 'admin';
|
||||
$chkActive = '1';
|
||||
$chkChbValue1 = '1';
|
||||
}
|
||||
$strSQLx = "`$preTableName` SET `$preKeyField`='$chkTfValue1', `alias`='$chkTfValue2', $strPasswd "
|
||||
. "`admin_enable`='$chkChbValue1', `wsauth`='$chkChbValue2', `active`='$chkActive', "
|
||||
. "`language`='$chkSelValue1', `domain`='$chkSelValue2', `last_modified`=NOW()";
|
||||
if ($chkModus === 'insert') {
|
||||
$strSQL = 'INSERT INTO ' . $strSQLx;
|
||||
} else {
|
||||
$strSQL = 'UPDATE ' . $strSQLx . ' WHERE `id`=' . $chkDataId;
|
||||
}
|
||||
if ($intWriteAccessId === 0) {
|
||||
if (($chkTfValue1 !== '') && ($chkTfValue2 !== '')) {
|
||||
$intReturn = $myDataClass->dataInsert($strSQL, $intInsertId);
|
||||
if ($intReturn === 1) {
|
||||
$myVisClass->processMessage($myDataClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$myVisClass->processMessage($myDataClass->strInfoMessage, $strInfoMessage);
|
||||
if ($chkModus === 'insert') {
|
||||
$myDataClass->writeLog(translate('New user added:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
if ($chkModus === 'modify') {
|
||||
$myDataClass->writeLog(translate('User modified:') . ' ' . $chkTfValue1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(
|
||||
translate('Database entry failed! Not all necessary data filled in!'),
|
||||
$strErrorMessage
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Database entry failed! No write access!'), $strErrorMessage);
|
||||
}
|
||||
} else {
|
||||
$myVisClass->processMessage(translate('Password too short or password fields do not match!'), $strErrorMessage);
|
||||
}
|
||||
$chkModus = 'display';
|
||||
}
|
||||
if ($chkModus != "add") $chkModus = "display";
|
||||
//
|
||||
// Start content
|
||||
// =============
|
||||
$conttp->setVariable("TITLE",translate('User administration'));
|
||||
$conttp->parse("header");
|
||||
$conttp->show("header");
|
||||
//
|
||||
// Singe data form
|
||||
// ===============
|
||||
if ($chkModus == "add") {
|
||||
// Process domain selection field
|
||||
if (isset($arrModifyData['domain'])) {$intFieldId = $arrModifyData['domain'];} else {$intFieldId = 1;}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_datadomain','domain','std_domain',0,$intFieldId,0);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Process language selection field
|
||||
if (isset($arrModifyData['language'])) {$intFieldId = $arrModifyData['language'];} else {$intFieldId = 0;}
|
||||
if ($intFieldId == 0) {
|
||||
$intFieldId = $myDBClass->getFieldData("SELECT `id` FROM `tbl_language` WHERE `locale`='".$_SESSION['SETS']['data']['locale']."'")+0;
|
||||
}
|
||||
$intReturn = $myVisClass->parseSelectSimple('tbl_language','language','language_name',0,$intFieldId);
|
||||
if ($intReturn != 0) $myVisClass->processMessage($myVisClass->strErrorMessage,$strErrorMessage);
|
||||
// Initial add/modify form definitions
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable("WSAUTH_DISABLE","disabled");
|
||||
$conttp->setVariable("FILL_ALLFIELDS",translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable("FILL_ILLEGALCHARS",translate('The following field contains not permitted characters:'));
|
||||
$conttp->setVariable("FILL_PASSWD_NOT_EQUAL",translate('The passwords are not equal!'));
|
||||
$conttp->setVariable("FILL_PASSWORD",translate('Please fill in the password'));
|
||||
$conttp->setVariable("FILL_PWDSHORT",translate('The password is too short - use at least 6 characters!'));
|
||||
$conttp->setVariable("LANG_WEBSERVER_AUTH",translate('Webserver authentification'));
|
||||
$conttp->setVariable("PASSWORD_MUST","class=\"inpmust\"");
|
||||
$conttp->setVariable("PASSWORD_MUST_STAR","*");
|
||||
// If webserver authetification is enabled - show option field
|
||||
if (isset($SETS['security']['wsauth']) && ($SETS['security']['wsauth'] == 1)) {
|
||||
$conttp->setVariable("WSAUTH_DISABLE","");
|
||||
}
|
||||
// Insert data from database in "modify" mode
|
||||
if (isset($arrModifyData) && ($chkSelModify == "modify")) {
|
||||
// Process data
|
||||
$myContentClass->addInsertData($conttp,$arrModifyData,0,'');
|
||||
// Webserver authentification
|
||||
$conttp->setVariable("WSAUTH_CHECKED","");
|
||||
if ($arrModifyData['wsauth'] == 1) $conttp->setVariable("WSAUTH_CHECKED","checked");
|
||||
// Object based group administration
|
||||
$conttp->setVariable("ADMINENABLE_CHECKED","");
|
||||
if ($arrModifyData['admin_enable'] == 1) $conttp->setVariable("ADMINENABLE_CHECKED","checked");
|
||||
// Admin rules
|
||||
if ($arrModifyData[$preKeyField] == "Admin") {
|
||||
$conttp->setVariable("NAME_DISABLE","disabled");
|
||||
$conttp->setVariable("ACT_DISABLE","disabled");
|
||||
$conttp->setVariable("WSAUTH_DISABLE","disabled");
|
||||
$conttp->setVariable("ADMINENABLE_DISABLE","disabled");
|
||||
$conttp->setVariable("ADMINENABLE_CHECKED","checked");
|
||||
}
|
||||
$conttp->setVariable("PASSWORD_MUST","");
|
||||
$conttp->setVariable("PASSWORD_MUST_STAR","");
|
||||
}
|
||||
$conttp->parse("datainsert");
|
||||
$conttp->show("datainsert");
|
||||
if ($chkModus !== 'add') {
|
||||
$chkModus = 'display';
|
||||
}
|
||||
//
|
||||
// Data table
|
||||
// ==========
|
||||
if ($chkModus == "display") {
|
||||
// Initial list view definitions
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable("FIELD_1",translate('Username'));
|
||||
$mastertp->setVariable("FIELD_2",translate('Description'));
|
||||
// Row sorting
|
||||
$strOrderString = "ORDER BY `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy == 2) $strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
// Count datasets
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName`";
|
||||
$booReturn = $myDBClass->getSingleDataset($strSQL,$arrDataLinesCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) $chkLimit = 0;
|
||||
}
|
||||
// Get datasets
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `nodelete`
|
||||
FROM `$preTableName` $strOrderString LIMIT $chkLimit,".$SETS['common']['pagelines'];
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'),$strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage,$strErrorMessage);
|
||||
}
|
||||
// Process data
|
||||
$myContentClass->listData($mastertp,$arrDataLines,$intDataCount,$intLineCount,$preKeyField,'alias');
|
||||
/*
|
||||
Singe data form
|
||||
*/
|
||||
if ($chkModus === 'add') {
|
||||
/* Process domain selection field */
|
||||
$intFieldId = $arrModifyData['domain'] ?? 1;
|
||||
$intReturn1 = $myVisClass->parseSelectSimple('tbl_datadomain', 'domain', 'std_domain', 0, $intFieldId, 0);
|
||||
if ($intReturn1 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process language selection field */
|
||||
$intFieldId = $arrModifyData['language'] ?? 0;
|
||||
if ($intFieldId === 0) {
|
||||
$intFieldId = $myDBClass->getFieldData('SELECT `id` FROM `tbl_language` '
|
||||
. "WHERE `locale`='" . $_SESSION['SETS']['data']['locale'] . "'");
|
||||
$intFieldId = (int)$intFieldId;
|
||||
}
|
||||
$intReturn2 = $myVisClass->parseSelectSimple('tbl_language', 'language', 'language_name', 0, $intFieldId);
|
||||
if ($intReturn2 !== 0) {
|
||||
$myVisClass->processMessage($myVisClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Initial add/modify form definitions */
|
||||
$myContentClass->addFormInit($conttp);
|
||||
$conttp->setVariable('TITLE', translate('User administration'));
|
||||
$conttp->setVariable('WSAUTH_DISABLE', 'disabled');
|
||||
$conttp->setVariable('FILL_ALLFIELDS', translate('Please fill in all fields marked with an *'));
|
||||
$conttp->setVariable('FILL_ILLEGALCHARS', translate('The following field contains illegal characters:'));
|
||||
$conttp->setVariable('FILL_PASSWD_NOT_EQUAL', translate('The passwords do not match!'));
|
||||
$conttp->setVariable('FILL_PASSWORD', translate('Please fill in the password'));
|
||||
$conttp->setVariable('FILL_PWDSHORT', translate('The password is too short - use at least 6 characters!'));
|
||||
$conttp->setVariable('LANG_WEBSERVER_AUTH', translate('Webserver authentification'));
|
||||
$conttp->setVariable('PASSWORD_MUST', 'class="inpmust"');
|
||||
$conttp->setVariable('PASSWORD_MUST_STAR', '*');
|
||||
/* If webserver authetification is enabled - show option field */
|
||||
if (isset($SETS['security']['wsauth']) && ((int)$SETS['security']['wsauth'] === 1)) {
|
||||
$conttp->setVariable('WSAUTH_DISABLE');
|
||||
}
|
||||
/* Insert data from database in "modify" mode */
|
||||
if (isset($arrModifyData) && ($chkSelModify === 'modify')) {
|
||||
/* Process data */
|
||||
$myContentClass->addInsertData($conttp, $arrModifyData, 0, '');
|
||||
/* Webserver authentification */
|
||||
$conttp->setVariable('WSAUTH_CHECKED');
|
||||
if ((int)$arrModifyData['wsauth'] === 1) {
|
||||
$conttp->setVariable('WSAUTH_CHECKED', 'checked');
|
||||
}
|
||||
/* Object based group administration */
|
||||
$conttp->setVariable('ADMINENABLE_CHECKED');
|
||||
if ((int)$arrModifyData['admin_enable'] === 1) {
|
||||
$conttp->setVariable('ADMINENABLE_CHECKED', 'checked');
|
||||
}
|
||||
/* Admin rules */
|
||||
if ((string)$arrModifyData[$preKeyField] === 'Admin') {
|
||||
$conttp->setVariable('NAME_DISABLE', 'disabled');
|
||||
$conttp->setVariable('ACT_DISABLE', 'disabled');
|
||||
$conttp->setVariable('WSAUTH_DISABLE', 'disabled');
|
||||
$conttp->setVariable('ADMINENABLE_DISABLE', 'disabled');
|
||||
$conttp->setVariable('ADMINENABLE_CHECKED', 'checked');
|
||||
}
|
||||
$conttp->setVariable('PASSWORD_MUST');
|
||||
$conttp->setVariable('PASSWORD_MUST_STAR');
|
||||
}
|
||||
$conttp->parse('datainsert');
|
||||
$conttp->show('datainsert');
|
||||
}
|
||||
// Show messages
|
||||
$myContentClass->showMessages($mastertp,$strErrorMessage,$strInfoMessage,$strConsistMessage,'','',1);
|
||||
//
|
||||
// Process footer
|
||||
// ==============
|
||||
$myContentClass->showFooter($maintp,$setFileVersion);
|
||||
?>
|
||||
/*
|
||||
Data list view
|
||||
*/
|
||||
if ($chkModus === 'display') {
|
||||
/* Initial list view definitions */
|
||||
$myContentClass->listViewInit($mastertp);
|
||||
$mastertp->setVariable('TITLE', translate('User administration'));
|
||||
$mastertp->setVariable('FIELD_1', translate('Username'));
|
||||
$mastertp->setVariable('FIELD_2', translate('Description'));
|
||||
/* Row sorting */
|
||||
$strOrderString = "ORDER BY `$preKeyField` $hidSortDir";
|
||||
if ($hidSortBy === 2) {
|
||||
$strOrderString = "ORDER BY `alias` $hidSortDir";
|
||||
}
|
||||
/* Count datasets */
|
||||
$intLineCount = 0;
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = "SELECT count(*) AS `number` FROM `$preTableName`";
|
||||
$booReturn1 = $myDBClass->hasSingleDataset($strSQL, $arrDataLinesCount);
|
||||
if ($booReturn1 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
} else {
|
||||
$intLineCount = (int)$arrDataLinesCount['number'];
|
||||
if ($intLineCount < $chkLimit) {
|
||||
$chkLimit = 0;
|
||||
}
|
||||
}
|
||||
/* Get datasets */
|
||||
$strSQL = "SELECT `id`, `$preKeyField`, `alias`, `active`, `nodelete` "
|
||||
. "FROM `$preTableName` $strOrderString LIMIT $chkLimit," . $SETS['common']['pagelines'];
|
||||
$booReturn2 = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn2 === false) {
|
||||
$myVisClass->processMessage(translate('Error while selecting data from database:'), $strErrorMessage);
|
||||
$myVisClass->processMessage($myDBClass->strErrorMessage, $strErrorMessage);
|
||||
}
|
||||
/* Process data */
|
||||
$myContentClass->listData($mastertp, $arrDataLines, $intDataCount, $intLineCount, $preKeyField, 'alias');
|
||||
}
|
||||
/* Show messages */
|
||||
$myContentClass->showMessages($mastertp, $strErrorMessage, $strInfoMessage, $strConsistMessage, array(), '', 1);
|
||||
/*
|
||||
Process footer
|
||||
*/
|
||||
$myContentClass->showFooter($maintp, $setFileVersion);
|
||||
@@ -1,150 +1,192 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Variable definition list
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
//
|
||||
// Process post parameters
|
||||
// =======================
|
||||
$chkDataId = isset($_GET['dataId']) ? htmlspecialchars($_GET['dataId'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkMode = isset($_GET['mode']) ? htmlspecialchars($_GET['mode'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkDef = isset($_GET['def']) ? $_GET['def'] : "";
|
||||
$chkRange = isset($_GET['range']) ? $_GET['range'] : "";
|
||||
$chkId = isset($_GET['id']) ? htmlspecialchars($_GET['id'], ENT_QUOTES, 'utf-8') : "";
|
||||
$chkVersion = isset($_GET['version']) ? htmlspecialchars($_GET['version'], ENT_QUOTES, 'utf-8') : 0;
|
||||
$chkLinkTab = isset($_GET['linktab']) ? htmlspecialchars($_GET['linktab'], ENT_QUOTES, 'utf-8') : "";
|
||||
if (get_magic_quotes_gpc() == 0) {
|
||||
$chkDef = addslashes($chkDef);
|
||||
$chkRange = addslashes($chkRange);
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Variable definition list
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
use functions\MysqliDbClass;
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var MysqliDbClass $myDBClass MySQL database class
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preAccess = 1;
|
||||
$preNoMain = 1;
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
/*
|
||||
Process post parameters
|
||||
*/
|
||||
$chkDataId = filter_input(INPUT_GET, 'dataId', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
$chkMode = filter_input(INPUT_GET, 'mode');
|
||||
$chkDef = filter_input(INPUT_GET, 'def');
|
||||
$chkRange = filter_input(INPUT_GET, 'range');
|
||||
$chkLinkTab = filter_input(INPUT_GET, 'linktab');
|
||||
/*
|
||||
Get data
|
||||
*/
|
||||
if ($chkLinkTab !== '') {
|
||||
/** @noinspection SqlResolve */
|
||||
$strSQL = 'SELECT * FROM `tbl_variabledefinition` LEFT JOIN `' . $chkLinkTab . '` ON `id`=`idSlave` ' .
|
||||
"WHERE `idMaster`=$chkDataId ORDER BY `name`";
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
/* Store data to session */
|
||||
if ($chkMode === null) {
|
||||
$arrTemp = array();
|
||||
$_SESSION['variabledefinition'] = array();
|
||||
if ($booReturn && ($intDataCount !== 0)) {
|
||||
foreach ($arrDataLines as $elem) {
|
||||
$arrTemp['id'] = $elem['id'];
|
||||
$arrTemp['definition'] = addslashes($elem['name']);
|
||||
$arrTemp['range'] = addslashes($elem['value']);
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// Get data
|
||||
// ========
|
||||
if ($chkLinkTab != "") {
|
||||
$strSQL = "SELECT * FROM `tbl_variabledefinition` LEFT JOIN `".$chkLinkTab."` ON `id`=`idSlave` WHERE `idMaster`=$chkDataId ORDER BY `name`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
//
|
||||
// Store data to session
|
||||
// ============================
|
||||
if ($chkMode == "") {
|
||||
$_SESSION['variabledefinition'] = "";
|
||||
if ($booReturn && ($intDataCount != 0)) {
|
||||
foreach ($arrDataLines AS $elem) {
|
||||
$arrTemp['id'] = $elem['id'];
|
||||
$arrTemp['definition'] = addslashes($elem['name']);
|
||||
$arrTemp['range'] = addslashes($elem['value']);
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Add mode
|
||||
*/
|
||||
if ($chkMode === 'add') {
|
||||
$arrTemp = array();
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['variabledefinition'] as $key => $elem) {
|
||||
if (($elem['definition'] === $chkDef) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['variabledefinition'][$key]['definition'] = $chkDef;
|
||||
$_SESSION['variabledefinition'][$key]['range'] = $chkRange;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck === 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Add mode
|
||||
// ========
|
||||
if ($chkMode == "add") {
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition'])) {
|
||||
$intCheck = 0;
|
||||
foreach ($_SESSION['variabledefinition'] AS $key => $elem) {
|
||||
if (($elem['definition'] == $chkDef) && ($elem['status'] == 0)) {
|
||||
$_SESSION['variabledefinition'][$key]['definition'] = $chkDef;
|
||||
$_SESSION['variabledefinition'][$key]['range'] = $chkRange;
|
||||
$intCheck = 1;
|
||||
}
|
||||
}
|
||||
if ($intCheck == 0) {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
} else {
|
||||
$arrTemp['id'] = 0;
|
||||
$arrTemp['definition'] = $chkDef;
|
||||
$arrTemp['range'] = $chkRange;
|
||||
$arrTemp['status'] = 0;
|
||||
$_SESSION['variabledefinition'][] = $arrTemp;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Deletion mode
|
||||
// =============
|
||||
if ($chkMode == "del") {
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition'])) {
|
||||
foreach ($_SESSION['variabledefinition'] AS $key => $elem) {
|
||||
if (($elem['definition'] == $chkDef) && ($elem['status'] == 0)) {
|
||||
$_SESSION['variabledefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
Deletion mode
|
||||
*/
|
||||
if ($chkMode === 'del' && isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition'])) {
|
||||
foreach ($_SESSION['variabledefinition'] as $key => $elem) {
|
||||
if (($elem['definition'] === $chkDef) && ((int)$elem['status'] === 0)) {
|
||||
$_SESSION['variabledefinition'][$key]['status'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" language="javascript">
|
||||
<!--
|
||||
function doEdit(key,range) {
|
||||
parent.document.frmDetail.txtVariablename.value = decodeURIComponent(key);
|
||||
parent.document.frmDetail.txtVariablevalue.value = decodeURIComponent(range);
|
||||
}
|
||||
function doDel(key) {
|
||||
document.location.href = "<?php echo $_SESSION['SETS']['path']['base_url']; ?>admin/variabledefinitions.php?dataId=<?php echo $chkDataId; ?>&mode=del&def="+key;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>None</title>
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<!--suppress JSUnresolvedVariable -->
|
||||
<script type="text/javascript">
|
||||
function b64DecodeUnicode(str) {
|
||||
return decodeURIComponent(atob(str).split('').map(function (c) {
|
||||
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
||||
}).join(''));
|
||||
}
|
||||
|
||||
function decodeHtml(html) {
|
||||
let txt = document.createElement("textarea");
|
||||
txt.innerHTML = html;
|
||||
return txt.value;
|
||||
}
|
||||
|
||||
function doEdit(key, range) {
|
||||
parent.document.frmDetail.txtVariablename.value = decodeURIComponent(key);
|
||||
parent.document.frmDetail.txtVariablevalue.value = decodeHtml(b64DecodeUnicode(range));
|
||||
}
|
||||
|
||||
function doDel(key) {
|
||||
let link;
|
||||
link = '<?php echo $_SESSION['SETS']['path']['base_url']; ?>';
|
||||
link = link + 'admin/variabledefinitions.php?dataId=<?php echo $chkDataId; ?>&mode=del&def=' + key;
|
||||
document.location.href = link;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) && (count($_SESSION['variabledefinition']) != 0)) {
|
||||
foreach($_SESSION['variabledefinition'] AS $elem) {
|
||||
if ($elem['status'] == 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo htmlentities(stripslashes($elem['definition']),ENT_COMPAT,'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php echo htmlentities(stripslashes($elem['range']),ENT_COMPAT,'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/edit.gif" width="18" height="18" alt="<?php echo translate('Modify'); ?>" title="<?php echo translate('Modify'); ?>" onClick="doEdit('<?php echo rawurlencode(stripslashes($elem['definition'])); ?>','<?php echo rawurlencode(stripslashes($elem['range'])); ?>')" style="cursor:pointer"> <img src="<?php echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18" alt="<?php echo translate('Delete'); ?>" title="<?php echo translate('Delete'); ?>" onClick="doDel('<?php echo rawurlencode(stripslashes($elem['definition'])); ?>')" style="cursor:pointer"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||
<?php
|
||||
if (isset($_SESSION['variabledefinition']) && is_array($_SESSION['variabledefinition']) &&
|
||||
(count($_SESSION['variabledefinition']) !== 0)) {
|
||||
$intCounter = 0;
|
||||
foreach ($_SESSION['variabledefinition'] as $elem) {
|
||||
if ((int)$elem['status'] === 0) {
|
||||
$intCounter++;
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php
|
||||
echo htmlentities(stripslashes($elem['definition']), ENT_COMPAT, 'UTF-8'); ?></td>
|
||||
<td class="tablerow" style="padding-bottom:2px; width:260px"><?php
|
||||
echo $elem['range']; ?></td>
|
||||
<td class="tablerow" style="width:50px" align="right"><img src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/edit.gif" width="18" height="18" alt="<?php
|
||||
echo translate('Modify'); ?>" title="<?php echo translate('Modify'); ?>" onClick="doEdit('<?php
|
||||
echo rawurlencode(stripslashes($elem['definition'])); ?>','<?php
|
||||
echo base64_encode($elem['range']); ?>')" style="cursor:pointer"> <img src="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>images/delete.gif" width="18" height="18"
|
||||
alt="<?php
|
||||
echo translate('Delete'); ?>"
|
||||
title="<?php echo translate('Delete'); ?>"
|
||||
onClick="doDel('<?php
|
||||
echo rawurlencode(stripslashes($elem['definition'])); ?>')"
|
||||
style="cursor:pointer">
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
if ($intCounter === 0) {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow"> </td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<tr>
|
||||
<td class="tablerow"><?php echo translate('No data'); ?></td>
|
||||
<td class="tablerow"> </td>
|
||||
<td class="tablerow" align="right"> </td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
1049
admin/verify.php
1049
admin/verify.php
File diff suppressed because it is too large
Load Diff
@@ -1,173 +1,221 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Command line visualization
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$preNoMain = 1;
|
||||
$chkShow = isset($_GET['show']) ? $_GET['show']+0 : 0;
|
||||
//
|
||||
// Include preprocessing file
|
||||
// ==========================
|
||||
require("../functions/prepend_adm.php");
|
||||
$strCommandLine = " ";
|
||||
$intCount = 0;
|
||||
//
|
||||
// Get database values
|
||||
// ===================
|
||||
if ($chkShow == 1) {
|
||||
$versionfeed = "http://api.wizonet.ch/nagiosql/versioncheck.php?myversion=".urlencode($setFileVersion);
|
||||
$strError = "";
|
||||
if ((isset($SETS['network']['proxy']) && ($SETS['network']['proxy'] == '1')) &&
|
||||
(isset($SETS['network']['proxyserver']) && ($SETS['network']['proxyserver'] != ""))) {
|
||||
if ((isset($SETS['network']['proxyuser']) && ($SETS['network']['proxyuser'] != "")) &&
|
||||
(isset($SETS['network']['proxypasswd']) && ($SETS['network']['proxypasswd'] != ""))) {
|
||||
$strProxyAuth = base64_encode($SETS['network']['proxyuser'].":".$SETS['network']['proxypasswd']);
|
||||
$aContext = array(
|
||||
'http' => array(
|
||||
'proxy' => 'tcp://'.$SETS['network']['proxyserver'],
|
||||
'request_fulluri' => true,
|
||||
'header' => "Proxy-Authorization: Basic $strProxyAuth",
|
||||
'timeout' => 1,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
$aContext = array(
|
||||
'http' => array(
|
||||
'proxy' => 'tcp://'.$SETS['network']['proxyserver'],
|
||||
'request_fulluri' => true,
|
||||
'timeout' => 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
$cxContext = stream_context_create($aContext);
|
||||
$arrFile = file($versionfeed, false, $cxContext);
|
||||
$arrError = error_get_last();
|
||||
error_reporting($intErrorReporting);
|
||||
if ($arrError['message'] != "") $strError .= utf8_encode($arrError['message'])." (".translate("check proxy settings").")";
|
||||
} else {
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
$cxContext = stream_context_create(array('http' => array('timeout' => 1)));
|
||||
$arrFile = file($versionfeed, false, $cxContext);
|
||||
$arrError = error_get_last();
|
||||
error_reporting($intErrorReporting);
|
||||
if ($arrError['message'] != "") $strError .= utf8_encode($arrError['message'])." (".translate("check proxy settings").")";
|
||||
|
||||
}
|
||||
$strInstalled = translate('Installed');
|
||||
$strAvailable = translate('Available');
|
||||
$strInformation = translate('Information');
|
||||
$strVersion = "";
|
||||
$strRelease = "";
|
||||
$strRelInfo = "";
|
||||
if (is_array($arrFile) && (count($arrFile)) != 0) {
|
||||
foreach ($arrFile AS $elem) {
|
||||
if (substr_count($elem,"version") != 0) $strVersion = trim(strip_tags($elem));
|
||||
if (substr_count($elem,"release_date") != 0) $strRelease = trim(strip_tags($elem));
|
||||
if (substr_count($elem,"error") != 0) $strError = trim(strip_tags($elem));
|
||||
if (substr_count($elem,"information") != 0) $strRelInfo = trim(strip_tags($elem));
|
||||
}
|
||||
}
|
||||
$setFileAvailable = $strVersion;
|
||||
if (version_compare($strVersion, $setFileVersion,'==')) {
|
||||
$setFileInformation = "<span class='greenmessage'>".translate('You already have the latest version installed')."</span>";
|
||||
} else if (version_compare($strVersion, $setFileVersion,'>=')) {
|
||||
$setFileInformation = "<span class='redmessage'>".translate('You are using an old NagiosQL version. Please update to the latest stable version')."</span>: ";
|
||||
$setFileInformation .= "<a href=\"http://sourceforge.net/projects/nagiosql/files/\" target=\"_blank\">NagiosQL on Sourceforge</a>";
|
||||
} else if (version_compare($strVersion, $setFileVersion,'<=')) {
|
||||
$setFileInformation = "<span class='redmessage'>".translate('You are using a newer development version without official support')."</span>";
|
||||
}
|
||||
if (($strError != "none") && ($strError != "")) $setFileInformation = "<span class='redmessage'>".$strError."</span>";
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Version check</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<link href="<?php echo $_SESSION['SETS']['path']['base_url']; ?>config/content.css" rel="stylesheet" type="text/css">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2023 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Online version check
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* Class and variable includes
|
||||
* @var string $setFileVersion from prepend_adm.php -> Application version string
|
||||
* @var string $setGITVersion from prepend_adm.php -> Application version string - GIT version
|
||||
* @var array $SETS Settings array
|
||||
*/
|
||||
/*
|
||||
Path settings
|
||||
*/
|
||||
$strPattern = '(admin/[^/]*.php)';
|
||||
$preRelPath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'PHP_SELF'));
|
||||
$preBasePath = preg_replace($strPattern, '', filter_input(INPUT_SERVER, 'SCRIPT_FILENAME'));
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$preNoMain = 1;
|
||||
$chkShow = filter_input(INPUT_GET, 'show', FILTER_VALIDATE_INT, array('options' => array('default' => 0)));
|
||||
/*
|
||||
Include preprocessing file
|
||||
*/
|
||||
require $preBasePath . 'functions/prepend_adm.php';
|
||||
$strCommandLine = ' ';
|
||||
$intCount = 0;
|
||||
/*
|
||||
Get database values
|
||||
*/
|
||||
if ($chkShow === 1) {
|
||||
$strInstallHash = $SETS['install']['hash'] ?? 'nohash';
|
||||
if (isset($setFileVersion) && ($setFileVersion !== '') && ($setFileVersion !== null)) {
|
||||
$strVersion = $setFileVersion;
|
||||
} else {
|
||||
$strVersion = '0.0.0';
|
||||
}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%" border="0" class="content_listtable" style="padding:0px; margin:0px; top:3px;">
|
||||
if (isset($setGITVersion) && ($setGITVersion !== '') && ($setGITVersion !== null)) {
|
||||
$strGITVersion = $setGITVersion;
|
||||
} else {
|
||||
$strGITVersion = '0000-00-00';
|
||||
}
|
||||
/** @noinspection HttpUrlsUsage */
|
||||
$versionfeed = 'http://api.wizonet.ch/nagiosql/versioncheck.php?myversion=' . urlencode($strVersion) . '&mygit='
|
||||
. urlencode($strGITVersion) . '&myhash=' . urlencode($strInstallHash);
|
||||
$strError = '';
|
||||
if (isset($SETS['network']['proxy'], $SETS['network']['proxyserver']) && ($SETS['network']['proxy'] === '1') &&
|
||||
($SETS['network']['proxyserver'] !== '')) {
|
||||
if (isset($SETS['network']['proxyuser'], $SETS['network']['proxypasswd']) && ($SETS['network']['proxyuser'] !== '')
|
||||
&& ($SETS['network']['proxypasswd'] !== '')) {
|
||||
$strProxyAuth = base64_encode($SETS['network']['proxyuser'] . ':' . $SETS['network']['proxypasswd']);
|
||||
$aContext = array(
|
||||
'http' => array(
|
||||
'proxy' => 'tcp://' . $SETS['network']['proxyserver'],
|
||||
'request_fulluri' => true,
|
||||
'header' => "Proxy-Authorization: Basic $strProxyAuth",
|
||||
'timeout' => 1,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
$aContext = array(
|
||||
'http' => array(
|
||||
'proxy' => 'tcp://' . $SETS['network']['proxyserver'],
|
||||
'request_fulluri' => true,
|
||||
'timeout' => 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
$cxContext = stream_context_create($aContext);
|
||||
} else {
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
$cxContext = stream_context_create(array('http' => array('timeout' => 1)));
|
||||
}
|
||||
$arrFile = file($versionfeed, false, $cxContext);
|
||||
$arrError = error_get_last();
|
||||
error_reporting($intErrorReporting);
|
||||
if (isset($arrError['message']) && $arrError['message'] !== '') {
|
||||
$strError .= utf8_encode($arrError['message']) . ' (' . translate('check proxy settings') . ')';
|
||||
}
|
||||
$strInstalled = translate('Installed');
|
||||
$strAvailable = translate('Available');
|
||||
$strInformation = translate('Information');
|
||||
$strVersion = '';
|
||||
$strRelease = '';
|
||||
$strRelInfo = '';
|
||||
$strGIT = '';
|
||||
if (is_array($arrFile) && count($arrFile) !== 0) {
|
||||
foreach ($arrFile as $elem) {
|
||||
if (substr_count($elem, 'version') !== 0) {
|
||||
$strVersion = trim(strip_tags($elem));
|
||||
}
|
||||
if (substr_count($elem, 'git') !== 0) {
|
||||
$strGIT = trim(strip_tags($elem));
|
||||
}
|
||||
if (substr_count($elem, 'release_date') !== 0) {
|
||||
$strRelease = trim(strip_tags($elem));
|
||||
}
|
||||
if (substr_count($elem, 'error') !== 0) {
|
||||
$strError = trim(strip_tags($elem));
|
||||
}
|
||||
if (substr_count($elem, 'information') !== 0) {
|
||||
$strRelInfo = trim(strip_tags($elem));
|
||||
}
|
||||
}
|
||||
}
|
||||
$setFileAvailable = $strVersion;
|
||||
$setFileInformation = '';
|
||||
if (version_compare($strVersion, $setFileVersion, '==')) {
|
||||
if ($strGIT === $setGITVersion) {
|
||||
$setFileInformation = "<span class='greenmessage'>" . translate('You already have the latest version installed') .
|
||||
'</span>';
|
||||
} else {
|
||||
$setFileInformation = "<span class='greenmessage'>" . translate('You already have the latest version installed') .
|
||||
' (' . translate('new GIT hotfix version available:') . ' ' . $strVersion . '-' . $strGIT . ')</span>';
|
||||
}
|
||||
|
||||
} elseif (version_compare($strVersion, $setFileVersion, '>=')) {
|
||||
$setFileInformation = "<span class='redmessage'>" . translate('You are using an old NagiosQL version. Please ' .
|
||||
'update to the latest stable version') . '</span>: ';
|
||||
$setFileInformation .= '<a href="https://sourceforge.net/projects/nagiosql/files/" target="_blank">' .
|
||||
'NagiosQL on Sourceforge</a>';
|
||||
} elseif (version_compare($strVersion, $setFileVersion, '<=')) {
|
||||
$setFileInformation = "<span class='redmessage'>" . translate('You are using a newer development version ' .
|
||||
'without official support') . '</span>';
|
||||
}
|
||||
if (($strError !== 'none') && ($strError !== '')) {
|
||||
$setFileInformation = "<span class='redmessage'>" . $strError . '</span>';
|
||||
} ?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Version check</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link href="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>config/main.css" rel="stylesheet" type="text/css">
|
||||
<link href="<?php
|
||||
echo $_SESSION['SETS']['path']['base_url']; ?>config/content.css" rel="stylesheet" type="text/css">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%" border="0" class="content_listtable" style="padding:0; margin:0; top:3px;">
|
||||
<tr>
|
||||
<th style="text-align: center"><?php echo $strInstalled; ?></th>
|
||||
<th style="text-align: center"><?php echo $strAvailable; ?></th>
|
||||
<th style="text-align: left; padding-left: 30px;"><?php echo $strInformation; ?></th>
|
||||
<th style="text-align: center"><?php echo $strInstalled; ?></th>
|
||||
<th style="text-align: center"><?php echo $strAvailable; ?></th>
|
||||
<th style="text-align: left; padding-left: 30px;"><?php echo $strInformation; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tdmb" style="width:90px;vertical-align:top;padding-top:4px;"><?php echo $setFileVersion; ?></td>
|
||||
<td class="tdmb" style="width:90px;vertical-align:top;padding-top:4px;"><?php echo $setFileAvailable; ?></td>
|
||||
<td class="tdlb" style="width:470px;vertical-align:top;padding-top:4px;"><?php echo $setFileInformation; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<script language="JavaScript">
|
||||
<td class="tdmb" style="width:90px;vertical-align:top;padding-top:4px;"><?php
|
||||
echo $setFileVersion; ?></td>
|
||||
<td class="tdmb" style="width:90px;vertical-align:top;padding-top:4px;"><?php
|
||||
echo $setFileAvailable; ?></td>
|
||||
<td class="tdlb" style="width:470px;vertical-align:top;padding-top:4px;"><?php
|
||||
echo $setFileInformation; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
parent.document.getElementById('vcheck').className = 'elementHide';
|
||||
parent.document.getElementById('vcheck').className = 'elementHide';
|
||||
parent.document.getElementById('versioncheck').className = 'elementShow';
|
||||
<?php
|
||||
if (($strError != "none") && ($strError != "")) {
|
||||
echo " parent.document.getElementById('versioncheck').height = '65';";
|
||||
}
|
||||
?>
|
||||
//-->
|
||||
<?php
|
||||
if (($strError !== 'none') && ($strError !== '')) {
|
||||
echo " parent.document.getElementById('versioncheck').height = '65';";
|
||||
}
|
||||
?>
|
||||
//-->
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Commandline</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p><br>Loading...</p>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Commandline</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<style type="text/css">
|
||||
<!--
|
||||
body {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p><br>Loading...</p>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
@@ -1,473 +1,559 @@
|
||||
@charset "utf-8";
|
||||
/*/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : CSS content definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////*/
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : CSS content definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
/* Content main div */
|
||||
#content_main {
|
||||
top:-3px;
|
||||
left:0px;
|
||||
width:890px;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
padding-left: 10px;
|
||||
position:relative;
|
||||
font-size: 12px;
|
||||
top: -3px;
|
||||
left: 0;
|
||||
width: 890px;
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
position: relative;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* Content title (list and single view) */
|
||||
#content_title {
|
||||
color: #0c4271;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
margin-top:0px;
|
||||
margin-left:2px;
|
||||
font-size:20px;
|
||||
font-weight:bold;
|
||||
font-family:Arial, Helvetica, sans-serif;
|
||||
padding-bottom:5px;
|
||||
color: #0c4271;
|
||||
margin: 0 0 0 2px;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
padding: 0 0 5px;
|
||||
}
|
||||
|
||||
/* Content special definitions */
|
||||
.elementHide {
|
||||
display:none;
|
||||
display: none;
|
||||
}
|
||||
.elementShow {}
|
||||
|
||||
.elementShow {
|
||||
}
|
||||
|
||||
.redmessage {
|
||||
color: #FF0000;
|
||||
color: #FF0000;
|
||||
}
|
||||
|
||||
.greenmessage {
|
||||
color: #009900;
|
||||
}
|
||||
color: #009900;
|
||||
}
|
||||
|
||||
.blackmessage {
|
||||
color:#000000;
|
||||
}
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.bluemessage {
|
||||
color:#0000FF;
|
||||
}
|
||||
color: #0000FF;
|
||||
}
|
||||
|
||||
.checkred {
|
||||
color: #FF0000;
|
||||
font-weight:bold;
|
||||
color: #FF0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.checkgreen {
|
||||
color: #009900;
|
||||
font-weight:bold;
|
||||
color: #009900;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.checkorange {
|
||||
color: #FF9900;
|
||||
font-weight:bold;
|
||||
color: #FF9900;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env_table {
|
||||
padding-top:10px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.env_table td {
|
||||
font-size: 12px;
|
||||
padding:2px;
|
||||
font-size: 12px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
/*noinspection CssUnusedSymbol*/
|
||||
#content_main .warnmessage {
|
||||
font-size: 12px;
|
||||
color: #FF9900;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
color: #FF9900;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#content_main .errormessage {
|
||||
font-size: 12px;
|
||||
color: #FF0000;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
color: #FF0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#content_main .pagelinks {
|
||||
font-size: 12px;
|
||||
color: #006600;
|
||||
margin: 0 auto;
|
||||
width: 25%;
|
||||
font-size: 12px;
|
||||
color: #006600;
|
||||
margin: 0 auto;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
/* Content tags */
|
||||
#content_main h2 {
|
||||
font-size: 14px;
|
||||
margin-bottom:0px;
|
||||
font-size: 14px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Version string */
|
||||
.version {
|
||||
font-size: 9px;
|
||||
color: #999999;
|
||||
text-align: center;
|
||||
font-size: 9px;
|
||||
color: #999999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.version a {
|
||||
text-decoration:none;
|
||||
color:#999999;
|
||||
text-decoration: none;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.version a:hover {
|
||||
text-decoration:none;
|
||||
color:#333333;
|
||||
text-decoration: none;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Content forms */
|
||||
#content_main form {
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Content form table (single view and top/bottom line of list view) */
|
||||
.content_formtable {
|
||||
top:10px;
|
||||
position:relative;
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
top: 10px;
|
||||
position: relative;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.content_formtable td {
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
height:18px;
|
||||
text-align:left;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.content_tbl_row1 {
|
||||
width: 200px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.content_tbl_row2 {
|
||||
width: 205px;
|
||||
width: 205px;
|
||||
}
|
||||
|
||||
.content_tbl_row3 {
|
||||
width: 45px;
|
||||
width: 45px;
|
||||
}
|
||||
|
||||
.content_tbl_row4 {
|
||||
width: 30px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
/* Form field definitions */
|
||||
.content_formtable input[type=text] {
|
||||
width:200px;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
width: 200px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=password] {
|
||||
width:200px;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
width: 200px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=file] {
|
||||
width:400px;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
height:25px;
|
||||
width: 400px;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=text].inpmust {
|
||||
width:200px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
width: 200px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
/*noinspection CssUnusedSymbol*/
|
||||
.content_formtable input[type=text].inputlock {
|
||||
width:200px;
|
||||
border: 1px solid #053056;
|
||||
background: #5d5d5d url(../images/inputlock.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
color: #f7f7f7;
|
||||
font-weight: normal;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
width: 200px;
|
||||
border: 1px solid #053056;
|
||||
background: #5d5d5d url(../images/inputlock.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
color: #f7f7f7;
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=password].inpmust {
|
||||
width:200px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
width: 200px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=text].short {
|
||||
width:150px;
|
||||
height:18px;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
float:left;
|
||||
display:inline-block;
|
||||
width: 150px;
|
||||
height: 18px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.content_formtable input[type=text].shortmust {
|
||||
width:150px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size:12px;
|
||||
height:18px;
|
||||
float:left;
|
||||
display:inline-block;
|
||||
width: 150px;
|
||||
border: 1px solid #053056;
|
||||
background: #941616 url(../images/inputmust.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
height: 18px;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.content_formtable input[type=button] {
|
||||
border:1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
color:#0c4271;
|
||||
height:25px;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
margin:0px;
|
||||
padding-bottom:2px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #0c4271;
|
||||
height: 25px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=button][disabled] {
|
||||
border:1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
color:#CCC;
|
||||
height:25px;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
margin:0px;
|
||||
padding-bottom:2px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #CCC;
|
||||
height: 25px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=submit] {
|
||||
border:1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
color:#0c4271;
|
||||
height:25px;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
margin:0px;
|
||||
padding-bottom:2px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #0c4271;
|
||||
height: 25px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=submit][disabled] {
|
||||
border:1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
color:#CCC;
|
||||
height:25px;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
margin:0px;
|
||||
padding-bottom:2px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #CCC;
|
||||
height: 25px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=reset] {
|
||||
border:1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
color:#0c4271;
|
||||
height:25px;
|
||||
padding-left:10px;
|
||||
padding-right:10px;
|
||||
margin:0px;
|
||||
padding-bottom:2px;
|
||||
border: 1px solid #6CF;
|
||||
background: #d1e2fd url(../images/input.png);
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #0c4271;
|
||||
height: 25px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
margin: 0;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.content_formtable input[type=checkbox] {
|
||||
border:none;
|
||||
margin-left:0px;
|
||||
margin-right:0px;
|
||||
background:none;
|
||||
float:left;
|
||||
border: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
background: none;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.content_formtable input[type=radio] {
|
||||
border:none;
|
||||
margin-left:0px;
|
||||
margin-right:0px;
|
||||
background:none;
|
||||
float:left;
|
||||
border: none;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
background: none;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.content_formtable textarea.arginfo {
|
||||
width: 200px;
|
||||
border: 1px solid #6CF;
|
||||
background-color: #d1e2fd;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
color: #000000;
|
||||
font-size: 12px;
|
||||
height: 50px;
|
||||
float: left;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.content_formtable select {
|
||||
background-color: #d1e2fd;
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
border: 1px solid #6CF;
|
||||
padding-top:2px;
|
||||
background-color: #d1e2fd;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
border: 1px solid #6CF;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.content_formtable option {
|
||||
height: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
.content_formtable iframe {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#versioncheck {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Additional form table definitions */
|
||||
.content_formtable .inpmust {
|
||||
background-color: #941616;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
background-color: #941616;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #FFFFFF;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*noinspection CssUnusedSymbol*/
|
||||
.content_formtable .inactive_option {
|
||||
background-color:#FF8000;
|
||||
background-color: #FF8000;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.content_formtable .foreign_option {
|
||||
background-color:#C90;
|
||||
background-color: #C90;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.content_formtable .ieselected {
|
||||
background-color:#3399FF;
|
||||
color:#000000;
|
||||
background-color: #3399FF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.content_formtable .selectborder {
|
||||
border: 1px solid #6CF;
|
||||
width:202px;
|
||||
border: 1px solid #6CF;
|
||||
width: 202px;
|
||||
}
|
||||
|
||||
.content_formtable .selectbordermust {
|
||||
border: 1px solid #000;
|
||||
width:202px;
|
||||
border: 1px solid #000;
|
||||
width: 202px;
|
||||
}
|
||||
.content_formtable .empty_class {}
|
||||
|
||||
.content_formtable .empty_class {
|
||||
}
|
||||
|
||||
.content_formtable .infobutton_1 {
|
||||
left:3px;
|
||||
position:relative;
|
||||
left: 3px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content_formtable .infobutton_2 {
|
||||
left:3px;
|
||||
top:10px;
|
||||
position:relative;
|
||||
left: 3px;
|
||||
top: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content_formtable .shorttext {
|
||||
display: inline-block;
|
||||
float:left;
|
||||
padding-left:5px;
|
||||
padding-top:3px;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
padding-left: 5px;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.content_formtable .required_info {
|
||||
margin-left:30px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.content_formtable .radio_cell_1 {
|
||||
width:20px;
|
||||
height:18px;
|
||||
width: 20px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.content_formtable .radio_cell_2 {
|
||||
width:29px;
|
||||
padding-bottom:2px;
|
||||
width: 29px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
/* Content list view */
|
||||
.content_listtable {
|
||||
top:15px;
|
||||
position:relative;
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
margin-bottom:10px;
|
||||
top: 15px;
|
||||
position: relative;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.content_listtable th {
|
||||
background-color: #0c4271;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
background-color: #0c4271;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.content_listtable td {
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
padding:0px;
|
||||
padding-bottom:2px;
|
||||
height:25px;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
padding: 0 0 2px;
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
.content_listtable .tdlb {
|
||||
padding-left:5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.content_listtable .tdld {
|
||||
padding-left:5px;
|
||||
background-color: #dbe6ff;
|
||||
padding-left: 5px;
|
||||
background-color: #dbe6ff;
|
||||
}
|
||||
|
||||
.content_listtable .tdmb {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.content_listtable .tdmd {
|
||||
text-align: center;
|
||||
background-color: #dbe6ff;
|
||||
text-align: center;
|
||||
background-color: #dbe6ff;
|
||||
}
|
||||
|
||||
/* Log table */
|
||||
.content_logtable {
|
||||
top:15px;
|
||||
position:relative;
|
||||
font-family:Verdana, Helvetica, sans-serif;
|
||||
font-size:12px;
|
||||
margin-bottom:10px;
|
||||
top: 15px;
|
||||
position: relative;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.content_logtable th {
|
||||
background-color: #0c4271;
|
||||
border: 1px solid #333333;
|
||||
padding: 2px;
|
||||
color: #FFFFFF;
|
||||
background-color: #0c4271;
|
||||
border: 1px solid #333333;
|
||||
padding: 2px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.content_logtable td {
|
||||
background-color: #FFFFFF;
|
||||
padding: 2px;
|
||||
border: 1px solid #333333;
|
||||
text-align:center;
|
||||
background-color: #FFFFFF;
|
||||
padding: 2px;
|
||||
border: 1px solid #333333;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.content_logtable .loglegend {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
width:445px;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
width: 445px;
|
||||
}
|
||||
|
||||
/* Custom */
|
||||
.tablerow {
|
||||
border-bottom:1px solid #0c4271;
|
||||
font-size:12px;
|
||||
height:20px;
|
||||
padding-top:2px;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
border-bottom: 1px solid #0c4271;
|
||||
font-size: 12px;
|
||||
height: 20px;
|
||||
padding-top: 2px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
/* Page links / site numbers */
|
||||
.sitenumber {
|
||||
background-color:#4080BE;
|
||||
width:25px;
|
||||
height:25px;
|
||||
color:#d6d6d6;
|
||||
border:1px solid #FFF;
|
||||
text-align:center;
|
||||
cursor:pointer;
|
||||
background-color: #4080BE;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
color: #d6d6d6;
|
||||
border: 1px solid #FFF;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.sitenumber a {
|
||||
color:#d6d6d6;
|
||||
text-decoration:none;
|
||||
color: #d6d6d6;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.sitenumber a:hover {
|
||||
color:#d6d6d6;
|
||||
text-decoration:none;
|
||||
color: #d6d6d6;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.sitenumber-sel {
|
||||
background-color:#CCC;;
|
||||
color:#00396a;
|
||||
width:25px;
|
||||
height:25px;
|
||||
border:1px solid #FFF;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
background-color: #CCC;;
|
||||
color: #00396a;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
border: 1px solid #FFF;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#donate {
|
||||
top: 550px;
|
||||
left:3px;
|
||||
width: 150px;
|
||||
position:absolute;
|
||||
text-align:center;
|
||||
z-index:auto;
|
||||
top: 550px;
|
||||
left: 3px;
|
||||
width: 150px;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
z-index: auto;
|
||||
}
|
||||
|
||||
/* END */
|
||||
@@ -1,254 +1,297 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : field language variables (for replace in templates)
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Feldvariabeln setzen
|
||||
// ====================
|
||||
$arrDescription[] = array ("name" => "LANG_DOMAIN", "string" => translate("Domain"));
|
||||
$arrDescription[] = array ("name" => "LANG_DESCRIPTION", "string" => translate("Description"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVER_NAMEe", "string" => translate("Server name"));
|
||||
$arrDescription[] = array ("name" => "LANG_METHOD", "string" => translate("Method"));
|
||||
$arrDescription[] = array ("name" => "LANG_USERNAME", "string" => translate("Username"));
|
||||
$arrDescription[] = array ("name" => "LANG_PASSWORD", "string" => translate("Password"));
|
||||
$arrDescription[] = array ("name" => "LANG_SSH_KEY", "string" => translate("Directory with SSH key pair"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVER_NAME", "string" => translate("Server name"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONFIGURATION_DIRECTORIES", "string" => translate("Configuration directories"));
|
||||
$arrDescription[] = array ("name" => "LANG_BASE_DIRECTORY", "string" => translate("Base directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_DIRECTORY", "string" => translate("Host directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_DIRECTORY", "string" => translate("Service directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_BACKUP_DIRECTORY", "string" => translate("Backup directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_BACKUP_DIRECTORY", "string" => translate("Host backup directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_BACKUP_DIRECTORY", "string" => translate("Service backup directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_PICTURE_DIRECTORY", "string" => translate("Picture base directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_COMMAND_FILE", "string" => translate("Nagios command file"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_BINARY_FILE", "string" => translate("Nagios binary file"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_PROCESS_FILE", "string" => translate("Nagios process file"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_CONFIG_FILE", "string" => translate("Nagios config file"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_VERSION", "string" => translate("Nagios version"));
|
||||
$arrDescription[] = array ("name" => "LANG_ENABLE_COMMON_DOMAIN", "string" => translate("Use common domain"));
|
||||
$arrDescription[] = array ("name" => "LANG_ENABLE_UTF8_DECODE", "string" => translate("Decode UTF8 data in config files"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACCESS_KEY_HOLES", "string" => translate("Access key holes"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACCESS_KEYS", "string" => translate("Access keys"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACTIVE", "string" => translate("Active"));
|
||||
$arrDescription[] = array ("name" => "LANG_REGISTERED", "string" => translate("Registered"));
|
||||
$arrDescription[] = array ("name" => "LANG_REQUIRED", "string" => translate("required"));
|
||||
$arrDescription[] = array ("name" => "LANG_SAVE", "string" => translate("Save"));
|
||||
$arrDescription[] = array ("name" => "LANG_ABORT", "string" => translate("Abort"));
|
||||
$arrDescription[] = array ("name" => "LANG_FUNCTION", "string" => translate("Function"));
|
||||
$arrDescription[] = array ("name" => "LANG_MARKED", "string" => translate("Marked"));
|
||||
$arrDescription[] = array ("name" => "LANG_DO_IT", "string" => translate("Do it"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADD", "string" => translate("Add"));
|
||||
$arrDescription[] = array ("name" => "LANG_FORMCHECK", "string" => translate("Formcheck"));
|
||||
$arrDescription[] = array ("name" => "LANG_SECURE_QUESTION", "string" => translate("Secure question"));
|
||||
$arrDescription[] = array ("name" => "LANG_YES", "string" => translate("Yes"));
|
||||
$arrDescription[] = array ("name" => "LANG_NO", "string" => translate("No"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME", "string" => translate("Time"));
|
||||
$arrDescription[] = array ("name" => "LANG_USER", "string" => translate("User"));
|
||||
$arrDescription[] = array ("name" => "LANG_IP", "string" => translate("IP"));
|
||||
$arrDescription[] = array ("name" => "LANG_ENTRY", "string" => translate("Entry"));
|
||||
$arrDescription[] = array ("name" => "LANG_FROM", "string" => translate("From"));
|
||||
$arrDescription[] = array ("name" => "LANG_TO", "string" => translate("To"));
|
||||
$arrDescription[] = array ("name" => "LANG_DELETE_LOG_ENTRIES", "string" => translate("Delete log entries"));
|
||||
$arrDescription[] = array ("name" => "LANG_COPY", "string" => translate("Copy"));
|
||||
$arrDescription[] = array ("name" => "LANG_DELETE", "string" => translate("Delete"));
|
||||
$arrDescription[] = array ("name" => "LANG_MODIFY", "string" => translate("Modify"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONFIRM_PASSWORD", "string" => translate("Confirm password"));
|
||||
$arrDescription[] = array ("name" => "LANG_OLD_PASSWORD", "string" => translate("Old password"));
|
||||
$arrDescription[] = array ("name" => "LANG_NEW_PASSWORD", "string" => translate("New password"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHANGE_PASSWORD", "string" => translate("Change password"));
|
||||
$arrDescription[] = array ("name" => "LANG_MENU_PAGE", "string" => translate("Menu page"));
|
||||
$arrDescription[] = array ("name" => "LANG_SEARCH_STRING", "string" => translate("Search string"));
|
||||
$arrDescription[] = array ("name" => "LANG_SEARCH", "string" => translate("Search"));
|
||||
$arrDescription[] = array ("name" => "LANG_DELETE_SEARCH", "string" => translate("Reset filter"));
|
||||
$arrDescription[] = array ("name" => "LANG_WRITE_CONFIG_FILE", "string" => translate("Write config file"));
|
||||
$arrDescription[] = array ("name" => "LANG_DOWNLOAD", "string" => translate("Download"));
|
||||
$arrDescription[] = array ("name" => "LANG_DUPLICATE", "string" => translate("Copy"));
|
||||
$arrDescription[] = array ("name" => "LANG_COMMAND", "string" => translate("Command"));
|
||||
$arrDescription[] = array ("name" => "LANG_COMMAND_LINE", "string" => translate("Command line"));
|
||||
$arrDescription[] = array ("name" => "LANG_COMMAND_TYPE", "string" => translate("Command type"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_PERIOD", "string" => translate("Time period"));
|
||||
$arrDescription[] = array ("name" => "LANG_EXCLUDE", "string" => translate("Exclude"));
|
||||
$arrDescription[] = array ("name" => "LANG_INCLUDE", "string" => translate("Include"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_DEFINITIONS", "string" => translate("Time definitions"));
|
||||
$arrDescription[] = array ("name" => "LANG_WEEKDAY", "string" => translate("Weekday"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_RANGE", "string" => translate("Time range"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_DEFINITION", "string" => translate("Time definition"));
|
||||
$arrDescription[] = array ("name" => "LANG_INSERT", "string" => translate("Insert"));
|
||||
$arrDescription[] = array ("name" => "LANG_MODIFY_SELECTION", "string" => translate("Modify selection"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONTACT_NAME", "string" => translate("Contact name"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONTACT_GROUP", "string" => translate("Contact group"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_PERIOD_HOSTS", "string" => translate("Time period hosts"));
|
||||
$arrDescription[] = array ("name" => "LANG_TIME_PERIOD_SERVICES", "string" => translate("Time period services"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_OPTIONS", "string" => translate("Host options"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_OPTIONS", "string" => translate("Service options"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_COMMAND", "string" => translate("Host command"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_COMMAND", "string" => translate("Service command"));
|
||||
$arrDescription[] = array ("name" => "LANG_EMAIL_ADDRESS", "string" => translate("EMail address"));
|
||||
$arrDescription[] = array ("name" => "LANG_PAGER_NUMBER", "string" => translate("Pager number"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADDON_ADDRESS", "string" => translate("Addon address"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_NOTIF_ENABLE", "string" => translate("Host notif. enable"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_NOTIF_ENABLE", "string" => translate("Service notif. enable"));
|
||||
$arrDescription[] = array ("name" => "LANG_CAN_SUBMIT_COMMANDS", "string" => translate("Can submit commands"));
|
||||
$arrDescription[] = array ("name" => "LANG_RETAIN_STATUS_INFO", "string" => translate("Retain status info"));
|
||||
$arrDescription[] = array ("name" => "LANG_RETAIN_NONSTATUS_INFO", "string" => translate("Retain nonstatus info"));
|
||||
$arrDescription[] = array ("name" => "LANG_MEMBERS", "string" => translate("Members"));
|
||||
$arrDescription[] = array ("name" => "LANG_GROUP_MEMBERS", "string" => translate("Group members"));
|
||||
$arrDescription[] = array ("name" => "LANG_COMMON_SETTINGS", "string" => translate("Common settings"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_SETTINGS", "string" => translate("Service settings"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_SETTINGS_DESC", "string" => translate("Add this host configuration to existing service definitions"));
|
||||
$arrDescription[] = array ("name" => "LANG_TEMPLATE_NAME", "string" => translate("Template name"));
|
||||
$arrDescription[] = array ("name" => "LANG_PARENTS", "string" => translate("Parents"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_GROUPS", "string" => translate("Host groups"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHECK_COMMAND", "string" => translate("Check command"));
|
||||
$arrDescription[] = array ("name" => "LANG_COMMAND_VIEW", "string" => translate("Command view"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADDITIONAL_TEMPLATES", "string" => translate("Additional templates"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHECK_SETTINGS", "string" => translate("Check settings"));
|
||||
$arrDescription[] = array ("name" => "LANG_INITIAL_STATE", "string" => translate("Initial state"));
|
||||
$arrDescription[] = array ("name" => "LANG_RETRY_INTERVAL", "string" => translate("Retry interval"));
|
||||
$arrDescription[] = array ("name" => "LANG_MAX_CHECK_ATTEMPTS", "string" => translate("Max check attempts"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHECK_INTERVAL", "string" => translate("Check interval"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACTIVE_CHECKS_ENABLED", "string" => translate("Active checks enabled"));
|
||||
$arrDescription[] = array ("name" => "LANG_PASSIVE_CHECKS_ENABLED", "string" => translate("Passive checks enabled"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHECK_PERIOD", "string" => translate("Check period"));
|
||||
$arrDescription[] = array ("name" => "LANG_FRESHNESS_TRESHOLD", "string" => translate("Freshness treshold"));
|
||||
$arrDescription[] = array ("name" => "LANG_CHECK_FRESHNESS", "string" => translate("Check freshness"));
|
||||
$arrDescription[] = array ("name" => "LANG_OBSESS_OVER_HOST", "string" => translate("Obsess over host"));
|
||||
$arrDescription[] = array ("name" => "LANG_OBSESS_OVER_SERVICE", "string" => translate("Obsess over service"));
|
||||
$arrDescription[] = array ("name" => "LANG_EVENT_HANDLER", "string" => translate("Event handler"));
|
||||
$arrDescription[] = array ("name" => "LANG_EVENT_HANDLER_ENABLED", "string" => translate("Event handler enabled"));
|
||||
$arrDescription[] = array ("name" => "LANG_LOW_FLAP_THRESHOLD", "string" => translate("Low flap threshold"));
|
||||
$arrDescription[] = array ("name" => "LANG_HIGH_FLAP_THRESHOLD", "string" => translate("High flap threshold"));
|
||||
$arrDescription[] = array ("name" => "LANG_FLAP_DETECTION_ENABLED", "string" => translate("Flap detection enabled"));
|
||||
$arrDescription[] = array ("name" => "LANG_FLAP_DETECTION_OPTIONS", "string" => translate("Flap detection options"));
|
||||
$arrDescription[] = array ("name" => "LANG_RETAIN_STATUS_INFORMATION", "string" => translate("Retain status information"));
|
||||
$arrDescription[] = array ("name" => "LANG_RETAIN_NOSTATUS_INFORMATION","string" => translate("Retain nostatus information"));
|
||||
$arrDescription[] = array ("name" => "LANG_PROCESS_PERF_DATA", "string" => translate("Process perf data"));
|
||||
$arrDescription[] = array ("name" => "LANG_ALARM_SETTINGS", "string" => translate("Alarm settings"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONTACTS", "string" => translate("Contacts"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONTACT_GROUPS", "string" => translate("Contact groups"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTIFICATION_PERIOD", "string" => translate("Notification period"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTIFICATION_OPTIONS", "string" => translate("Notification options"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTIFICATION_INTERVAL", "string" => translate("Notification interval"));
|
||||
$arrDescription[] = array ("name" => "LANG_FIRST_NOTIFICATION_DELAY", "string" => translate("First notification delay"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTIFICATION_ENABLED", "string" => translate("Notification enabled"));
|
||||
$arrDescription[] = array ("name" => "LANG_STALKING_OPTIONS", "string" => translate("Stalking options"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADDON_SETTINGS", "string" => translate("Addon settings"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTES", "string" => translate("Notes"));
|
||||
$arrDescription[] = array ("name" => "LANG_VRML_IMAGE", "string" => translate("VRML image"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTES_URL", "string" => translate("Notes URL"));
|
||||
$arrDescription[] = array ("name" => "LANG_STATUS_IMAGE", "string" => translate("Status image"));
|
||||
$arrDescription[] = array ("name" => "LANG_ICON_IMAGE", "string" => translate("Icon image"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACTION_URL", "string" => translate("Action URL"));
|
||||
$arrDescription[] = array ("name" => "LANG_2D_COORDS", "string" => translate("2D coords"));
|
||||
$arrDescription[] = array ("name" => "LANG_3D_COORDS", "string" => translate("3D coords"));
|
||||
$arrDescription[] = array ("name" => "LANG_ICON_IMAGE_ALT_TEXT", "string" => translate("Icon image ALT text"));
|
||||
$arrDescription[] = array ("name" => "LANG_STANDARD", "string" => translate("standard"));
|
||||
$arrDescription[] = array ("name" => "LANG_ON", "string" => translate("on"));
|
||||
$arrDescription[] = array ("name" => "LANG_OFF", "string" => translate("off"));
|
||||
$arrDescription[] = array ("name" => "LANG_SKIP", "string" => translate("skip"));
|
||||
$arrDescription[] = array ("name" => "LANG_FREE_VARIABLE_DEFINITIONS", "string" => translate("Free variable definitions"));
|
||||
$arrDescription[] = array ("name" => "LANG_VARIABLE_NAME", "string" => translate("Variable name"));
|
||||
$arrDescription[] = array ("name" => "LANG_VARIABLE_VALUE", "string" => translate("Variable value"));
|
||||
$arrDescription[] = array ("name" => "DELETE", "string" => translate("Delete"));
|
||||
$arrDescription[] = array ("name" => "DUPLICATE", "string" => translate("Copy"));
|
||||
$arrDescription[] = array ("name" => "ACTIVATE", "string" => translate("Activate"));
|
||||
$arrDescription[] = array ("name" => "DEACTIVATE", "string" => translate("Deactivate"));
|
||||
$arrDescription[] = array ("name" => "INFO", "string" => translate("Information"));
|
||||
$arrDescription[] = array ("name" => "WRITE_CONFIG", "string" => translate("Write config file"));
|
||||
$arrDescription[] = array ("name" => "LANG_DELETESINGLE", "string" => translate("Do you really want to delete this database entry:"));
|
||||
$arrDescription[] = array ("name" => "LANG_DELETEOK", "string" => translate("Do you really want to delete all marked entries?"));
|
||||
$arrDescription[] = array ("name" => "LANG_MARKALL", "string" => translate("Mark all shown datasets"));
|
||||
$arrDescription[] = array ("name" => "LANG_FILE", "string" => translate("File"));
|
||||
$arrDescription[] = array ("name" => "LANG_WRITE_CONF_ALL", "string" => translate("Write all config files"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADDRESS", "string" => translate("Address"));
|
||||
$arrDescription[] = array ("name" => "LANG_DISPLAY_NAME", "string" => translate("Display name"));
|
||||
$arrDescription[] = array ("name" => "LANG_USE_THIS_AS_TEMPLATE", "string" => translate("Use this configuration as template"));
|
||||
$arrDescription[] = array ("name" => "LANG_GENERIC_NAME", "string" => translate("Generic name"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOST_NAME", "string" => translate("Host name"));
|
||||
$arrDescription[] = array ("name" => "FILL_ALLFIELDS", "string" => translate("Please fill in all fields marked with an *"));
|
||||
$arrDescription[] = array ("name" => "FILL_ILLEGALCHARS", "string" => translate("The following field contains not permitted characters:"));
|
||||
$arrDescription[] = array ("name" => "FILL_BOXES", "string" => translate("Please check at least one option from:"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOSTGROUP_NAME", "string" => translate("Host group name"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOSTGROUP_MEMBERS", "string" => translate("Host group members"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOSTS", "string" => translate("Hosts"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICE_DESCRIPTION", "string" => translate("Service description"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICEGROUPS", "string" => translate("Service groups"));
|
||||
$arrDescription[] = array ("name" => "LANG_IS_VOLATILE", "string" => translate("Is volatile"));
|
||||
$arrDescription[] = array ("name" => "LANG_PARALLELIZE_CHECK", "string" => translate("Parallelize checks"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONFIGFILTER", "string" => translate("Config name filter"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONFIG_NAME", "string" => translate("Config name"));
|
||||
$arrDescription[] = array ("name" => "LANG_IMPORT_DIRECTORY", "string" => translate("Import directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_INSERT_ALL_VARIABLE", "string" => translate("Please insert a variable name and a variable definition"));
|
||||
$arrDescription[] = array ("name" => "LANG_MUST_BUT_TEMPLATE", "string" => "<b>".translate("Warning:")."<\/b> ".translate("You have not filled in some required fields!<br><br>If this values are set by a template, you can save anyway - otherwise you will get an invalid configuration!"));
|
||||
$arrDescription[] = array ("name" => "LANG_TPLNAME", "string" => translate("Template name"));
|
||||
$arrDescription[] = array ("name" => "LANG_NAGIOS_BASEDIR", "string" => translate("Nagios base directory"));
|
||||
$arrDescription[] = array ("name" => "LANG_WRITE_CONFIG", "string" => translate("Write config"));
|
||||
$arrDescription[] = array ("name" => "FILL_ARGUMENTS", "string" => "<b>".translate("Warning:")."<\/b> ".translate("You have not filled in all command arguments (ARGx) for your selected command!<br><br>If this arguments are optional, you can save anyway - otherwise you will get an invalid configuration!"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICEGROUP_MEMBERS", "string" => translate("Service group members"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICEGROUP_NAME", "string" => translate("Service group name"));
|
||||
$arrDescription[] = array ("name" => "LANG_DEPENDHOSTS", "string" => translate("Dependent hosts"));
|
||||
$arrDescription[] = array ("name" => "LANG_DEPENDHOSTGRS", "string" => translate("Dependent hostgroups"));
|
||||
$arrDescription[] = array ("name" => "LANG_HOSTGROUPS", "string" => translate("Hostgroups"));
|
||||
$arrDescription[] = array ("name" => "LANG_INHERIT", "string" => translate("Inherit parents"));
|
||||
$arrDescription[] = array ("name" => "LANG_EXECFAILCRIT", "string" => translate("Execution failure criteria"));
|
||||
$arrDescription[] = array ("name" => "LANG_NOTIFFAILCRIT", "string" => translate("Nofification failure criteria"));
|
||||
$arrDescription[] = array ("name" => "LANG_DEPENDENCY_PERIOD", "string" => translate("Dependency period"));
|
||||
$arrDescription[] = array ("name" => "LANG_ESCALATION_PERIOD", "string" => translate("Escalation period"));
|
||||
$arrDescription[] = array ("name" => "LANG_ESCALATION_OPTIONS", "string" => translate("Escalation options"));
|
||||
$arrDescription[] = array ("name" => "LANG_FIRST_NOTIFICATION", "string" => translate("First notification"));
|
||||
$arrDescription[] = array ("name" => "LANG_LAST_NOTIFICATION", "string" => translate("Last notification"));
|
||||
$arrDescription[] = array ("name" => "LANG_DEPENDSERVICES", "string" => translate("Dependent services"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICES", "string" => translate("Services"));
|
||||
$arrDescription[] = array ("name" => "LANG_DEPENDSERVICEGROUPS", "string" => translate("Dependent servicegroups"));
|
||||
$arrDescription[] = array ("name" => "LANG_HELP", "string" => translate("Help"));
|
||||
$arrDescription[] = array ("name" => "LANG_CALENDAR", "string" => translate("Calendar"));
|
||||
$arrDescription[] = array ("name" => "LANG_GROUPNAME", "string" => translate("Group name"));
|
||||
$arrDescription[] = array ("name" => "LANG_USERS", "string" => translate("Users"));
|
||||
$arrDescription[] = array ("name" => "LANG_ACCESS_GROUP", "string" => translate("Access group"));
|
||||
$arrDescription[] = array ("name" => "LANG_USER_DEFINITIONS", "string" => translate("User definitions"));
|
||||
$arrDescription[] = array ("name" => "LANG_USER_NAME", "string" => translate("User name"));
|
||||
$arrDescription[] = array ("name" => "LANG_USER_RIGHTS", "string" => translate("User rights"));
|
||||
$arrDescription[] = array ("name" => "LANG_OBJECT_ACCESS_RESTRICTIONS", "string" => translate("Object access restrictions"));
|
||||
$arrDescription[] = array ("name" => "LANG_ADMIN_ENABLE", "string" => translate("Enable group administration"));
|
||||
$arrDescription[] = array ("name" => "LANG_SHOW_RELATION_DATA", "string" => translate("Show relation data"));
|
||||
$arrDescription[] = array ("name" => "LANG_HIDE_RELATION_DATA", "string" => translate("Hide relation data"));
|
||||
$arrDescription[] = array ("name" => "LANG_CONFIG_TARGET", "string" => translate("Configuration target"));
|
||||
$arrDescription[] = array ("name" => "LANG_LANGUAGE", "string" => translate("User language"));
|
||||
$arrDescription[] = array ("name" => "LANG_STANDARD_DOMAIN", "string" => translate("Standard domain"));
|
||||
$arrDescription[] = array ("name" => "LANG_SERVICES_WARNING", "string" => "<b>".translate("Warning:")."</b> ".translate("The associated services must be additionally written to the files. Only writing the host configuration is not sufficient because the modification is stored inside the service files!"));
|
||||
/* ------------------------------------------------ese--------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : field language variables (for replace in templates)
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
/**
|
||||
* Variable includes
|
||||
* @var array $SETS from prepend_adm.php
|
||||
*/
|
||||
/*
|
||||
Feldvariabeln setzen
|
||||
*/
|
||||
$arrDescription[] = array('name' => 'LANG_DOMAIN', 'string' => translate('Domain'));
|
||||
$arrDescription[] = array('name' => 'LANG_DESCRIPTION', 'string' => translate('Description'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVER_NAME', 'string' => translate('Server name'));
|
||||
$arrDescription[] = array('name' => 'LANG_METHOD', 'string' => translate('Method'));
|
||||
$arrDescription[] = array('name' => 'LANG_USERNAME', 'string' => translate('Username'));
|
||||
$arrDescription[] = array('name' => 'LANG_PASSWORD', 'string' => translate('Password'));
|
||||
$arrDescription[] = array('name' => 'LANG_SSH_PORT', 'string' => translate('SSH Port number'));
|
||||
$arrDescription[] = array('name' => 'LANG_SSH_KEY',
|
||||
'string' => translate('Directory with SSH key pair'));
|
||||
$arrDescription[] = array('name' => 'LANG_FTPS',
|
||||
'string' => translate('Use encrypted FTP (FTPS)'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVER_NAME', 'string' => translate('Server name'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONFIGURATION_DIRECTORIES',
|
||||
'string' => translate('Configuration directories'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_DIRECTORIES',
|
||||
'string' => translate('Nagios configuration files and directories'));
|
||||
$arrDescription[] = array('name' => 'LANG_BASE_DIRECTORY', 'string' => translate('Base directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_DIRECTORY', 'string' => translate('Host directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_DIRECTORY', 'string' => translate('Service directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_BACKUP_DIRECTORY', 'string' => translate('Backup directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_BACKUP_DIRECTORY', 'string' => translate('Host backup directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_BACKUP_DIRECTORY',
|
||||
'string' => translate('Service backup directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_PICTURE_DIRECTORY', 'string' => translate('Picture base directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_COMMAND_FILE', 'string' => translate('Nagios command file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_BINARY_FILE', 'string' => translate('Nagios binary file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_PROCESS_FILE', 'string' => translate('Nagios process file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_CONFIG_FILE', 'string' => translate('Nagios config file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_CGI_FILE', 'string' => translate('Nagios cgi file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_RESOURCE_FILE', 'string' => translate('Nagios resource file'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_VERSION', 'string' => translate('Nagios version'));
|
||||
$arrDescription[] = array('name' => 'LANG_ENABLE_COMMON_DOMAIN', 'string' => translate('Use common domain'));
|
||||
$arrDescription[] = array('name' => 'LANG_ENABLE_UTF8_DECODE',
|
||||
'string' => translate('Decode UTF8 data in config files'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACCESS_KEY_HOLES', 'string' => translate('Access key holes'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACCESS_KEYS', 'string' => translate('Access keys'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACTIVE', 'string' => translate('Active'));
|
||||
$arrDescription[] = array('name' => 'LANG_REGISTERED', 'string' => translate('Registered'));
|
||||
$arrDescription[] = array('name' => 'LANG_REQUIRED', 'string' => translate('required'));
|
||||
$arrDescription[] = array('name' => 'LANG_SAVE', 'string' => translate('Save'));
|
||||
$arrDescription[] = array('name' => 'LANG_ABORT', 'string' => translate('Abort'));
|
||||
$arrDescription[] = array('name' => 'LANG_FUNCTION', 'string' => translate('Function'));
|
||||
$arrDescription[] = array('name' => 'LANG_MARKED', 'string' => translate('Marked'));
|
||||
$arrDescription[] = array('name' => 'LANG_DO_IT', 'string' => translate('Do it'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADD', 'string' => translate('Add'));
|
||||
$arrDescription[] = array('name' => 'LANG_FORMCHECK', 'string' => translate('Form check'));
|
||||
$arrDescription[] = array('name' => 'LANG_SECURE_QUESTION', 'string' => translate('Secure question'));
|
||||
$arrDescription[] = array('name' => 'LANG_YES', 'string' => translate('Yes'));
|
||||
$arrDescription[] = array('name' => 'LANG_NO', 'string' => translate('No'));
|
||||
$arrDescription[] = array('name' => 'LANG_ALL', 'string' => translate('All'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME', 'string' => translate('Time'));
|
||||
$arrDescription[] = array('name' => 'LANG_USER', 'string' => translate('User'));
|
||||
$arrDescription[] = array('name' => 'LANG_IP', 'string' => translate('IP Address'));
|
||||
$arrDescription[] = array('name' => 'LANG_ENTRY', 'string' => translate('Entry'));
|
||||
$arrDescription[] = array('name' => 'LANG_FROM', 'string' => translate('From'));
|
||||
$arrDescription[] = array('name' => 'LANG_TO', 'string' => translate('To'));
|
||||
$arrDescription[] = array('name' => 'LANG_DELETE_LOG_ENTRIES', 'string' => translate('Delete log entries'));
|
||||
$arrDescription[] = array('name' => 'LANG_COPY', 'string' => translate('Copy'));
|
||||
$arrDescription[] = array('name' => 'LANG_DELETE', 'string' => translate('Delete'));
|
||||
$arrDescription[] = array('name' => 'LANG_MODIFY', 'string' => translate('Modify'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONFIRM_PASSWORD', 'string' => translate('Confirm password'));
|
||||
$arrDescription[] = array('name' => 'LANG_OLD_PASSWORD', 'string' => translate('Old password'));
|
||||
$arrDescription[] = array('name' => 'LANG_NEW_PASSWORD', 'string' => translate('New password'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHANGE_PASSWORD', 'string' => translate('Change password'));
|
||||
$arrDescription[] = array('name' => 'LANG_MENU_PAGE', 'string' => translate('Menu page'));
|
||||
$arrDescription[] = array('name' => 'LANG_SEARCH_STRING', 'string' => translate('Search string'));
|
||||
$arrDescription[] = array('name' => 'LANG_SEARCH', 'string' => translate('Search'));
|
||||
$arrDescription[] = array('name' => 'LANG_DELETE_SEARCH', 'string' => translate('Reset filter'));
|
||||
$arrDescription[] = array('name' => 'LANG_WRITE_CONFIG_FILE', 'string' => translate('Write config file'));
|
||||
$arrDescription[] = array('name' => 'LANG_DOWNLOAD', 'string' => translate('Download'));
|
||||
$arrDescription[] = array('name' => 'LANG_DUPLICATE', 'string' => translate('Copy'));
|
||||
$arrDescription[] = array('name' => 'LANG_COMMAND', 'string' => translate('Command'));
|
||||
$arrDescription[] = array('name' => 'LANG_COMMAND_LINE', 'string' => translate('Command line'));
|
||||
$arrDescription[] = array('name' => 'LANG_COMMAND_TYPE', 'string' => translate('Command type'));
|
||||
$arrDescription[] = array('name' => 'LANG_HELP_TEXT', 'string' => translate('Help text'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_PERIOD', 'string' => translate('Time period'));
|
||||
$arrDescription[] = array('name' => 'LANG_EXCLUDE', 'string' => translate('Exclude'));
|
||||
$arrDescription[] = array('name' => 'LANG_INCLUDE', 'string' => translate('Include'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_DEFINITIONS', 'string' => translate('Time definitions'));
|
||||
$arrDescription[] = array('name' => 'LANG_WEEKDAY', 'string' => translate('Weekday'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_RANGE', 'string' => translate('Time range'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_DEFINITION', 'string' => translate('Time definition'));
|
||||
$arrDescription[] = array('name' => 'LANG_INSERT', 'string' => translate('Insert'));
|
||||
$arrDescription[] = array('name' => 'LANG_MODIFY_SELECTION', 'string' => translate('Modify selection'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONTACT_NAME', 'string' => translate('Contact name'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONTACT_GROUP', 'string' => translate('Contact group'));
|
||||
$arrDescription[] = array('name' => 'LANG_MINIMUM_IMPORTANCE', 'string' => translate('Minimum importance'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_PERIOD_HOSTS', 'string' => translate('Time period hosts'));
|
||||
$arrDescription[] = array('name' => 'LANG_TIME_PERIOD_SERVICES', 'string' => translate('Time period services'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_OPTIONS', 'string' => translate('Host options'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_OPTIONS', 'string' => translate('Service options'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_COMMAND', 'string' => translate('Host command'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_COMMAND', 'string' => translate('Service command'));
|
||||
$arrDescription[] = array('name' => 'LANG_EMAIL_ADDRESS', 'string' => translate('EMail address'));
|
||||
$arrDescription[] = array('name' => 'LANG_PAGER_NUMBER', 'string' => translate('Pager number'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADDON_ADDRESS', 'string' => translate('Addon address'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_NOTIF_ENABLE', 'string' => translate('Host notif. enable'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_NOTIF_ENABLE', 'string' => translate('Service notif. enable'));
|
||||
$arrDescription[] = array('name' => 'LANG_CAN_SUBMIT_COMMANDS', 'string' => translate('Can submit commands'));
|
||||
$arrDescription[] = array('name' => 'LANG_RETAIN_STATUS_INFO', 'string' => translate('Retain status info'));
|
||||
$arrDescription[] = array('name' => 'LANG_RETAIN_NONSTATUS_INFO', 'string' => translate('Retain non-status info'));
|
||||
$arrDescription[] = array('name' => 'LANG_MEMBERS', 'string' => translate('Members'));
|
||||
$arrDescription[] = array('name' => 'LANG_GROUP_MEMBERS', 'string' => translate('Group members'));
|
||||
$arrDescription[] = array('name' => 'LANG_COMMON_SETTINGS', 'string' => translate('Common settings'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_SETTINGS', 'string' => translate('Service settings'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_SETTINGS_DESC',
|
||||
'string' => translate('Add this host configuration to existing service definitions'));
|
||||
$arrDescription[] = array('name' => 'LANG_TEMPLATE_NAME', 'string' => translate('Template name'));
|
||||
$arrDescription[] = array('name' => 'LANG_PARENTS', 'string' => translate('Parents'));
|
||||
$arrDescription[] = array('name' => 'LANG_PARENT_SERVICES', 'string' => translate('Parent services'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_GROUPS', 'string' => translate('Host groups'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHECK_COMMAND', 'string' => translate('Check command'));
|
||||
$arrDescription[] = array('name' => 'LANG_COMMAND_VIEW', 'string' => translate('Command view'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADDITIONAL_TEMPLATES', 'string' => translate('Additional templates'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHECK_SETTINGS', 'string' => translate('Check settings'));
|
||||
$arrDescription[] = array('name' => 'LANG_INITIAL_STATE', 'string' => translate('Initial state'));
|
||||
$arrDescription[] = array('name' => 'LANG_RETRY_INTERVAL', 'string' => translate('Retry interval'));
|
||||
$arrDescription[] = array('name' => 'LANG_MAX_CHECK_ATTEMPTS', 'string' => translate('Max check attempts'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHECK_INTERVAL', 'string' => translate('Check interval'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACTIVE_CHECKS_ENABLED', 'string' => translate('Active checks enabled'));
|
||||
$arrDescription[] = array('name' => 'LANG_PASSIVE_CHECKS_ENABLED', 'string' => translate('Passive checks enabled'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHECK_PERIOD', 'string' => translate('Check period'));
|
||||
$arrDescription[] = array('name' => 'LANG_FRESHNESS_TRESHOLD', 'string' => translate('Freshness treshold'));
|
||||
$arrDescription[] = array('name' => 'LANG_CHECK_FRESHNESS', 'string' => translate('Check freshness'));
|
||||
$arrDescription[] = array('name' => 'LANG_OBSESS_OVER_HOST', 'string' => translate('Obsess over host'));
|
||||
$arrDescription[] = array('name' => 'LANG_OBSESS_OVER_SERVICE', 'string' => translate('Obsess over service'));
|
||||
$arrDescription[] = array('name' => 'LANG_EVENT_HANDLER', 'string' => translate('Event handler'));
|
||||
$arrDescription[] = array('name' => 'LANG_EVENT_HANDLER_ENABLED', 'string' => translate('Event handler enabled'));
|
||||
$arrDescription[] = array('name' => 'LANG_LOW_FLAP_THRESHOLD', 'string' => translate('Low flap threshold'));
|
||||
$arrDescription[] = array('name' => 'LANG_HIGH_FLAP_THRESHOLD', 'string' => translate('High flap threshold'));
|
||||
$arrDescription[] = array('name' => 'LANG_FLAP_DETECTION_ENABLED', 'string' => translate('Flap detection enabled'));
|
||||
$arrDescription[] = array('name' => 'LANG_FLAP_DETECTION_OPTIONS', 'string' => translate('Flap detection options'));
|
||||
$arrDescription[] = array('name' => 'LANG_RETAIN_STATUS_INFORMATION',
|
||||
'string' => translate('Retain status information'));
|
||||
$arrDescription[] = array('name' => 'LANG_RETAIN_NOSTATUS_INFORMATION',
|
||||
'string' => translate('Retain non-status information'));
|
||||
$arrDescription[] = array('name' => 'LANG_PROCESS_PERF_DATA', 'string' => translate('Process perf data'));
|
||||
$arrDescription[] = array('name' => 'LANG_ALARM_SETTINGS', 'string' => translate('Alarm settings'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONTACTS', 'string' => translate('Contacts'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONTACT_GROUPS', 'string' => translate('Contact groups'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTIFICATION_PERIOD', 'string' => translate('Notification period'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTIFICATION_OPTIONS', 'string' => translate('Notification options'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTIFICATION_INTERVAL', 'string' => translate('Notification interval'));
|
||||
$arrDescription[] = array('name' => 'LANG_FIRST_NOTIFICATION_DELAY',
|
||||
'string' => translate('First notification delay'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTIFICATION_ENABLED', 'string' => translate('Notification enabled'));
|
||||
$arrDescription[] = array('name' => 'LANG_IMPORTANCE', 'string' => translate('Importance'));
|
||||
$arrDescription[] = array('name' => 'LANG_STALKING_OPTIONS', 'string' => translate('Stalking options'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADDON_SETTINGS', 'string' => translate('Addon settings'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTES', 'string' => translate('Notes'));
|
||||
$arrDescription[] = array('name' => 'LANG_VRML_IMAGE', 'string' => translate('VRML image'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTES_URL', 'string' => translate('Notes URL'));
|
||||
$arrDescription[] = array('name' => 'LANG_STATUS_IMAGE', 'string' => translate('Status image'));
|
||||
$arrDescription[] = array('name' => 'LANG_ICON_IMAGE', 'string' => translate('Icon image'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACTION_URL', 'string' => translate('Action URL'));
|
||||
$arrDescription[] = array('name' => 'LANG_2D_COORDS', 'string' => translate('2D coords'));
|
||||
$arrDescription[] = array('name' => 'LANG_3D_COORDS', 'string' => translate('3D coords'));
|
||||
$arrDescription[] = array('name' => 'LANG_ICON_IMAGE_ALT_TEXT', 'string' => translate('Icon image ALT text'));
|
||||
$arrDescription[] = array('name' => 'LANG_STANDARD', 'string' => translate('standard'));
|
||||
$arrDescription[] = array('name' => 'LANG_ON', 'string' => translate('on'));
|
||||
$arrDescription[] = array('name' => 'LANG_OFF', 'string' => translate('off'));
|
||||
$arrDescription[] = array('name' => 'LANG_SKIP', 'string' => translate('skip'));
|
||||
$arrDescription[] = array('name' => 'LANG_FREE_VARIABLE_DEFINITIONS',
|
||||
'string' => translate('Free variable definitions'));
|
||||
$arrDescription[] = array('name' => 'LANG_VARIABLE_NAME', 'string' => translate('Variable name'));
|
||||
$arrDescription[] = array('name' => 'LANG_VARIABLE_VALUE', 'string' => translate('Variable value'));
|
||||
$arrDescription[] = array('name' => 'DELETE', 'string' => translate('Delete'));
|
||||
$arrDescription[] = array('name' => 'DUPLICATE', 'string' => translate('Copy'));
|
||||
$arrDescription[] = array('name' => 'ACTIVATE', 'string' => translate('Activate'));
|
||||
$arrDescription[] = array('name' => 'DEACTIVATE', 'string' => translate('Deactivate'));
|
||||
$arrDescription[] = array('name' => 'INFO', 'string' => translate('Information'));
|
||||
$arrDescription[] = array('name' => 'WRITE_CONFIG', 'string' => translate('Write config file'));
|
||||
$arrDescription[] = array('name' => 'LANG_DELETESINGLE',
|
||||
'string' => translate('Do you really want to delete this database entry:'));
|
||||
$arrDescription[] = array('name' => 'LANG_DELETEOK',
|
||||
'string' => translate('Do you really want to delete all marked entries?'));
|
||||
$arrDescription[] = array('name' => 'LANG_MARKALL',
|
||||
'string' => translate('Mark all shown datasets'));
|
||||
$arrDescription[] = array('name' => 'LANG_FILE', 'string' => translate('File'));
|
||||
$arrDescription[] = array('name' => 'LANG_WRITE_CONF_ALL', 'string' => translate('Write all config files'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADDRESS', 'string' => translate('Address'));
|
||||
$arrDescription[] = array('name' => 'LANG_DISPLAY_NAME', 'string' => translate('Display name'));
|
||||
$arrDescription[] = array('name' => 'LANG_USE_THIS_AS_TEMPLATE',
|
||||
'string' => translate('Use this configuration as a template'));
|
||||
$arrDescription[] = array('name' => 'LANG_GENERIC_NAME', 'string' => translate('Generic name'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOST_NAME', 'string' => translate('Host name'));
|
||||
$arrDescription[] = array('name' => 'FILL_ALLFIELDS',
|
||||
'string' => translate('Please fill in all fields marked with an *'));
|
||||
$arrDescription[] = array('name' => 'FILL_ILLEGALCHARS',
|
||||
'string' => translate('The following field contains illegal characters:'));
|
||||
$arrDescription[] = array('name' => 'FILL_BOXES',
|
||||
'string' => translate('Please check at least one option from:'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOSTGROUP_NAME', 'string' => translate('Host group name'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOSTGROUP_MEMBERS', 'string' => translate('Host group members'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOSTS', 'string' => translate('Hosts'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_DESCRIPTION', 'string' => translate('Service description'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICEGROUPS', 'string' => translate('Service groups'));
|
||||
$arrDescription[] = array('name' => 'LANG_IS_VOLATILE', 'string' => translate('Is volatile'));
|
||||
$arrDescription[] = array('name' => 'LANG_PARALLELIZE_CHECK', 'string' => translate('Parallelize checks'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONFIGFILTER', 'string' => translate('Config name filter'));
|
||||
$arrDescription[] = array('name' => 'LANG_FILTER', 'string' => translate('Filter'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICE_NAME', 'string' => translate('Service name'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONFIG_NAME', 'string' => translate('Config name'));
|
||||
$arrDescription[] = array('name' => 'LANG_IMPORT_DIRECTORY', 'string' => translate('Import directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_INSERT_ALL_VARIABLE',
|
||||
'string' => translate('Please insert a variable name and a variable definition'));
|
||||
$arrDescription[] = array('name' => 'LANG_MUST_BUT_TEMPLATE',
|
||||
'string' => '<b>' . translate('Warning:') . '</b> ' . translate('You have not filled in some required fields!<br><br>'
|
||||
. 'If these values are set by a template, you can save anyway - otherwise you will get an invalid '
|
||||
. 'configuration!'));
|
||||
$arrDescription[] = array('name' => 'LANG_TPLNAME', 'string' => translate('Template name'));
|
||||
$arrDescription[] = array('name' => 'LANG_NAGIOS_BASEDIR', 'string' => translate('Nagios base directory'));
|
||||
$arrDescription[] = array('name' => 'LANG_WRITE_CONFIG', 'string' => translate('Write config'));
|
||||
$arrDescription[] = array('name' => 'FILL_ARGUMENTS',
|
||||
'string' => '<b>' . translate('Warning:') . '</b> ' . translate('You have not filled in all command arguments (ARGx) '
|
||||
. 'for your selected command!<br><br>If these arguments are optional, you can save anyway - otherwise '
|
||||
. 'you will get an invalid configuration!'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICEGROUP_MEMBERS', 'string' => translate('Service group members'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICEGROUP_NAME', 'string' => translate('Service group name'));
|
||||
$arrDescription[] = array('name' => 'LANG_DEPENDHOSTS', 'string' => translate('Dependent hosts'));
|
||||
$arrDescription[] = array('name' => 'LANG_DEPENDHOSTGRS', 'string' => translate('Dependent hostgroups'));
|
||||
$arrDescription[] = array('name' => 'LANG_HOSTGROUPS', 'string' => translate('Hostgroups'));
|
||||
$arrDescription[] = array('name' => 'LANG_INHERIT', 'string' => translate('Inherit parents'));
|
||||
$arrDescription[] = array('name' => 'LANG_EXECFAILCRIT',
|
||||
'string' => translate('Execution failure criteria'));
|
||||
$arrDescription[] = array('name' => 'LANG_NOTIFFAILCRIT',
|
||||
'string' => translate('Nofification failure criteria'));
|
||||
$arrDescription[] = array('name' => 'LANG_DEPENDENCY_PERIOD', 'string' => translate('Dependency period'));
|
||||
$arrDescription[] = array('name' => 'LANG_ESCALATION_PERIOD', 'string' => translate('Escalation period'));
|
||||
$arrDescription[] = array('name' => 'LANG_ESCALATION_OPTIONS', 'string' => translate('Escalation options'));
|
||||
$arrDescription[] = array('name' => 'LANG_FIRST_NOTIFICATION', 'string' => translate('First notification'));
|
||||
$arrDescription[] = array('name' => 'LANG_LAST_NOTIFICATION', 'string' => translate('Last notification'));
|
||||
$arrDescription[] = array('name' => 'LANG_DEPENDSERVICES', 'string' => translate('Dependent services'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICES', 'string' => translate('Services'));
|
||||
$arrDescription[] = array('name' => 'LANG_DEPENDSERVICEGROUPS',
|
||||
'string' => translate('Dependent servicegroups'));
|
||||
$arrDescription[] = array('name' => 'LANG_HELP', 'string' => translate('Help'));
|
||||
$arrDescription[] = array('name' => 'LANG_CALENDAR', 'string' => translate('Calendar'));
|
||||
$arrDescription[] = array('name' => 'LANG_GROUPNAME', 'string' => translate('Group name'));
|
||||
$arrDescription[] = array('name' => 'LANG_USERS', 'string' => translate('Users'));
|
||||
$arrDescription[] = array('name' => 'LANG_ACCESS_GROUP', 'string' => translate('Access group'));
|
||||
$arrDescription[] = array('name' => 'LANG_USER_DEFINITIONS', 'string' => translate('User definitions'));
|
||||
$arrDescription[] = array('name' => 'LANG_USER_NAME', 'string' => translate('User name'));
|
||||
$arrDescription[] = array('name' => 'LANG_USER_RIGHTS', 'string' => translate('User rights'));
|
||||
$arrDescription[] = array('name' => 'LANG_OBJECT_ACCESS_RESTRICTIONS',
|
||||
'string' => translate('Object access restrictions'));
|
||||
$arrDescription[] = array('name' => 'LANG_ADMIN_ENABLE',
|
||||
'string' => translate('Enable group administration'));
|
||||
$arrDescription[] = array('name' => 'LANG_SHOW_RELATION_DATA', 'string' => translate('Show relation data'));
|
||||
$arrDescription[] = array('name' => 'LANG_HIDE_RELATION_DATA', 'string' => translate('Hide relation data'));
|
||||
$arrDescription[] = array('name' => 'LANG_CONFIG_TARGET', 'string' => translate('Configuration target'));
|
||||
$arrDescription[] = array('name' => 'LANG_LANGUAGE', 'string' => translate('User language'));
|
||||
$arrDescription[] = array('name' => 'LANG_STANDARD_DOMAIN', 'string' => translate('Standard domain'));
|
||||
$arrDescription[] = array('name' => 'LANG_SERVICES_WARNING',
|
||||
'string' => '<b>' . translate('Warning:') . '</b> ' . translate('The associated services must be additionally ' .
|
||||
'written to the files. Only writing the host configuration is not sufficient because the modification is ' .
|
||||
'stored inside the service files!'));
|
||||
// weekdays
|
||||
$arrDescription[] = array ("name" => "LANG_MONDAY", "string" => translate("Monday"));
|
||||
$arrDescription[] = array ("name" => "LANG_TUESDAY", "string" => translate("Tuesday"));
|
||||
$arrDescription[] = array ("name" => "LANG_WEDNESDAY", "string" => translate("Wednesday"));
|
||||
$arrDescription[] = array ("name" => "LANG_THURSDAY", "string" => translate("Thursday"));
|
||||
$arrDescription[] = array ("name" => "LANG_FRIDAY", "string" => translate("Friday"));
|
||||
$arrDescription[] = array ("name" => "LANG_SATURDAY", "string" => translate("Saturday"));
|
||||
$arrDescription[] = array ("name" => "LANG_SUNDAY", "string" => translate("Sunday"));
|
||||
if ($SETS['common']['seldisable'] == 0) {
|
||||
$arrDescription[] = array ("name" => "LANG_CTRLINFO", "string" => translate("Hold CTRL to select<br>more than one entry"));
|
||||
$arrDescription[] = array('name' => 'LANG_MONDAY', 'string' => translate('Monday'));
|
||||
$arrDescription[] = array('name' => 'LANG_TUESDAY', 'string' => translate('Tuesday'));
|
||||
$arrDescription[] = array('name' => 'LANG_WEDNESDAY', 'string' => translate('Wednesday'));
|
||||
$arrDescription[] = array('name' => 'LANG_THURSDAY', 'string' => translate('Thursday'));
|
||||
$arrDescription[] = array('name' => 'LANG_FRIDAY', 'string' => translate('Friday'));
|
||||
$arrDescription[] = array('name' => 'LANG_SATURDAY', 'string' => translate('Saturday'));
|
||||
$arrDescription[] = array('name' => 'LANG_SUNDAY', 'string' => translate('Sunday'));
|
||||
if ($SETS['common']['seldisable'] === 0) {
|
||||
$arrDescription[] = array('name' => 'LANG_CTRLINFO',
|
||||
'string' => translate('Hold CTRL to select<br>more than one entry'));
|
||||
} else {
|
||||
$arrDescription[] = array ("name" => "LANG_CTRLINFO", "string" => " ");
|
||||
$arrDescription[] = array('name' => 'LANG_CTRLINFO', 'string' => ' ');
|
||||
}
|
||||
//
|
||||
// Quick fix for poEdit for dynamically loaded Parameters
|
||||
// ======================================================
|
||||
//
|
||||
// Main menu
|
||||
/*
|
||||
Quick fix for poEdit for dynamically loaded Parameters
|
||||
*/
|
||||
/* Main menu */
|
||||
translate('Main page');
|
||||
translate('Supervision');
|
||||
translate('Alarming');
|
||||
@@ -257,7 +300,7 @@ translate('Commands');
|
||||
translate('Specialties');
|
||||
translate('Tools');
|
||||
translate('Administration');
|
||||
// Submenu
|
||||
/* Submenu */
|
||||
translate('Hosts');
|
||||
translate('Time periods');
|
||||
translate('Host templates');
|
||||
@@ -292,5 +335,4 @@ translate('Contact templates');
|
||||
translate('Help editor');
|
||||
translate('Data domains');
|
||||
translate('Config targets');
|
||||
translate('Support');
|
||||
?>
|
||||
translate('Support');
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.1
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -25,7 +23,6 @@ msgstr ""
|
||||
"Language: da_DK\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File Spanish (Argentina)
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.0
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
msgid ""
|
||||
@@ -16,7 +14,7 @@ msgstr ""
|
||||
"POT-Creation-Date: 2012-03-09 22:51+0100\n"
|
||||
"PO-Revision-Date: 2012-03-09 22:51+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: www.nagiosql.org <hnieva@gmail.com>\n"
|
||||
"Language-Team: https://sourceforge.net/projects/nagiosql/ <hnieva@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.0
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -25,7 +23,6 @@ msgstr ""
|
||||
"Language: es_ES\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.1
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: fr_FR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.1
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: it_IT\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.1
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: ja_JP\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.0
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: nl_NL\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.0
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: pl_PL\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,9 @@
|
||||
# #
|
||||
# # Project : NagiosQL
|
||||
# # Component : Translation File English
|
||||
# # Website : http://www.nagiosql.org
|
||||
# # Date : $LastChangedDate: 2012-03-09 22:55:35 +0100 (Fri, 09 Mar 2012) $
|
||||
# # Author : $LastChangedBy: martin $
|
||||
# # Version : 3.1.1
|
||||
# # Revision : $LastChangedRevision: 1284 $
|
||||
# # Website : https://sourceforge.net/projects/nagiosql/
|
||||
# # Version : 3.4.0
|
||||
# # GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
# #
|
||||
# #############################################################################
|
||||
# Translators:
|
||||
@@ -24,7 +22,6 @@ msgstr ""
|
||||
"Language: ru_RU\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
"X-Generator: Pootle 2.1.5\n"
|
||||
"X-Poedit-Basepath: D:\\$_Daten\\Webentwicklung\\NagiosQL_v3.2_svn\n"
|
||||
"X-Poedit-KeywordsList: translate\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
312
config/main.css
312
config/main.css
@@ -1,226 +1,262 @@
|
||||
@charset "utf-8";
|
||||
/*/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : CSS Main definition
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////*/
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : CSS Main definition
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
font-size: 12px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
background-color: #FFFFFF;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#login {
|
||||
text-align: center;
|
||||
margin:0pt auto;
|
||||
max-width:80em;
|
||||
min-width:740px;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
max-width: 80em;
|
||||
min-width: 740px;
|
||||
}
|
||||
|
||||
/************************/
|
||||
/** HEADER definitions */
|
||||
/************************/
|
||||
.header {
|
||||
background: #FFFFFF url(../images/bg_top.png) repeat-x right top;
|
||||
background: #FFFFFF url(../images/bg_top.png) repeat-x right top;
|
||||
}
|
||||
|
||||
.headerleft {
|
||||
vertical-align: bottom;
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
vertical-align: bottom;
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.headerleft a {
|
||||
color: #002C52;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
color: #002C52;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.headerleft a:hover {
|
||||
color: #002C52;
|
||||
background-color: #E5E9ED ;
|
||||
color: #002C52;
|
||||
background-color: #E5E9ED;
|
||||
}
|
||||
|
||||
.headerleft a:active {
|
||||
color: #002C52;
|
||||
background-color: #E5E9ED ;
|
||||
}
|
||||
color: #002C52;
|
||||
background-color: #E5E9ED;
|
||||
}
|
||||
|
||||
.top-link {
|
||||
color: #002C52;
|
||||
font-size: 10pt;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background-color: #FFFFFF;
|
||||
padding: 2px 3px 0px 3px;
|
||||
border-top:1px solid #002C52;
|
||||
border-left:1px solid #002C52;
|
||||
border-right:1px solid #002C52;
|
||||
}
|
||||
color: #002C52;
|
||||
font-size: 10pt;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background-color: #FFFFFF;
|
||||
padding: 2px 3px 0 3px;
|
||||
border-top: 1px solid #002C52;
|
||||
border-left: 1px solid #002C52;
|
||||
border-right: 1px solid #002C52;
|
||||
}
|
||||
|
||||
.headermiddle {
|
||||
vertical-align: bottom;
|
||||
height: 40px;
|
||||
width: 200px;
|
||||
vertical-align: bottom;
|
||||
height: 40px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.headerright {
|
||||
text-align: right;
|
||||
vertical-align: bottom;
|
||||
padding-right: 20px;
|
||||
text-align: right;
|
||||
vertical-align: bottom;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.infoleft {
|
||||
vertical-align: middle;
|
||||
text-align: left;
|
||||
font-size: 10px ;
|
||||
padding-left: 20px;
|
||||
vertical-align: middle;
|
||||
text-align: left;
|
||||
font-size: 10px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.inforight {
|
||||
width:200px;
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
padding: 4px 20px 4px 4px;
|
||||
width: 200px;
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
padding: 4px 20px 4px 4px;
|
||||
}
|
||||
|
||||
.inforight2 {
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
}
|
||||
vertical-align: middle;
|
||||
text-align: right;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/********************/
|
||||
/** Formatierungen */
|
||||
/********************/
|
||||
h1,h2,h3 {
|
||||
color: #0c4271;
|
||||
margin-top: 0px;
|
||||
h1, h2, h3 {
|
||||
color: #0c4271;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: left;
|
||||
font-size: 22px;
|
||||
text-align: left;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 14px;
|
||||
font-style:italic;
|
||||
font-size: 14px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/********************/
|
||||
/** Menu **********/
|
||||
/********************/
|
||||
.menutable {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
text-align:left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.menutable a {
|
||||
text-decoration: none;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.menutable a:hover {
|
||||
color: #FF00FF;
|
||||
color: #FF00FF;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.menutable .menu_act {
|
||||
color: #FF0000;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding-left: 20px;
|
||||
height: 20px;
|
||||
background: url(../images/bg_menu_aktiv.png) repeat-x left top;
|
||||
width: 140px;
|
||||
color: #FF0000;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding-left: 20px;
|
||||
height: 20px;
|
||||
background: url(../images/bg_menu_aktiv.png) repeat-x left top;
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
.menutable .menu_act a {
|
||||
color: #00396a;
|
||||
color: #00396a;
|
||||
}
|
||||
|
||||
.menutable .menu_act a:hover {
|
||||
color: #00396a;
|
||||
color: #00396a;
|
||||
}
|
||||
|
||||
.menutable .menu {
|
||||
color: #FFFFFF;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding-left: 20px;
|
||||
height: 20px;
|
||||
background: url(../images/bg_menu_inaktiv.png) repeat-x left top;
|
||||
width: 140px;
|
||||
color: #FFFFFF;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding-left: 20px;
|
||||
height: 20px;
|
||||
background: url(../images/bg_menu_inaktiv.png) repeat-x left top;
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
.menutable .menu a {
|
||||
color: #d6d6d6;
|
||||
color: #d6d6d6;
|
||||
}
|
||||
|
||||
.menutable .menu a:hover {
|
||||
color: #FFFFFF;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.menutable .menu_sub {
|
||||
font-size: 11px;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
height: 5px;
|
||||
padding-left: 30px;
|
||||
background: #FFFFFF url(../images/bg_submenu.png) repeat-y left top;
|
||||
font-size: 11px;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
height: 5px;
|
||||
padding-left: 30px;
|
||||
background: #FFFFFF url(../images/bg_submenu.png) repeat-y left top;
|
||||
}
|
||||
|
||||
.menutable .menu_sub a {
|
||||
color: #666666;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.menutable .menu_sub a:hover {
|
||||
color: #666666;
|
||||
text-decoration: underline;
|
||||
color: #666666;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*noinspection ALL*/
|
||||
.menutable .menu_sub_act {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
height: 5px;
|
||||
padding-left: 30px;
|
||||
background: #FFFFFF url(../images/bg_submenu.png) repeat-y left top;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
height: 5px;
|
||||
padding-left: 30px;
|
||||
background: #FFFFFF url(../images/bg_submenu.png) repeat-y left top;
|
||||
}
|
||||
|
||||
.menutable .menu_sub_act a {
|
||||
color: #666666;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.menutable .menu_sub_act a:hover {
|
||||
color: #666666;
|
||||
text-decoration: underline;
|
||||
color: #666666;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.menulinksmall {
|
||||
font-size: 10px;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
font-size: 10px;
|
||||
color: #666666;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/************************/
|
||||
/** YUI definitions */
|
||||
/************************/
|
||||
#cal-cont .bd:after {
|
||||
content:".";
|
||||
display:block;
|
||||
clear:left;
|
||||
height:0;
|
||||
visibility:hidden;
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: left;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#cal-cont .bd {
|
||||
padding:0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#cal-cont2 .bd:after {
|
||||
content:".";
|
||||
display:block;
|
||||
clear:left;
|
||||
height:0;
|
||||
visibility:hidden;
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: left;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#cal-cont2 .bd {
|
||||
padding:0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#cal {
|
||||
border:none;
|
||||
padding:1em
|
||||
border: none;
|
||||
padding: 1em
|
||||
}
|
||||
|
||||
.yui-content input[type="radio"] {
|
||||
background-color:#EDF5FF;
|
||||
background-color: #EDF5FF;
|
||||
}
|
||||
|
||||
.yui-content input[type="checkbox"] {
|
||||
background-color:#EDF5FF;
|
||||
background-color: #EDF5FF;
|
||||
}
|
||||
@@ -1,28 +1,68 @@
|
||||
CHANGELOG 3.5.0
|
||||
---------------
|
||||
- Support for PHP 8.x
|
||||
- Support for PHP < 7.2 dropped
|
||||
- [Bugfix] hosttemplate don't use "importance" in Nagios configuration version < 4.0
|
||||
|
||||
CHANGELOG 3.4.1
|
||||
---------------
|
||||
- New setting to disable parent objects to optimize performance
|
||||
- New filter function for active and registered in supervision objects
|
||||
- New optional help text for command arguments ARG1 - ARG8
|
||||
- A config target now supports different port numbers for SSH/SFTP
|
||||
- [Bugfix] error page after installation and login when using https protocol
|
||||
- [Bugfix] timeperiod exclude and include function
|
||||
- [Bugfix] free variables supports special chars
|
||||
- [Bugfix] misc- and check commands now support special chars
|
||||
- Include all 3.4.0 hotfixes from GIT up to 2019-12-04
|
||||
o Add GIT version number on support page and version check
|
||||
o Nagios 4.0 update for mandatory fields
|
||||
o [Bugfix] Missing PEAR path in scripting interface
|
||||
o [Bugfix] Allowing special characters in ARG fields
|
||||
o [Bugfix] Object copy after changing domain (config_id not set correctly)
|
||||
o [Bugfix] Quote settings data für special chars in database password
|
||||
o [Bugfix] Inserting time definitions when Nagios 3.x is selected in data domain
|
||||
o [Bugfix] Object search and row sorting
|
||||
o [Bugfix] Page numbers in service extinfo
|
||||
o [Bugfix] Fixed some ancient bug in an error message of time periods
|
||||
o [Bugfix] Nagios 4.0 update for mandatory fields
|
||||
o [Bugfix] PHP5 compatibility update
|
||||
o [Bugfix] Allowing quotes in arguments
|
||||
o [Bugfix] Variable bug in downloads.php
|
||||
o [Bugfix] Host copy bug fixed
|
||||
o [Bugfix] Additional security hardening
|
||||
|
||||
CHANGELOG 3.4.0
|
||||
---------------
|
||||
- Support for PHP 7.x (developped and tested with PHP 7.2.4)
|
||||
- Support for PHP < 5.5 dropped
|
||||
- Code reworked to follow PSR1/PSR2 standards
|
||||
- New class autoloader function
|
||||
- Several minor bugfixes
|
||||
- Moved sourcecode to GitLab
|
||||
- FTP now supports encrypted communication (FTPS) - new option in config targets
|
||||
- Full support for Nagios 4.x added (importance and service parents)
|
||||
- Nagios cgi.cfg path is now handled by NagiosQL
|
||||
- Nagios ressource.cfg path is now handled by NagiosQL
|
||||
|
||||
CHANGELOG 3.3.0
|
||||
---------------
|
||||
- [OK] Support for PHP version 7.x
|
||||
- [OK] Database interface changed from mysql to mysqli
|
||||
- Support for PHP version 7.0 (not 7.1 or higher)
|
||||
- Database interface changed from mysql to mysqli
|
||||
|
||||
CHANGELOG 3.2.0
|
||||
---------------
|
||||
|
||||
- [OK] Enable/Disable regardless of register
|
||||
- [OK] HTML reworking
|
||||
- [OK] Domain separation (Data / Configuration)
|
||||
- [OK] Additional user settings
|
||||
- Enable/Disable regardless of register
|
||||
- HTML reworking
|
||||
- Domain separation (Data / Configuration)
|
||||
- Additional user settings
|
||||
o Language
|
||||
o Standard domain
|
||||
- [OK] Better HTML/CSS implementation for IE (scroll fields)
|
||||
- [OK] Configuration name is stored as free variable inside the configuration file
|
||||
- [OK] New support page with additional checks
|
||||
- [OK] New/reworked installer
|
||||
- [OK] Servicegroup support for servicedependencies and serviceescalations
|
||||
- [OK][BUG] Reworked service selection in servicedependencies and serviceescalations
|
||||
- [OK][BUG] Reworked right management (menu access / read rights)
|
||||
|
||||
OPEN in 3.2.0
|
||||
-------------
|
||||
- YUI3 - YUI3 is still BETA
|
||||
- Reworking templates for better integration
|
||||
- Support for different time zones of remote systems (timestamp/file_stamp)
|
||||
- PosgresQL support (comes with 3.2.x)
|
||||
- Better HTML/CSS implementation for IE (scroll fields)
|
||||
- Configuration name is stored as free variable inside the configuration file
|
||||
- New support page with additional checks
|
||||
- New/reworked installer
|
||||
- Servicegroup support for servicedependencies and serviceescalations
|
||||
- [Bugfix] Reworked service selection in servicedependencies and serviceescalations
|
||||
- [Bugfix] Reworked right management (menu access / read rights)
|
||||
|
||||
@@ -4,16 +4,13 @@
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2008-2017 by Martin Willisegger
|
||||
// (c) 2005-2022 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component: Installations HowTo
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
// SVN-ID : $Id: INSTALLATION_deDE.txt 2 2017-06-22 07:29:35Z martin $
|
||||
// Project : NagiosQL
|
||||
// Component : Installations HowTo
|
||||
// Website : https://sourceforge.net/projects/nagiosql/
|
||||
// Version : 3.5.0
|
||||
// GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,9 +19,9 @@
|
||||
====================
|
||||
|
||||
* Webserver z.B. Apache 2.x
|
||||
* MySQL 5.x oder neuer
|
||||
* Nagios 2.x/3.x oder Nagios kompatible Monitoringsoftware
|
||||
* PHP 5.2.0 oder groesser, inklusive:
|
||||
* MySQL/MariaDB 5.x oder neuer
|
||||
* Nagios 2.x/3.x/4.x oder Nagios kompatible Monitoringsoftware
|
||||
* PHP 7.2.0 oder groesser, inklusive:
|
||||
* PHP Module: Session
|
||||
* PHP Module: MySQLi
|
||||
* PHP Module: gettext
|
||||
@@ -34,11 +31,26 @@
|
||||
* Javascript im Webbrowser zugelassen
|
||||
* Empfohlener Webbrowser: Mozilla Firefox
|
||||
|
||||
==============================================
|
||||
= Installation der ssh2 Erweiterung mit PHP8 =
|
||||
==============================================
|
||||
Benötigte RPM/Software:
|
||||
* php8-pecl
|
||||
* php8-devel
|
||||
* libssh2-devel
|
||||
* make
|
||||
|
||||
Installation mit:
|
||||
# pecl install ssh2-1.3.1
|
||||
|
||||
Konfiguration in php.ini:
|
||||
extension=ssh2
|
||||
|
||||
===================
|
||||
= Neuinstallation =
|
||||
===================
|
||||
|
||||
1. Download und entpacken von NagiosQL 3.3 in einem Apache zugaenglichen Verzeichnis.
|
||||
1. Download und entpacken von NagiosQL 3.5 in einem Apache zugaenglichen Verzeichnis.
|
||||
2. Der Installationsassistent wird automatisch durch Eingabe von install/index.php gestartet.
|
||||
3. Die gewuenschte Sprache auswaehlen (siehe Appendix 2.)
|
||||
4. Zum Installieren von NagiosQL den Anweisungen folgen.
|
||||
@@ -47,14 +59,14 @@
|
||||
= AKTUALISIERUNG =
|
||||
==================
|
||||
|
||||
1. Aktualisierungen von NagiosQL 1.x und 2.x sind leider nicht moeglich, bitte einfach eine neue Installation starten und
|
||||
1. Aktualisierungen von NagiosQL 1.x und 2.x sind leider nicht moeglich, bitte einfach eine neue Installation starten und
|
||||
dann die Nagios Konfiguration durch den Import einbinden.
|
||||
2. Aktualisierungen von NagiosQL 3.x
|
||||
a. Download und entpacken von NagiosQL 3.3 in ein NEUES Apache zugaenglichen Verzeichnis (DocumentRoot auf neues Verzeichnis
|
||||
a. Download und entpacken von NagiosQL 3.5 in ein NEUES Apache zugaenglichen Verzeichnis (DocumentRoot auf neues Verzeichnis
|
||||
aendern)
|
||||
b. Wird dieselbe Apachekonfiguration verwendet (altes NagiosQL Verzeichnis wegkopiert, neues NagiosQL Verzeichnis bekommt
|
||||
b. Wird dieselbe Apachekonfiguration verwendet (altes NagiosQL Verzeichnis wegkopieren, neues NagiosQL Verzeichnis bekommt
|
||||
denselben Namen), sollte der Apache Demon vor dem Upgrade neu gestartet werden.
|
||||
c. Verschiebe die alte config/settings.php Datei in das neue NagiosQL 3.3 Verzeichnis config/
|
||||
c. Verschiebe die alte config/settings.php Datei in das neue NagiosQL 3.5 Verzeichnis config/
|
||||
d. Die alte Datenbank manuell sichern (z.Bsp. mit mysqldump)
|
||||
e. Der Installationsassistent wird durch den Aufruf von install/index.php gestartet
|
||||
f. Die gewuenschte Sprache waehlen (siehe auch Appendix 1.) und den Anweisungen folgen
|
||||
@@ -101,7 +113,7 @@ Oeffnen Sie nach erfolgter Installation die Support Seite unter Administration u
|
||||
================
|
||||
=== Probleme ===
|
||||
================
|
||||
Zur Zeit gibt es keine bekannten Probleme. Support erreicht man ueber das Forum (http://www.nagiosql.org/forum.html) oder fuer Programmfehler den Bugtracker (http://dev.nagigosql.org)
|
||||
Zur Zeit gibt es keine bekannten Probleme. Support erreicht man ueber das Forum (https://sourceforge.net/projects/nagiosql/) oder fuer Programmfehler den Bugtracker (http://dev.nagigosql.org)
|
||||
|
||||
================
|
||||
=== APPENDIX ===
|
||||
|
||||
@@ -4,16 +4,13 @@
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2008-2017 by Martin Willisegger
|
||||
// (c) 2005-2022 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component: Installation HowTo
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
// SVN-ID : $Id: INSTALLATION_enGB.txt 2 2017-06-22 07:29:35Z martin $
|
||||
// Project : NagiosQL
|
||||
// Component : Installation HowTo
|
||||
// Website : https://sourceforge.net/projects/nagiosql/
|
||||
// Version : 3.5.0
|
||||
// GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,9 +19,9 @@
|
||||
================
|
||||
|
||||
* Webserver like Apache 2.x
|
||||
* MySQL 5.x or greater
|
||||
* Nagios 2.x/3.x or Nagios compatible monitoring software
|
||||
* PHP 5.2.0 or greater including:
|
||||
* MySQL/MariaDB 5.x or greater
|
||||
* Nagios 2.x/3.x/4.x or Nagios compatible monitoring software
|
||||
* PHP 7.2.0 or greater including:
|
||||
* PHP Module: Session
|
||||
* PHP Module: MySQLi
|
||||
* PHP Module: gettext
|
||||
@@ -34,11 +31,26 @@
|
||||
* Javascript activated in Webbrowser
|
||||
* Recommended Webbrowser: Mozilla Firefox
|
||||
|
||||
============================================
|
||||
= Installation of ssh2 Extension with PHP8 =
|
||||
============================================
|
||||
Needed RPMs/Software:
|
||||
* php8-pecl
|
||||
* php8-devel
|
||||
* libssh2-devel
|
||||
* make
|
||||
|
||||
Installation command:
|
||||
# pecl install ssh2-1.3.1
|
||||
|
||||
Configuration in php.ini:
|
||||
extension=ssh2
|
||||
|
||||
================
|
||||
NEW INSTALLATION
|
||||
================
|
||||
|
||||
1. Download and extract NagiosQL 3.3 to a directory within your Apache Document Root
|
||||
1. Download and extract NagiosQL 3.5 to a directory within your Apache Document Root
|
||||
2. Start the Installation Wizard by opening install/index.php
|
||||
3. Switch to your preferred language (see Appendix 1.)
|
||||
4. Follow the instructions to install NagiosQL
|
||||
@@ -47,13 +59,13 @@ NEW INSTALLATION
|
||||
=== UPGRADES ===
|
||||
================
|
||||
|
||||
1. Upgrade from NagiosQL 1.x and 2.x are not possible, you should better start at "New Installation" and after the installation is done,
|
||||
1. Upgrade from NagiosQL 1.x and 2.x are not possible, you should better start at "New Installation" and after the installation is done,
|
||||
import Nagios configuration files with NagiosQL
|
||||
2. Upgrade from NagiosQL 3.x
|
||||
a. Download and extract NagiosQL 3.3 to a NEW directory and change your Apache DocumentRoot to the new directory
|
||||
2. Upgrade from NagiosQL 3.x
|
||||
a. Download and extract NagiosQL 3.5 to a NEW directory and change your Apache DocumentRoot to the new directory
|
||||
b. If the same Apache configuration is used (old NagiosQL directory moved away and new NagiosQL directory moved to the old
|
||||
DocumentRoot), you should restart the apache demon before upgrade
|
||||
b. Move your old config/settings.php file to the new NagiosQL 3.3 config/ folder
|
||||
b. Move your old config/settings.php file to the new NagiosQL 3.5 config/ folder
|
||||
c. Backup your old NagiosQL database (as example with mysqldump)
|
||||
d. Start the Installation Wizard by opening install/index.php
|
||||
e. Switch to your preferred language (see Appendix) and follow the instructions
|
||||
@@ -101,7 +113,7 @@ After installation - go to administration - support and check your installation.
|
||||
================
|
||||
=== PROBLEMS ===
|
||||
================
|
||||
There are currently no known issues. If you having questions, please visit our forum http://www.nagiosql.org/forum.html. If you probably found a bug, please help us and open a new bug report at http://dev.nagigosql.org
|
||||
There are currently no known issues. If you having questions, please visit our forum https://sourceforge.net/projects/nagiosql/. If you probably found a bug, please help us and open a new bug report at http://dev.nagigosql.org
|
||||
|
||||
================
|
||||
=== APPENDIX ===
|
||||
|
||||
36
doc/LICENSE
36
doc/LICENSE
@@ -1,36 +0,0 @@
|
||||
NagiosQL License - based on BSD License
|
||||
|
||||
Copyright (c) 2005-2012, Martin Willisegger
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed by the NagiosQL team - www.nagiosql.org.
|
||||
4. Neither the name of the NagiosQL team - www.nagiosql.org nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE NAGIOSQL TEAM AND THE COPYRIGHT HOLDER ''AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE NAGIOSQL TEAM AND THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Additional conditions for NagiosQL
|
||||
|
||||
a) Using NagiosQL bundled with commercial products is only allowed with
|
||||
explicit approval of the copyright holder.
|
||||
b) Using the code of NagiosQL to build a "fork" is only allowed with
|
||||
explicit approval of the copyright holder.
|
||||
38
doc/LIZENZ
38
doc/LIZENZ
@@ -1,38 +0,0 @@
|
||||
Freie Übersetzung der BSD basierenden NagiosQL Lizenz - es gilt die englische Originalversion!
|
||||
|
||||
Copyright (c) 2005-2012, Martin Willisegger
|
||||
|
||||
Alle Rechte vorbehalten.
|
||||
|
||||
Weiterverbreitung und Verwendung in nichtkompilierter oder kompilierter Form, mit oder ohne
|
||||
Veränderung, sind unter den folgenden Bedingungen zulässig:
|
||||
|
||||
1. Weiterverbreitete nichtkompilierte Exemplare müssen das obige Copyright,
|
||||
diese Liste der Bedingungen und den folgenden Haftungsausschluss im Quelltext enthalten.
|
||||
2. Weiterverbreitete kompilierte Exemplare müssen das obige Copyright, diese Liste der
|
||||
Bedingungen und den folgenden Haftungsausschluss in der Dokumentation und/oder anderen
|
||||
Materialien, die mit dem Exemplar verbreitet werden, enthalten.
|
||||
3. Alle Werbematerialien, die Eigenschaften oder die Benutzung erwähnen, müssen die folgende
|
||||
Bemerkung enthalten: „Dieses Produkt enthält Software, die vom NagiosQL Team - www.nagiosql.org
|
||||
entwickelt wurde.“
|
||||
4. Weder der Name des vom NagiosQL Team - www.nagiosql.org noch die Namen der Beitragsleistenden
|
||||
dürfen zum Kennzeichnen oder Bewerben von Produkten, die von dieser Software abgeleitet wurden,
|
||||
ohne spezielle vorherige schriftliche Genehmigung verwendet werden.
|
||||
|
||||
DIESE SOFTWARE WIRD VOM NAGIOSQL TEAM UND DEM RECHTEINHABER SOWIE DEN BEITRAGSLEISTENDEN OHNE
|
||||
JEGLICHE SPEZIELLE ODER IMPLIZIERTE GARANTIEN ZUR VERFÜGUNG GESTELLT, DIE UNTER ANDEREM EINSCHLIESSEN:
|
||||
DIE IMPLIZIERTE GARANTIE DER VERWENDBARKEIT DER SOFTWARE FÜR EINEN BESTIMMTEN ZWECK. AUF KEINEN FALL
|
||||
IST DAS NAGIOSQL TEAM, DER RECHTEINHABER SOWIE DIE BEITRAGSLEISTENDEN FÜR IRGENDWELCHE DIREKTEN,
|
||||
INDIREKTEN, ZUFÄLLIGEN, SPEZIELLEN, BEISPIELHAFTEN ODER FOLGESCHÄDEN (UNTER ANDEREM VERSCHAFFEN
|
||||
VON ERSATZGÜTERN ODER -DIENSTLEISTUNGEN; EINSCHRÄNKUNG DER NUTZUNGSFÄHIGKEIT; VERLUST VON NUTZUNGSFÄHIGKEIT;
|
||||
DATEN; PROFIT ODER GESCHÄFTSUNTERBRECHUNG), WIE AUCH IMMER VERURSACHT UND UNTER WELCHER VERPFLICHTUNG AUCH
|
||||
IMMER, OB IN VERTRAG, STRIKTER VERPFLICHTUNG ODER UNERLAUBTER HANDLUNG (INKLUSIVE FAHRLÄSSIGKEIT)
|
||||
VERANTWORTLICH, AUF WELCHEM WEG SIE AUCH IMMER DURCH DIE BENUTZUNG DIESER SOFTWARE ENTSTANDEN SIND,
|
||||
SOGAR, WENN SIE AUF DIE MÖGLICHKEIT EINES SOLCHEN SCHADENS HINGEWIESEN WORDEN SIND.
|
||||
|
||||
Zusätzliche Bedingungen zu NagiosQL
|
||||
|
||||
a) Das bündeln von NagiosQL zusammen mit einem kommerziellen Produkt ist nur zulässig
|
||||
mit ausdrücklicher Genehmigung des Copyright Inhabers.
|
||||
b) Das Benutzen von Code von NagiosQL mit dem Zweck einen "Fork" zu erstellen ist nur
|
||||
zulässig mit ausdrücklicher Genehmigung des Copyright Inhabers.
|
||||
@@ -8,7 +8,7 @@ Local system
|
||||
2. Create a path for the ssh keys
|
||||
# mkdir /etc/nagiosql/ssh
|
||||
2. Create a key pair (only rsa is supported!)
|
||||
# ssh-keygen -t rsa
|
||||
# ssh-keygen -t rsa -m PEM -b 4096
|
||||
Generating public/private rsa key pair.
|
||||
Enter file in which to save the key (/root/.ssh/id_rsa): /etc/nagiosql/ssh/id_rsa
|
||||
-> empty passphrase!
|
||||
@@ -29,6 +29,15 @@ Enter file in which to save the key (/root/.ssh/id_rsa): /etc/nagiosql/ssh/id_rs
|
||||
6.3. Fill in /etc/nagiosql/ssh/ as Directory of the key pair (without id_rsa)!
|
||||
|
||||
|
||||
Callback Error
|
||||
==============
|
||||
|
||||
If you get a callback error when connecting to the remote system (variant SSH public key), the file
|
||||
id_rsa may not be in PEM format. Try a conversion with:
|
||||
# ssh-keygen -p -m PEM -f /etc/nagiosql/ssh/id_rsa
|
||||
-> empty passphrase!
|
||||
|
||||
|
||||
Using passwort authentication (not recommended)
|
||||
===============================================
|
||||
|
||||
|
||||
63
functions/Autoloader.php
Normal file
63
functions/Autoloader.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Autoloader Class
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
namespace functions;
|
||||
|
||||
class Autoloader
|
||||
{
|
||||
// Define class variables
|
||||
public $preBasePath = DIRECTORY_SEPARATOR;
|
||||
|
||||
/**
|
||||
* Autoloader constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $strBasePath Base path of project
|
||||
* @noinspection PhpObjectFieldsAreOnlyWrittenInspection
|
||||
*/
|
||||
public static function register(string $strBasePath): void
|
||||
{
|
||||
$object = new Autoloader();
|
||||
$object->preBasePath = $strBasePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load class from path
|
||||
* @param string $strClassName Class name
|
||||
*/
|
||||
public function loadClass(string $strClassName): void
|
||||
{
|
||||
$className = ltrim($strClassName, '\\');
|
||||
$fileName = '';
|
||||
$lastNsPos = strrpos($className, '\\');
|
||||
if ($lastNsPos !== 0) {
|
||||
$namespace = substr($className, 0, $lastNsPos);
|
||||
$className = substr($className, $lastNsPos + 1);
|
||||
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
|
||||
}
|
||||
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
|
||||
$strFilePath1 = $this->preBasePath . $fileName;
|
||||
$strFilePath2 = $this->preBasePath . 'install/' . $fileName;
|
||||
if (file_exists($strFilePath1) && is_readable($strFilePath1)) {
|
||||
require_once $strFilePath1;
|
||||
}
|
||||
if (file_exists($strFilePath2) && is_readable($strFilePath2)) {
|
||||
require_once $strFilePath2;
|
||||
}
|
||||
}
|
||||
}
|
||||
416
functions/MysqliDbClass.php
Normal file
416
functions/MysqliDbClass.php
Normal file
@@ -0,0 +1,416 @@
|
||||
<?php
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : MySQLi data processing class
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
Class: Common database functions for MySQL (mysqli database module)
|
||||
-------------------------------------------------------------------------------
|
||||
Includes any functions to communicate with an MySQL database server
|
||||
Name: MysqliDbClass
|
||||
Class variables: $arrParams Array including the server settings
|
||||
$strErrorMessage Database error string
|
||||
$error Boolean - Error true/false
|
||||
$strDBId Database connection id
|
||||
$intLastId ID of last dataset
|
||||
$intAffectedRows Counter variable of all affected data dows
|
||||
$booSSLuse Use SSL connection
|
||||
|
||||
Parameters: $arrParams['server'] -> DB server name
|
||||
$arrParams['port'] -> DB server port
|
||||
$arrParams['user'] -> DB server username
|
||||
$arrParams['password'] -> DB server password
|
||||
$arrParams['database'] -> DB server database name
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
namespace functions;
|
||||
|
||||
class MysqliDbClass
|
||||
{
|
||||
/* Define class variables */
|
||||
public $error = false; /* Will be filled in functions */
|
||||
public $strDBId; /* Will be filled in functions */
|
||||
public $intLastId = 0; /* Will be filled in functions */
|
||||
public $intAffectedRows = 0; /* Will be filled in functions */
|
||||
public $strErrorMessage = ''; /* Will be filled in functions */
|
||||
public $booSSLuse = false; /* Defines if SSL is used or not */
|
||||
public $arrParams = array(); /* Must be filled in while initialization */
|
||||
|
||||
/**
|
||||
* MysqliDbClass constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->arrParams['server'] = '';
|
||||
$this->arrParams['port'] = 0;
|
||||
$this->arrParams['username'] = '';
|
||||
$this->arrParams['password'] = '';
|
||||
$this->arrParams['database'] = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* MysqliDbClass destructor.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
$this->dbDisconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close database server connectuon
|
||||
* @return bool true = successful / false = error
|
||||
* @noinspection PhpReturnValueOfMethodIsNeverUsedInspection
|
||||
*/
|
||||
private function dbDisconnect(): bool
|
||||
{
|
||||
return mysqli_close($this->strDBId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a connection to the database server and select a database
|
||||
* @param int $intMode 1 = connect only / 0 = connect + dbselect
|
||||
* @return bool true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function hasDBConnection(int $intMode = 0): bool
|
||||
{
|
||||
$booReturn = true;
|
||||
$this->dbconnect();
|
||||
if ($this->error === true) {
|
||||
$booReturn = false;
|
||||
}
|
||||
if (($booReturn === true) && ($intMode === 0)) {
|
||||
$this->dbselect();
|
||||
if ($this->error === true) {
|
||||
$booReturn = false;
|
||||
}
|
||||
}
|
||||
return $booReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to database server
|
||||
* @param string $dbserver Server name
|
||||
* @param int $dbport TCP port
|
||||
* @param string $dbuser Database user
|
||||
* @param string $dbpasswd Database password
|
||||
* @return void true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
* @noinspection PhpMissingParamTypeInspection
|
||||
* @noinspection PhpSameParameterValueInspection
|
||||
*/
|
||||
private function dbconnect($dbserver = null, int $dbport = 0, $dbuser = null, $dbpasswd = null): void
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
$booReturn = true;
|
||||
/* Get parameters */
|
||||
if ($dbserver === null) {
|
||||
$dbserver = $this->arrParams['server'];
|
||||
}
|
||||
if ($dbport === 0) {
|
||||
$dbport = $this->arrParams['port'];
|
||||
}
|
||||
if ($dbuser === null) {
|
||||
$dbuser = $this->arrParams['username'];
|
||||
}
|
||||
if ($dbpasswd === null) {
|
||||
$dbpasswd = $this->arrParams['password'];
|
||||
}
|
||||
/* Not all parameters available */
|
||||
if (($dbserver === '') || ($dbuser === '') || ($dbpasswd === '')) {
|
||||
$this->strErrorMessage .= gettext('Missing server connection parameter!') . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
if ($booReturn === true) {
|
||||
$this->dbinit();
|
||||
/* if ($this->booSSLuse === true) {
|
||||
TODO: TO BE DEFINED
|
||||
}*/
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
if ($dbport === 0) {
|
||||
$booReturn = mysqli_real_connect($this->strDBId, $dbserver, $dbuser, $dbpasswd);
|
||||
} else {
|
||||
$booReturn = mysqli_real_connect($this->strDBId, $dbserver, $dbuser, $dbpasswd, null, $dbport);
|
||||
}
|
||||
error_reporting($intErrorReporting);
|
||||
// Connection fails
|
||||
if ($booReturn === false) {
|
||||
$this->strErrorMessage = '[' . $dbserver . '] ' . gettext('Connection to the database server has failed '
|
||||
. 'by reason:') . ' ::';
|
||||
$strError = mysqli_connect_error();
|
||||
$this->strErrorMessage .= $strError . '::';
|
||||
$this->error = true;
|
||||
}
|
||||
/** PHP8 exception handling */
|
||||
mysqli_report(MYSQLI_REPORT_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize a mysql database connection
|
||||
* @return bool true = successful / false = error
|
||||
* @noinspection PhpReturnValueOfMethodIsNeverUsedInspection
|
||||
*/
|
||||
private function dbinit(): bool
|
||||
{
|
||||
$this->strDBId = mysqli_init();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Select a database
|
||||
* @param string $database Database name
|
||||
* @return bool true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
* @noinspection PhpReturnValueOfMethodIsNeverUsedInspection
|
||||
* @noinspection PhpMissingParamTypeInspection
|
||||
* @noinspection PhpSameParameterValueInspection
|
||||
*/
|
||||
private function dbselect($database = null): bool
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
$booReturn = true;
|
||||
/* Get parameters */
|
||||
if ($database === null) {
|
||||
$database = $this->arrParams['database'];
|
||||
}
|
||||
/* Not all parameters available */
|
||||
if ($database === '') {
|
||||
$this->strErrorMessage .= gettext('Missing database connection parameter!') . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
if ($booReturn === true) {
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
$bolConnect = mysqli_select_db($this->strDBId, $database);
|
||||
error_reporting($intErrorReporting);
|
||||
/* Session cannot be etablished */
|
||||
if (!$bolConnect) {
|
||||
$this->strErrorMessage .= '[' . $database . '] ' .
|
||||
gettext('Connection to the database has failed by reason:') . ' ::';
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
}
|
||||
if ($booReturn === true) {
|
||||
mysqli_query($this->strDBId, "set names 'utf8'");
|
||||
if (mysqli_error($this->strDBId) !== '') {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
}
|
||||
if ($booReturn === true) {
|
||||
mysqli_query($this->strDBId, "set session sql_mode = 'NO_ENGINE_SUBSTITUTION'");
|
||||
if (mysqli_error($this->strDBId) !== '') {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
}
|
||||
return $booReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an SQL statement to the server and returns the result of the first data field
|
||||
* @param string $strSQL SQL Statement
|
||||
* @return string <data> = successful / <empty> = error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function getFieldData(string $strSQL): string
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
$strReturn = '';
|
||||
/* Send the SQL statement to the server */
|
||||
$resQuery = mysqli_query($this->strDBId, $strSQL);
|
||||
/* Error processing */
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) !== 0) && (mysqli_error($this->strDBId) === '')) {
|
||||
/* Return the field value from position 0/0 */
|
||||
$arrDataset = mysqli_fetch_array($resQuery, MYSQLI_NUM);
|
||||
$strReturn = $arrDataset[0];
|
||||
if ($strReturn === null) {
|
||||
$strReturn = '';
|
||||
}
|
||||
} elseif (mysqli_error($this->strDBId) !== '') {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
}
|
||||
return $strReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an SQL statement to the server and returns the result of the first data set
|
||||
* @param string $strSQL SQL Statement
|
||||
* @param array|null $arrDataset Result array (by reference)
|
||||
* @return bool true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function hasSingleDataset(string $strSQL, ?array &$arrDataset): bool
|
||||
{
|
||||
$arrDataset = array();
|
||||
$booReturn = true;
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
/* Send the SQL statement to the server */
|
||||
$resQuery = mysqli_query($this->strDBId, $strSQL);
|
||||
/* Error processing */
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) !== 0) && (mysqli_error($this->strDBId) === '')) {
|
||||
/* Put the values into the array */
|
||||
$arrDataset = mysqli_fetch_array($resQuery, MYSQLI_ASSOC);
|
||||
} elseif (mysqli_error($this->strDBId) !== '') {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
return $booReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an SQL statement to the server and returns the result of all dataset in a data array
|
||||
* @param string $strSQL SQL Statement
|
||||
* @param array|null $arrDataset Result array (by reference)
|
||||
* @param int|null $intDataCount Number of data result sets
|
||||
* @return bool true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function hasDataArray(string $strSQL, array &$arrDataset = null, int &$intDataCount = null): bool
|
||||
{
|
||||
$arrDataset = array();
|
||||
$intDataCount = 0;
|
||||
$booReturn = true;
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
/* Send the SQL statement to the server */
|
||||
$resQuery = mysqli_query($this->strDBId, $strSQL);
|
||||
/* Error processing */
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) !== 0) && (mysqli_error($this->strDBId) === '')) {
|
||||
$intDataCount = (int)mysqli_num_rows($resQuery);
|
||||
$intCount = 0;
|
||||
/* Put the values into the array */
|
||||
while ($arrDataTemp = mysqli_fetch_array($resQuery, MYSQLI_ASSOC)) {
|
||||
foreach ($arrDataTemp as $key => $value) {
|
||||
$arrDataset[$intCount][$key] = $value;
|
||||
}
|
||||
$intCount++;
|
||||
}
|
||||
} elseif (mysqli_error($this->strDBId) !== '') {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
return $booReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert/update or delete data
|
||||
* @param string $strSQL SQL Statement
|
||||
* @return bool true = successful / false = error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function insertData(string $strSQL): bool
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
$booReturn = false;
|
||||
/* Send the SQL statement to the server */
|
||||
if ($strSQL !== '') {
|
||||
mysqli_query($this->strDBId, $strSQL);
|
||||
/* Error processing */
|
||||
if (mysqli_error($this->strDBId) === '') {
|
||||
$this->intLastId = mysqli_insert_id($this->strDBId);
|
||||
$this->intAffectedRows = mysqli_affected_rows($this->strDBId);
|
||||
$booReturn = true;
|
||||
} else {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId) . '::';
|
||||
$this->error = true;
|
||||
}
|
||||
}
|
||||
return $booReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Count the sum of data records
|
||||
* @param string $strSQL SQL Statement
|
||||
* @return int <number> = successful / 0 = no dataset or error
|
||||
* Status messages are stored in class variable
|
||||
*/
|
||||
public function countRows(string $strSQL): int
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = '';
|
||||
$this->error = false;
|
||||
$intReturn = 0;
|
||||
/* Send the SQL statement to the server */
|
||||
$resQuery = mysqli_query($this->strDBId, $strSQL);
|
||||
/* Error processing */
|
||||
if ($resQuery && (mysqli_error($this->strDBId) === '')) {
|
||||
$intReturn = mysqli_num_rows($resQuery);
|
||||
} else {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId);
|
||||
$this->error = true;
|
||||
}
|
||||
return $intReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a safe insert string for database manipulations
|
||||
* @param string $strInput Input String
|
||||
* @return string Output String
|
||||
*/
|
||||
public function realEscape(string $strInput): string
|
||||
{
|
||||
return mysqli_real_escape_string($this->strDBId, $strInput);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SSL connection parameters
|
||||
* @param string $sslkey SSL key
|
||||
* @param string $sslcert SSL certificate
|
||||
* @param string|null $sslca SSL CA file (optional)
|
||||
* @param string|null $sslpath SSL certificate path (optional)
|
||||
* @param string|null $sslcypher SSL cypher (optional)
|
||||
* @return bool true = successful
|
||||
* Status messages are stored in class variable
|
||||
* @noinspection PhpSameParameterValueInspection
|
||||
* @noinspection PhpUnusedPrivateMethodInspection
|
||||
*/
|
||||
private function dbsetssl(string $sslkey, string $sslcert, string $sslca = null, string $sslpath = null, string $sslcypher = null): bool
|
||||
{
|
||||
/* Reset error variables */
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
$booReturn = true;
|
||||
/* Values are missing */
|
||||
if (($sslkey === "") || ($sslcert === "")) {
|
||||
$this->strErrorMessage = gettext("Missing MySQL SSL parameter!") . "::";
|
||||
$this->error = true;
|
||||
$booReturn = false;
|
||||
}
|
||||
if ($booReturn === true) {
|
||||
mysqli_ssl_set($this->strDBId, $sslkey, $sslcert, $sslca, $sslpath, $sslcypher);
|
||||
}
|
||||
return ($booReturn);
|
||||
}
|
||||
}
|
||||
2516
functions/NagConfigClass.php
Normal file
2516
functions/NagConfigClass.php
Normal file
File diff suppressed because it is too large
Load Diff
636
functions/NagContentClass.php
Normal file
636
functions/NagContentClass.php
Normal file
@@ -0,0 +1,636 @@
|
||||
<?php
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Content Class
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
Class: Common content functions
|
||||
-------------------------------------------------------------------------------
|
||||
Includes all functions used to display the application data
|
||||
Name: NagContentClass
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
namespace functions;
|
||||
|
||||
use HTML_Template_IT;
|
||||
use function strlen;
|
||||
|
||||
class NagContentClass
|
||||
{
|
||||
/* Define class variables */
|
||||
public $arrSession = array(); /* Array includes all global settings */
|
||||
public $arrDescription = array(); /* Session content */
|
||||
public $intLimit = 15; /* Text values from fieldvars.php */
|
||||
public $intDomainId = 0; /* Data limit value */
|
||||
public $intSortBy = -1; /* Configuration domain ID */
|
||||
public $intGlobalWriteAccess = -1; /* Sort by field id */
|
||||
public $intVersion = 0; /* Global write access id */
|
||||
public $intGroupAdm = 0; /* Nagios version id */
|
||||
public $intWriteAccessId = 0; /* Group admin enabled/disabled */
|
||||
public $strTableName = ''; /* Write access id */
|
||||
public $strSearchSession = ''; /* Data table name */
|
||||
public $strErrorMessage = ''; /* Search session name */
|
||||
public $strSortDir = 'ASC'; /* String including error messages */
|
||||
public $strBrowser = ''; /* SQL sort direction (ASC/DESC) */
|
||||
/** @var MysqliDbClass */
|
||||
public $myDBClass; /* Browser string */
|
||||
|
||||
/* Class includes */
|
||||
/** @var NagConfigClass */
|
||||
public $myConfigClass; /* Database class reference */
|
||||
/** @var NagVisualClass */
|
||||
public $myVisClass; /* NagiosQL configuration class object */
|
||||
private $arrSettings = array(); /* NagiosQL visual class object */
|
||||
|
||||
/**
|
||||
* NagContentClass constructor.
|
||||
* @param array $arrSession PHP Session array
|
||||
*/
|
||||
public function __construct(array $arrSession)
|
||||
{
|
||||
if (isset($arrSession['SETS'])) {
|
||||
/* Read global settings */
|
||||
$this->arrSettings = $arrSession['SETS'];
|
||||
}
|
||||
if (isset($arrSession['domain'])) {
|
||||
$this->intDomainId = (int)$arrSession['domain'];
|
||||
}
|
||||
$this->arrSession = $arrSession;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data list view - form initialization
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
*/
|
||||
public function listViewInit(HTML_Template_IT $objTemplate): void
|
||||
{
|
||||
/* Language text replacements from fieldvars.php file */
|
||||
foreach ($this->arrDescription as $elem) {
|
||||
$objTemplate->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
/* Some single replacements */
|
||||
$objTemplate->setVariable('LIMIT', $this->intLimit);
|
||||
$objTemplate->setVariable('ACTION_MODIFY', filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_UNSAFE_RAW));
|
||||
$objTemplate->setVariable('TABLE_NAME', $this->strTableName);
|
||||
if (isset($this->arrSession['search'][$this->strSearchSession])) {
|
||||
$objTemplate->setVariable('DAT_SEARCH', $this->arrSession['search'][$this->strSearchSession]);
|
||||
}
|
||||
$objTemplate->setVariable('MAX_ID', '0');
|
||||
$objTemplate->setVariable('MIN_ID', '0');
|
||||
}
|
||||
|
||||
/**
|
||||
* Data list view - value insertions
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
* @param array $arrData Database values
|
||||
* @param int $intDLCount1 Total count of data lines for one page
|
||||
* @param int $intDLCount2 Total count of data lines (all data)
|
||||
* @param string $strField1 Fieldname for data field 1
|
||||
* @param string $strField2 Fieldname for data field 2
|
||||
* @param int $intLimit Actual data char limit for field 2
|
||||
*/
|
||||
public function listData(
|
||||
HTML_Template_IT $objTemplate,
|
||||
array $arrData,
|
||||
int $intDLCount1,
|
||||
int $intDLCount2,
|
||||
string $strField1,
|
||||
string $strField2,
|
||||
int $intLimit = 0
|
||||
): void
|
||||
{
|
||||
/* Template block names */
|
||||
$strTplPart = 'datatable';
|
||||
$strTplRow = 'datarow';
|
||||
if ($this->strTableName === 'tbl_host') {
|
||||
$strTplPart = 'datatablehost';
|
||||
$strTplRow = 'datarowhost';
|
||||
}
|
||||
if ($this->strTableName === 'tbl_service') {
|
||||
$strTplPart = 'datatableservice';
|
||||
$strTplRow = 'datarowservice';
|
||||
}
|
||||
if (($this->strTableName === 'tbl_user') || ($this->strTableName === 'tbl_group') ||
|
||||
($this->strTableName === 'tbl_datadomain') || ($this->strTableName === 'tbl_configtarget')) {
|
||||
$strTplPart = 'datatablecommon';
|
||||
$strTplRow = 'datarowcommon';
|
||||
}
|
||||
/* Some single replacements */
|
||||
$objTemplate->setVariable('IMAGE_PATH_HEAD', $this->arrSettings['path']['base_url'] . 'images/');
|
||||
$objTemplate->setVariable('CELLCLASS_L', 'tdlb');
|
||||
$objTemplate->setVariable('CELLCLASS_M', 'tdmb');
|
||||
$objTemplate->setVariable('DISABLED', 'disabled');
|
||||
$objTemplate->setVariable('DATA_FIELD_1', translate('No data'));
|
||||
$objTemplate->setVariable('DATA_FIELD_2', ' ');
|
||||
$objTemplate->setVariable('DATA_REGISTERED', ' ');
|
||||
$objTemplate->setVariable('DATA_ACTIVE', ' ');
|
||||
$objTemplate->setVariable('DATA_FILE', ' ');
|
||||
$objTemplate->setVariable('PICTURE_CLASS', 'elementHide');
|
||||
$objTemplate->setVariable('DOMAIN_SPECIAL', ' ');
|
||||
$objTemplate->setVariable('SORT_BY', $this->intSortBy);
|
||||
/* Inserting data values */
|
||||
if ($intDLCount1 !== 0) {
|
||||
$intMinID = 0;
|
||||
$intMaxID = 0;
|
||||
for ($i = 0; $i < $intDLCount1; $i++) {
|
||||
/* Get biggest and smalest value */
|
||||
if ($i === 0) {
|
||||
$intMinID = $arrData[$i]['id'];
|
||||
$intMaxID = $arrData[$i]['id'];
|
||||
}
|
||||
if ($arrData[$i]['id'] < $intMinID) {
|
||||
$intMinID = $arrData[$i]['id'];
|
||||
}
|
||||
if ($arrData[$i]['id'] > $intMaxID) {
|
||||
$intMaxID = $arrData[$i]['id'];
|
||||
}
|
||||
$objTemplate->setVariable('MAX_ID', $intMaxID);
|
||||
$objTemplate->setVariable('MIN_ID', $intMinID);
|
||||
/* Line colours */
|
||||
$strClassL = 'tdld';
|
||||
$strClassM = 'tdmd';
|
||||
if ($i % 2 === 1) {
|
||||
$strClassL = 'tdlb';
|
||||
$strClassM = 'tdmb';
|
||||
}
|
||||
if (isset($arrData[$i]['register']) && ((int)$arrData[$i]['register'] === 0)) {
|
||||
$strRegister = translate('No');
|
||||
} else {
|
||||
$strRegister = translate('Yes');
|
||||
}
|
||||
if ((int)$arrData[$i]['active'] === 0) {
|
||||
$strActive = translate('No');
|
||||
} else {
|
||||
$strActive = translate('Yes');
|
||||
}
|
||||
/* Get file date for hosts and services */
|
||||
$intTimeInfo = 0;
|
||||
$arrTimeData = array();
|
||||
if ($this->strTableName === 'tbl_host') {
|
||||
$intReturn = $this->myConfigClass->lastModifiedDir(
|
||||
$this->strTableName,
|
||||
$arrData[$i]['host_name'],
|
||||
$arrData[$i]['id'],
|
||||
$arrTimeData,
|
||||
$intTimeInfo
|
||||
);
|
||||
if ($intReturn === 1) {
|
||||
$this->strErrorMessage = $this->myConfigClass->strErrorMessage;
|
||||
}
|
||||
}
|
||||
if ($this->strTableName === 'tbl_service') {
|
||||
$intReturn = $this->myConfigClass->lastModifiedDir(
|
||||
$this->strTableName,
|
||||
$arrData[$i]['config_name'],
|
||||
$arrData[$i]['id'],
|
||||
$arrTimeData,
|
||||
$intTimeInfo
|
||||
);
|
||||
if ($intReturn === 1) {
|
||||
$this->strErrorMessage = $this->myConfigClass->strErrorMessage;
|
||||
}
|
||||
}
|
||||
/* Set datafields */
|
||||
foreach ($this->arrDescription as $elem) {
|
||||
$objTemplate->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
if ((string)$arrData[$i][$strField1] === '') {
|
||||
$arrData[$i][$strField1] = 'NOT DEFINED - ' . $arrData[$i]['id'];
|
||||
}
|
||||
$objTemplate->setVariable('DATA_FIELD_1', htmlentities($arrData[$i][$strField1], ENT_COMPAT, 'UTF-8'));
|
||||
$objTemplate->setVariable('DATA_FIELD_1S', addslashes(htmlentities(
|
||||
$arrData[$i][$strField1],
|
||||
ENT_COMPAT,
|
||||
'UTF-8'
|
||||
)));
|
||||
if ($strField2 === 'process_field') {
|
||||
$arrData[$i]['process_field'] = $this->processField($arrData[$i], $this->strTableName);
|
||||
} else {
|
||||
$objTemplate->setVariable('DATA_FIELD_2S', addslashes(htmlentities(
|
||||
$arrData[$i][$strField2],
|
||||
ENT_COMPAT,
|
||||
'UTF-8'
|
||||
)));
|
||||
}
|
||||
if ($intLimit !== 0) {
|
||||
if (strlen($arrData[$i][$strField2]) > $intLimit) {
|
||||
$strAdd = ' ...';
|
||||
} else {
|
||||
$strAdd = '';
|
||||
}
|
||||
$objTemplate->setVariable('DATA_FIELD_2', htmlentities(substr(
|
||||
$arrData[$i][$strField2],
|
||||
0,
|
||||
$intLimit
|
||||
), ENT_COMPAT, 'UTF-8') . $strAdd);
|
||||
} else {
|
||||
$objTemplate->setVariable('DATA_FIELD_2', htmlentities(
|
||||
$arrData[$i][$strField2],
|
||||
ENT_COMPAT,
|
||||
'UTF-8'
|
||||
));
|
||||
}
|
||||
$objTemplate->setVariable('DATA_REGISTERED', $strRegister);
|
||||
if (substr_count($this->strTableName, 'template') !== 0) {
|
||||
$objTemplate->setVariable('DATA_REGISTERED', '-');
|
||||
}
|
||||
$objTemplate->setVariable('DATA_ACTIVE', $strActive);
|
||||
$objTemplate->setVariable('DATA_FILE', '<span class="redmessage">' . translate('out-of-date') . '</span>');
|
||||
if ($intTimeInfo === 4) {
|
||||
$objTemplate->setVariable('DATA_FILE', translate('no target'));
|
||||
}
|
||||
if ($intTimeInfo === 3) {
|
||||
$objTemplate->setVariable('DATA_FILE', '<span class="greenmessage">' . translate('missed') . '</span>');
|
||||
}
|
||||
if ($intTimeInfo === 2) {
|
||||
$objTemplate->setVariable('DATA_FILE', '<span class="redmessage">' . translate('missed') . '</span>');
|
||||
}
|
||||
if ($intTimeInfo === 0) {
|
||||
$objTemplate->setVariable('DATA_FILE', translate('up-to-date'));
|
||||
}
|
||||
$objTemplate->setVariable('LINE_ID', $arrData[$i]['id']);
|
||||
$objTemplate->setVariable('CELLCLASS_L', $strClassL);
|
||||
$objTemplate->setVariable('CELLCLASS_M', $strClassM);
|
||||
$objTemplate->setVariable('IMAGE_PATH', $this->arrSettings['path']['base_url'] . 'images/');
|
||||
$objTemplate->setVariable('PICTURE_CLASS', 'elementShow');
|
||||
$objTemplate->setVariable('DOMAIN_SPECIAL');
|
||||
$objTemplate->setVariable('DISABLED');
|
||||
/* Disable common domain objects */
|
||||
if (isset($arrData[$i]['config_id'])) {
|
||||
if ((int)$arrData[$i]['config_id'] !== $this->intDomainId) {
|
||||
$objTemplate->setVariable('PICTURE_CLASS', 'elementHide');
|
||||
$objTemplate->setVariable('DOMAIN_SPECIAL', ' [common]');
|
||||
$objTemplate->setVariable('DISABLED', 'disabled');
|
||||
} else if ((int)$arrData[$i]['active'] === 0) {
|
||||
$objTemplate->setVariable('ACTIVE_CONTROL', 'elementHide');
|
||||
}
|
||||
}
|
||||
/* Check access rights for list objects */
|
||||
if (isset($arrData[$i]['access_group'])) {
|
||||
if ($this->myVisClass->checkAccountGroup($arrData[$i]['access_group'], 'write') !== 0) {
|
||||
$objTemplate->setVariable('LINE_CONTROL', 'elementHide');
|
||||
}
|
||||
} else if ($this->intGlobalWriteAccess !== 0) {
|
||||
$objTemplate->setVariable('LINE_CONTROL', 'elementHide');
|
||||
}
|
||||
/* Check global access rights for list objects */
|
||||
if ($this->intGlobalWriteAccess !== 0) {
|
||||
$objTemplate->setVariable('LINE_CONTROL', 'elementHide');
|
||||
}
|
||||
$objTemplate->parse($strTplRow);
|
||||
}
|
||||
} else {
|
||||
$objTemplate->setVariable('IMAGE_PATH', $this->arrSettings['path']['base_url'] . 'images/');
|
||||
$objTemplate->parse($strTplRow);
|
||||
}
|
||||
$objTemplate->setVariable('BUTTON_CLASS', 'elementShow');
|
||||
if ($this->intDomainId === 0) {
|
||||
$objTemplate->setVariable('BUTTON_CLASS', 'elementHide');
|
||||
}
|
||||
/* Check access rights for adding new objects */
|
||||
if ($this->intGlobalWriteAccess !== 0) {
|
||||
$objTemplate->setVariable('ADD_CONTROL', 'disabled="disabled"');
|
||||
}
|
||||
/* Show page numbers */
|
||||
$objTemplate->setVariable('PAGES', $this->myVisClass->buildPageLinks(filter_input(
|
||||
INPUT_SERVER,
|
||||
'PHP_SELF',
|
||||
FILTER_UNSAFE_RAW
|
||||
), $intDLCount2, $this->intLimit, $this->intSortBy, $this->strSortDir));
|
||||
$objTemplate->parse($strTplPart);
|
||||
$objTemplate->show($strTplPart);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process field view
|
||||
* @param array $arrData Data array
|
||||
* @param string $strTableName Table name
|
||||
* @return string String includung field data
|
||||
*/
|
||||
public function processField(array $arrData, string $strTableName): string
|
||||
{
|
||||
$strField = '';
|
||||
$arrDataHosts = array();
|
||||
$arrDataHostgroups = array();
|
||||
$arrDataService = array();
|
||||
$arrDataServices = array();
|
||||
/* Hostdependency table */
|
||||
if ($strTableName === 'tbl_hostdependency') {
|
||||
if ((int)$arrData['dependent_host_name'] !== 0) {
|
||||
$strSQLHost = 'SELECT `host_name`, `exclude` FROM `tbl_host` ' .
|
||||
'LEFT JOIN `tbl_lnkHostdependencyToHost_DH` ON `id`=`idSlave` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `host_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLHost, $arrDataHosts, $intDCHost);
|
||||
if ($intDCHost !== 0) {
|
||||
foreach ($arrDataHosts as $elem) {
|
||||
if ((int)$elem['exclude'] === 1) {
|
||||
$strField .= 'H:!' . $elem['host_name'] . ',';
|
||||
} else {
|
||||
$strField .= 'H:' . $elem['host_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((int)$arrData['dependent_hostgroup_name'] !== 0) {
|
||||
$strSQLHost = 'SELECT `hostgroup_name`, `exclude` FROM `tbl_hostgroup` ' .
|
||||
'LEFT JOIN `tbl_lnkHostdependencyToHostgroup_DH` ON `id`=`idSlave` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `hostgroup_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLHost, $arrDataHostgroups, $intDCHostgroup);
|
||||
if ($intDCHostgroup !== 0) {
|
||||
foreach ($arrDataHostgroups as $elem) {
|
||||
if ((int)$elem['exclude'] === 1) {
|
||||
$strField .= 'HG:!' . $elem['hostgroup_name'] . ',';
|
||||
} else {
|
||||
$strField .= 'HG:' . $elem['hostgroup_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Hostescalation table */
|
||||
if ($strTableName === 'tbl_hostescalation') {
|
||||
if ((int)$arrData['host_name'] !== 0) {
|
||||
$strSQLHost = 'SELECT `host_name` FROM `tbl_host` ' .
|
||||
'LEFT JOIN `tbl_lnkHostescalationToHost` ON `id`=`idSlave` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `host_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLHost, $arrDataHosts, $intDCHost);
|
||||
if ($intDCHost !== 0) {
|
||||
foreach ($arrDataHosts as $elem) {
|
||||
$strField .= 'H:' . $elem['host_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((int)$arrData['hostgroup_name'] !== 0) {
|
||||
$strSQLHost = 'SELECT `hostgroup_name` FROM `tbl_hostgroup` ' .
|
||||
'LEFT JOIN `tbl_lnkHostescalationToHostgroup` ON `id`=`idSlave` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `hostgroup_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLHost, $arrDataHostgroups, $intDCHostgroup);
|
||||
if ($intDCHostgroup !== 0) {
|
||||
foreach ($arrDataHostgroups as $elem) {
|
||||
$strField .= 'HG:' . $elem['hostgroup_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Servicedependency table */
|
||||
if ($strTableName === 'tbl_servicedependency') {
|
||||
if ((int)$arrData['dependent_service_description'] === 2) {
|
||||
$strField .= '*';
|
||||
} elseif ((int)$arrData['dependent_service_description'] !== 0) {
|
||||
$strSQLService = 'SELECT `strSlave` FROM `tbl_lnkServicedependencyToService_DS` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `strSlave`';
|
||||
$this->myDBClass->hasDataArray($strSQLService, $arrDataService, $intDCService);
|
||||
if ($intDCService !== 0) {
|
||||
foreach ($arrDataService as $elem) {
|
||||
$strField .= $elem['strSlave'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strField === '') {
|
||||
$strSQLService = 'SELECT `servicegroup_name` FROM `tbl_servicegroup` ' .
|
||||
'LEFT JOIN `tbl_lnkServicedependencyToServicegroup_DS` ON `idSlave`=`id` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `servicegroup_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLService, $arrDataService, $intDCService);
|
||||
if ($intDCService !== 0) {
|
||||
foreach ($arrDataService as $elem) {
|
||||
$strField .= $elem['servicegroup_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Serviceescalation table */
|
||||
if ($strTableName === 'tbl_serviceescalation') {
|
||||
if ((int)$arrData['service_description'] === 2) {
|
||||
$strField .= '*';
|
||||
} elseif ((int)$arrData['service_description'] !== 0) {
|
||||
$strSQLService = 'SELECT `strSlave` FROM `tbl_lnkServiceescalationToService` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'];
|
||||
$this->myDBClass->hasDataArray($strSQLService, $arrDataServices, $intDCServices);
|
||||
if ($intDCServices !== 0) {
|
||||
foreach ($arrDataServices as $elem) {
|
||||
$strField .= $elem['strSlave'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strField === '') {
|
||||
$strSQLService = 'SELECT `servicegroup_name` FROM `tbl_servicegroup` ' .
|
||||
'LEFT JOIN `tbl_lnkServiceescalationToServicegroup` ON `idSlave`=`id` ' .
|
||||
'WHERE `idMaster`=' . $arrData['id'] . ' ORDER BY `servicegroup_name`';
|
||||
$this->myDBClass->hasDataArray($strSQLService, $arrDataService, $intDCService);
|
||||
if ($intDCService !== 0) {
|
||||
foreach ($arrDataService as $elem) {
|
||||
$strField .= $elem['servicegroup_name'] . ',';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Some string manipulations - remove comma at line end */
|
||||
if (substr($strField, -1) === ',') {
|
||||
$strField = substr($strField, 0, -1);
|
||||
}
|
||||
return $strField;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display information messages
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
* @param string $strErrorMessage Error messages
|
||||
* @param string $strInfoMessage Information messages
|
||||
* @param string $strConsistMessage Consistency messages
|
||||
* @param array $arrTimeData Time data array
|
||||
* @param string $strTimeInfoString Time information message
|
||||
* @param int $intNoTime Status value for showing time information (0 = show time)
|
||||
*/
|
||||
public function showMessages(
|
||||
HTML_Template_IT $objTemplate,
|
||||
string $strErrorMessage,
|
||||
string $strInfoMessage,
|
||||
string $strConsistMessage,
|
||||
array $arrTimeData,
|
||||
string $strTimeInfoString,
|
||||
int $intNoTime = 0
|
||||
): void
|
||||
{
|
||||
/* Display info messages */
|
||||
if ($strInfoMessage !== '') {
|
||||
$objTemplate->setVariable('INFOMESSAGE', $strInfoMessage);
|
||||
$objTemplate->parse('infomessage');
|
||||
}
|
||||
/* Display error messages */
|
||||
if ($strErrorMessage !== '') {
|
||||
$objTemplate->setVariable('ERRORMESSAGE', $strErrorMessage);
|
||||
$objTemplate->parse('errormessage');
|
||||
}
|
||||
/* Display time information */
|
||||
if (($this->intDomainId !== 0) && ($intNoTime === 0)) {
|
||||
foreach ($arrTimeData as $key => $elem) {
|
||||
if ($key === 'table') {
|
||||
$objTemplate->setVariable('LAST_MODIFIED_TABLE', translate('Last database update:') . ' <b>' .
|
||||
$elem . '</b>');
|
||||
$objTemplate->parse('table_time');
|
||||
} else {
|
||||
$objTemplate->setVariable('LAST_MODIFIED_FILE', translate('Last file change of the configuration ' .
|
||||
'target ') . ' <i>' . $key . '</i>: <b>' . $elem . '</b>');
|
||||
$objTemplate->parse('file_time');
|
||||
}
|
||||
}
|
||||
if ($strTimeInfoString !== '') {
|
||||
$objTemplate->setVariable('MODIFICATION_STATUS', $strTimeInfoString);
|
||||
$objTemplate->parse('modification_status');
|
||||
}
|
||||
}
|
||||
/* Display consistency messages */
|
||||
if ($strConsistMessage !== '') {
|
||||
$objTemplate->setVariable('CONSIST_USAGE', $strConsistMessage);
|
||||
$objTemplate->parse('consistency');
|
||||
}
|
||||
$objTemplate->parse('msgfooter');
|
||||
$objTemplate->show('msgfooter');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display page footer
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
* @param string $setFileVersion NagiosQL version
|
||||
*/
|
||||
public function showFooter(HTML_Template_IT $objTemplate, string $setFileVersion): void
|
||||
{
|
||||
$objTemplate->setVariable('VERSION_INFO', "<a href='https://sourceforge.net/projects/nagiosql/' " .
|
||||
"target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$objTemplate->parse('footer');
|
||||
$objTemplate->show('footer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Single data form initialization
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
* @param string $strChbFields Comma separated string of checkbox value names
|
||||
*/
|
||||
public function addFormInit(HTML_Template_IT $objTemplate, string $strChbFields = ''): void
|
||||
{
|
||||
/* Language text replacements from fieldvars.php file */
|
||||
foreach ($this->arrDescription as $elem) {
|
||||
$objTemplate->setVariable($elem['name'], $elem['string']);
|
||||
}
|
||||
/* Some single replacements */
|
||||
$objTemplate->setVariable('ACTION_INSERT', filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_UNSAFE_RAW));
|
||||
$objTemplate->setVariable('IMAGE_PATH', $this->arrSettings['path']['base_url'] . 'images/');
|
||||
$objTemplate->setVariable('DOCUMENT_ROOT', $this->arrSettings['path']['base_url']);
|
||||
$objTemplate->setVariable('ACT_CHECKED', 'checked');
|
||||
$objTemplate->setVariable('REG_CHECKED', 'checked');
|
||||
$objTemplate->setVariable('MODUS', 'insert');
|
||||
$objTemplate->setVariable('VERSION', $this->intVersion);
|
||||
$objTemplate->setVariable('LIMIT', $this->intLimit);
|
||||
$objTemplate->setVariable('RELATION_CLASS', 'elementHide');
|
||||
$objTemplate->setVariable('IFRAME_SRC', $this->arrSettings['path']['base_url'] . 'admin/commandline.php');
|
||||
/* Some conditional replacements */
|
||||
if ($this->strBrowser !== 'msie') {
|
||||
$objTemplate->setVariable('MSIE_DISABLED', 'disabled="disabled"');
|
||||
}
|
||||
if ($this->intGroupAdm === 0) {
|
||||
$objTemplate->setVariable('RESTRICT_GROUP_ADMIN', 'class="elementHide"');
|
||||
}
|
||||
if ((int)$this->arrSettings['common']['seldisable'] === 0) {
|
||||
$objTemplate->setVariable('MSIE_DISABLED');
|
||||
}
|
||||
if ((int)$this->arrSettings['common']['tplcheck'] === 0) {
|
||||
$objTemplate->setVariable('CHECK_BYPASS', 'return true;');
|
||||
$objTemplate->setVariable('CHECK_BYPASS_NEW', '1');
|
||||
} else {
|
||||
$objTemplate->setVariable('CHECK_BYPASS_NEW', '0');
|
||||
}
|
||||
/* Some replacements based on nagios version */
|
||||
if ($this->intVersion < 3) {
|
||||
$objTemplate->setVariable('VERSION_20_VISIBLE', 'elementShow');
|
||||
$objTemplate->setVariable('VERSION_30_VISIBLE', 'elementHide');
|
||||
$objTemplate->setVariable('VERSION_40_VISIBLE', 'elementHide');
|
||||
$objTemplate->setVariable('VERSION_20_MUST', 'inpmust');
|
||||
$objTemplate->setVariable('VERSION_30_MUST');
|
||||
$objTemplate->setVariable('VERSION_40_MUST');
|
||||
$objTemplate->setVariable('VERSION_20_STAR', '*');
|
||||
$objTemplate->setVariable('NAGIOS_VERSION', '2');
|
||||
}
|
||||
if ($this->intVersion >= 3) {
|
||||
$objTemplate->setVariable('VERSION_20_VISIBLE', 'elementHide');
|
||||
$objTemplate->setVariable('VERSION_30_VISIBLE', 'elementShow');
|
||||
$objTemplate->setVariable('VERSION_40_VISIBLE', 'elementHide');
|
||||
$objTemplate->setVariable('VERSION_20_MUST');
|
||||
$objTemplate->setVariable('VERSION_30_MUST', 'inpmust');
|
||||
$objTemplate->setVariable('VERSION_40_MUST');
|
||||
$objTemplate->setVariable('VERSION_20_STAR');
|
||||
$objTemplate->setVariable('NAGIOS_VERSION', '3');
|
||||
}
|
||||
if ($this->intVersion >= 4) {
|
||||
$objTemplate->setVariable('VERSION_40_VISIBLE', 'elementShow');
|
||||
$objTemplate->setVariable('VERSION_40_MUST', 'inpmust');
|
||||
$objTemplate->setVariable('NAGIOS_VERSION', '4');
|
||||
}
|
||||
/* Checkbox and radio field value replacements */
|
||||
if ($strChbFields !== '') {
|
||||
foreach (explode(',', $strChbFields) as $elem) {
|
||||
$objTemplate->setVariable('DAT_' . $elem . '0_CHECKED');
|
||||
$objTemplate->setVariable('DAT_' . $elem . '1_CHECKED');
|
||||
$objTemplate->setVariable('DAT_' . $elem . '2_CHECKED', 'checked');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Single data form - value insertion
|
||||
* @param HTML_Template_IT $objTemplate Form template object
|
||||
* @param array $arrModifyData Database values
|
||||
* @param int $intLocked Data is locked (0 = no / 1 = yes)
|
||||
* @param string $strInfo Information string
|
||||
* @param string $strChbFields Comma separated string of checkbox value names
|
||||
*/
|
||||
public function addInsertData(HTML_Template_IT $objTemplate, array $arrModifyData, int $intLocked, string $strInfo, string $strChbFields = ''): void
|
||||
{
|
||||
/* Insert text data values */
|
||||
foreach ($arrModifyData as $key => $value) {
|
||||
if (($key === 'active') || ($key === 'register') || ($key === 'last_modified') || ($key === 'access_rights')) {
|
||||
continue;
|
||||
}
|
||||
$objTemplate->setVariable('DAT_' . strtoupper($key), htmlentities($value, ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
/* Insert checkbox data values */
|
||||
if (isset($arrModifyData['active']) && ((int)$arrModifyData['active'] !== 1)) {
|
||||
$objTemplate->setVariable('ACT_CHECKED');
|
||||
}
|
||||
if (isset($arrModifyData['register']) && ((int)$arrModifyData['register'] !== 1)) {
|
||||
$objTemplate->setVariable('REG_CHECKED');
|
||||
}
|
||||
/* Deselect any checkboxes */
|
||||
if ($strChbFields !== '') {
|
||||
foreach (explode(',', $strChbFields) as $elem) {
|
||||
$objTemplate->setVariable('DAT_' . $elem . '0_CHECKED');
|
||||
$objTemplate->setVariable('DAT_' . $elem . '1_CHECKED');
|
||||
$objTemplate->setVariable('DAT_' . $elem . '2_CHECKED');
|
||||
}
|
||||
}
|
||||
/* Change some status values in locked data sets */
|
||||
if ($intLocked !== 0) {
|
||||
$objTemplate->setVariable('ACT_DISABLED', 'disabled');
|
||||
$objTemplate->setVariable('ACT_CHECKED', 'checked');
|
||||
$objTemplate->setVariable('ACTIVE', '1');
|
||||
$objTemplate->setVariable('CHECK_MUST_DATA', $strInfo);
|
||||
$objTemplate->setVariable('RELATION_CLASS', 'elementShow');
|
||||
}
|
||||
/* Change mode to modify */
|
||||
$objTemplate->setVariable('MODUS', 'modify');
|
||||
/* Check write permission */
|
||||
if ($this->intWriteAccessId === 1) {
|
||||
$objTemplate->setVariable('DISABLE_SAVE', 'disabled="disabled"');
|
||||
}
|
||||
if ($this->intGlobalWriteAccess === 1) {
|
||||
$objTemplate->setVariable('DISABLE_SAVE', 'disabled="disabled"');
|
||||
}
|
||||
}
|
||||
}
|
||||
1646
functions/NagDataClass.php
Normal file
1646
functions/NagDataClass.php
Normal file
File diff suppressed because it is too large
Load Diff
1997
functions/NagImportClass.php
Normal file
1997
functions/NagImportClass.php
Normal file
File diff suppressed because it is too large
Load Diff
1435
functions/NagVisualClass.php
Normal file
1435
functions/NagVisualClass.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,435 +1,476 @@
|
||||
popup = false;
|
||||
function info(key1,key2,ver) {
|
||||
if(popup&&popup.closed==false) popup.close();
|
||||
var top = (screen.availHeight - 240) / 2;
|
||||
var left = (screen.availWidth - 320) / 2;
|
||||
popup = window.open("info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver,
|
||||
"Information",
|
||||
"width=320, height=240, top=" + top + ", left=" + left + ", SCROLLBARS=YES, MERNUBAR=NO, DEPENDENT=YES");
|
||||
popup.focus();
|
||||
}
|
||||
var myFocusObject = new Object();
|
||||
function checkfields(fields,frm,object) {
|
||||
var error = false;
|
||||
var ar_field = fields.split(",");
|
||||
for (i=0;i<ar_field.length;i++){
|
||||
if (frm[ar_field[i]].value == "") {
|
||||
//frm[ar_field[i]].focus();
|
||||
object.myValue = frm[ar_field[i]];
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function checkfields2(fields,frm,object) {
|
||||
var error = false;
|
||||
var ar_field = fields.split(",");
|
||||
for (i=0;i<ar_field.length;i++){
|
||||
if ((frm[ar_field[i]].value == "") || (frm[ar_field[i]].value == "0")) {
|
||||
//frm[ar_field[i]].focus();
|
||||
object.myValue = frm[ar_field[i]];
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function checkboxes(fields,frm) {
|
||||
var retval = false;
|
||||
var ar_field = fields.split(",");
|
||||
/**
|
||||
* (c) 2005-2022 by Martin Willisegger
|
||||
* Project : NagiosQL
|
||||
* Component : common JavaScript functions
|
||||
* Website : https://sourceforge.net/projects/nagiosql/
|
||||
* Version : 3.5.0
|
||||
* GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
*/
|
||||
let popup = false;
|
||||
|
||||
for (i=0;i<ar_field.length;i++){
|
||||
if (frm[ar_field[i]].checked == true) {
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
function info(key1, key2, ver) {
|
||||
if (popup && popup.closed === false) popup.close();
|
||||
const top = (screen.availHeight - 240) / 2;
|
||||
const left = (screen.availWidth - 320) / 2;
|
||||
popup = window.open("info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver,
|
||||
"Information",
|
||||
"width=320, height=240, top=" + top + ", left=" + left + ", SCROLLBARS=YES, MERNUBAR=NO, DEPENDENT=YES");
|
||||
popup.focus();
|
||||
}
|
||||
|
||||
const myFocusObject = {};
|
||||
|
||||
function checkfields(fields, frm, object) {
|
||||
const ar_field = fields.split(",");
|
||||
for (let i = 0; i < ar_field.length; i++) {
|
||||
if (frm[ar_field[i]].value === "") {
|
||||
//frm[ar_field[i]].focus();
|
||||
object.myValue = frm[ar_field[i]];
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function checkfields2(fields, frm, object) {
|
||||
const ar_field = fields.split(",");
|
||||
for (let i = 0; i < ar_field.length; i++) {
|
||||
if ((frm[ar_field[i]].value === "") || (frm[ar_field[i]].value === "0")) {
|
||||
//frm[ar_field[i]].focus();
|
||||
object.myValue = frm[ar_field[i]];
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function checkboxes(fields, frm) {
|
||||
let retval = false;
|
||||
const ar_field = fields.split(",");
|
||||
for (let i = 0; i < ar_field.length; i++) {
|
||||
if (frm[ar_field[i]].checked === true) {
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
<!-- YUI message box -->
|
||||
function msginit(msg,header,type) {
|
||||
YAHOO.namespace("msg.container");
|
||||
var handleOK = function() {
|
||||
this.hide();
|
||||
//myFocusObject.myValue.focus();
|
||||
};
|
||||
if (type == 1) {
|
||||
var iconobj = YAHOO.widget.SimpleDialog.ICON_WARN;
|
||||
}
|
||||
if (type == 2) {
|
||||
var iconobj = YAHOO.widget.SimpleDialog.ICON_HELP;
|
||||
}
|
||||
YAHOO.msg.container.domainmsg = new YAHOO.widget.SimpleDialog("domainmsg",
|
||||
{ width: "300px",
|
||||
fixedcenter: true,
|
||||
visible: false,
|
||||
draggable: false,
|
||||
close: true,
|
||||
text: msg,
|
||||
modal: true,
|
||||
icon: iconobj,
|
||||
constraintoviewport: true,
|
||||
buttons: [ { text:"Ok", handler:handleOK, isDefault:true } ]
|
||||
} );
|
||||
YAHOO.msg.container.domainmsg.setHeader(header);
|
||||
YAHOO.msg.container.domainmsg.render("msgcontainer");
|
||||
YAHOO.msg.container.domainmsg.show();
|
||||
function msginit(msg, header, type) {
|
||||
let iconobj;
|
||||
YAHOO.namespace("msg.container");
|
||||
const handleOK = function () {
|
||||
this.hide();
|
||||
//myFocusObject.myValue.focus();
|
||||
};
|
||||
if (type === 1) {
|
||||
iconobj = YAHOO.widget.SimpleDialog.ICON_WARN;
|
||||
}
|
||||
if (type === 2) {
|
||||
iconobj = YAHOO.widget.SimpleDialog.ICON_HELP;
|
||||
}
|
||||
YAHOO.msg.container.domainmsg = new YAHOO.widget.SimpleDialog("domainmsg",
|
||||
{
|
||||
width: "300px",
|
||||
fixedcenter: true,
|
||||
visible: false,
|
||||
draggable: false,
|
||||
close: true,
|
||||
text: msg,
|
||||
modal: true,
|
||||
icon: iconobj,
|
||||
constraintoviewport: true,
|
||||
buttons: [{text: "Ok", handler: handleOK, isDefault: true}]
|
||||
});
|
||||
YAHOO.msg.container.domainmsg.setHeader(header);
|
||||
YAHOO.msg.container.domainmsg.render("msgcontainer");
|
||||
YAHOO.msg.container.domainmsg.show();
|
||||
}
|
||||
|
||||
<!-- YUI confirm box -->
|
||||
function confirminit(msg,header,type,yes,no,key) {
|
||||
YAHOO.namespace("question.container");
|
||||
var handleYes = function() {
|
||||
confOpenerYes(key);
|
||||
this.hide();
|
||||
};
|
||||
var handleNo = function() {
|
||||
this.hide();
|
||||
};
|
||||
if (type == 1) {
|
||||
var iconobj = YAHOO.widget.SimpleDialog.ICON_WARN;
|
||||
}
|
||||
YAHOO.question.container.domainmsg = new YAHOO.widget.SimpleDialog("confirm1",
|
||||
{ width: "400px",
|
||||
fixedcenter: true,
|
||||
visible: false,
|
||||
draggable: false,
|
||||
close: true,
|
||||
text: msg,
|
||||
modal: true,
|
||||
icon: iconobj,
|
||||
constraintoviewport: true,
|
||||
buttons: [ { text:yes, handler:handleYes, isDefault:true },
|
||||
{ text:no, handler:handleNo }]
|
||||
} );
|
||||
YAHOO.question.container.domainmsg.setHeader(header);
|
||||
YAHOO.question.container.domainmsg.render("confirmcontainer");
|
||||
YAHOO.question.container.domainmsg.show();
|
||||
function confirminit(msg, header, type, yes, no, key) {
|
||||
let iconobj;
|
||||
YAHOO.namespace("question.container");
|
||||
const handleYes = function () {
|
||||
// noinspection JSUnresolvedFunction
|
||||
confOpenerYes(key);
|
||||
this.hide();
|
||||
};
|
||||
const handleNo = function () {
|
||||
this.hide();
|
||||
};
|
||||
if (type === 1) {
|
||||
iconobj = YAHOO.widget.SimpleDialog.ICON_WARN;
|
||||
}
|
||||
YAHOO.question.container.domainmsg = new YAHOO.widget.SimpleDialog("confirm1",
|
||||
{
|
||||
width: "400px",
|
||||
fixedcenter: true,
|
||||
visible: false,
|
||||
draggable: false,
|
||||
close: true,
|
||||
text: msg,
|
||||
modal: true,
|
||||
icon: iconobj,
|
||||
constraintoviewport: true,
|
||||
buttons: [{text: yes, handler: handleYes, isDefault: true},
|
||||
{text: no, handler: handleNo}]
|
||||
});
|
||||
YAHOO.question.container.domainmsg.setHeader(header);
|
||||
YAHOO.question.container.domainmsg.render("confirmcontainer");
|
||||
YAHOO.question.container.domainmsg.show();
|
||||
}
|
||||
|
||||
|
||||
<!-- YUI dialog box -->
|
||||
function dialoginit(key1,key2,ver,header) {
|
||||
YAHOO.namespace("dialog.container");
|
||||
function dialoginit(key1, key2, ver, header) {
|
||||
YAHOO.namespace("dialog.container");
|
||||
|
||||
var handleCancel = function() {
|
||||
this.cancel();
|
||||
};
|
||||
var handleSuccess = function(o){
|
||||
if(o.responseText !== undefined){
|
||||
document.getElementById('dialogcontent').innerHTML = o.responseText;
|
||||
}
|
||||
}
|
||||
var handleFailure = function(o){
|
||||
if(o.responseText !== undefined){
|
||||
document.getElementById('dialogcontent').innerHTML = "No information found";
|
||||
}
|
||||
}
|
||||
var callback = {
|
||||
success:handleSuccess,
|
||||
failure: handleFailure
|
||||
};
|
||||
if (key2 == "updInfo") {
|
||||
sUrl = "admin/info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver;
|
||||
} else {
|
||||
sUrl = "info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver;
|
||||
}
|
||||
var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
|
||||
|
||||
if (typeof YAHOO.dialog.container.infodialog == "undefined") {
|
||||
YAHOO.dialog.container.infodialog = new YAHOO.widget.Dialog("infodialog",
|
||||
{ width : "50em",
|
||||
visible : false,
|
||||
draggable: true,
|
||||
fixedcenter: true,
|
||||
constraintoviewport : true,
|
||||
buttons : [ { text:"Ok", handler:handleCancel, isDefault:true } ]
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
YAHOO.dialog.container.infodialog.setHeader(header);
|
||||
YAHOO.dialog.container.infodialog.render();
|
||||
YAHOO.dialog.container.infodialog.show();
|
||||
const handleCancel = function () {
|
||||
this.cancel();
|
||||
};
|
||||
const handleSuccess = function (o) {
|
||||
if (o.responseText !== undefined) {
|
||||
document.getElementById('dialogcontent').innerHTML = o.responseText;
|
||||
}
|
||||
};
|
||||
const handleFailure = function (o) {
|
||||
if (o.responseText !== undefined) {
|
||||
document.getElementById('dialogcontent').innerHTML = "No information found";
|
||||
}
|
||||
};
|
||||
const callback = {
|
||||
success: handleSuccess,
|
||||
failure: handleFailure
|
||||
};
|
||||
let sUrl;
|
||||
if (key2 === "updInfo") {
|
||||
sUrl = "admin/info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver;
|
||||
} else {
|
||||
sUrl = "info.php?key1=" + key1 + "&key2=" + key2 + "&version=" + ver;
|
||||
}
|
||||
|
||||
YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
|
||||
|
||||
if (typeof YAHOO.dialog.container.infodialog === "undefined") {
|
||||
YAHOO.dialog.container.infodialog = new YAHOO.widget.Dialog("infodialog",
|
||||
{
|
||||
width: "50em",
|
||||
visible: false,
|
||||
draggable: true,
|
||||
fixedcenter: true,
|
||||
constraintoviewport: true,
|
||||
buttons: [{text: "Ok", handler: handleCancel, isDefault: true}]
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
YAHOO.dialog.container.infodialog.setHeader(header);
|
||||
YAHOO.dialog.container.infodialog.render();
|
||||
YAHOO.dialog.container.infodialog.show();
|
||||
}
|
||||
|
||||
<!-- YUI calendar -->
|
||||
function calendarinit(lang,start,field,key,cont,obj) {
|
||||
YAHOO.util.Event.onDOMReady(function(){
|
||||
function calendarinit(lang, start, field, key, cont, obj) {
|
||||
YAHOO.util.Event.onDOMReady(function () {
|
||||
|
||||
var dialog, calendar;
|
||||
|
||||
calendar = new YAHOO.widget.Calendar(obj, {
|
||||
iframe:false,
|
||||
hide_blank_weeks:true,
|
||||
START_WEEKDAY:start
|
||||
});
|
||||
if (lang == "de_DE") {
|
||||
calendar.cfg.setProperty("MONTHS_LONG", ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
|
||||
calendar.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
|
||||
}
|
||||
|
||||
function cancelHandler() {
|
||||
this.hide();
|
||||
}
|
||||
|
||||
function handleSelect(type,args,obj) {
|
||||
var dates = args[0];
|
||||
var date = dates[0];
|
||||
var year = date[0], month = date[1], day = date[2];
|
||||
|
||||
var txtDate1 = document.getElementById(field);
|
||||
if (month < 10) { month = "0" + month;}
|
||||
if (day < 10) { day = "0" + day;}
|
||||
txtDate1.value = year + "-" + month + "-" + day;
|
||||
dialog.hide();
|
||||
}
|
||||
|
||||
dialog = new YAHOO.widget.Dialog(cont, {
|
||||
context:[field, "tl", "bl"],
|
||||
width:"16em",
|
||||
draggable:true,
|
||||
close:true
|
||||
});
|
||||
calendar.render();
|
||||
dialog.render();
|
||||
dialog.hide();
|
||||
|
||||
calendar.renderEvent.subscribe(function() {
|
||||
dialog.fireEvent("changeContent");
|
||||
});
|
||||
calendar.selectEvent.subscribe(handleSelect, calendar.cal1, true);
|
||||
|
||||
YAHOO.util.Event.on(key, "click", dialog.show, dialog, true);
|
||||
});
|
||||
let dialog, calendar;
|
||||
|
||||
calendar = new YAHOO.widget.Calendar(obj, {
|
||||
iframe: false,
|
||||
hide_blank_weeks: true,
|
||||
START_WEEKDAY: start
|
||||
});
|
||||
if (lang === "de_DE") {
|
||||
calendar.cfg.setProperty("MONTHS_LONG", ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
|
||||
calendar.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
|
||||
}
|
||||
|
||||
//function cancelHandler() {
|
||||
// this.hide();
|
||||
//}
|
||||
|
||||
//function handleSelect(type,args,obj) {
|
||||
function handleSelect(type, args) {
|
||||
const dates = args[0];
|
||||
const date = dates[0];
|
||||
const year = date[0];
|
||||
let month = date[1], day = date[2];
|
||||
|
||||
const txtDate1 = document.getElementById(field);
|
||||
if (month < 10) {
|
||||
month = "0" + month;
|
||||
}
|
||||
if (day < 10) {
|
||||
day = "0" + day;
|
||||
}
|
||||
// noinspection JSUndefinedPropertyAssignment
|
||||
txtDate1.value = year + "-" + month + "-" + day;
|
||||
dialog.hide();
|
||||
}
|
||||
|
||||
dialog = new YAHOO.widget.Dialog(cont, {
|
||||
context: [field, "tl", "bl"],
|
||||
width: "16em",
|
||||
draggable: true,
|
||||
close: true
|
||||
});
|
||||
calendar.render();
|
||||
dialog.render();
|
||||
dialog.hide();
|
||||
|
||||
calendar.renderEvent.subscribe(function () {
|
||||
dialog.fireEvent("changeContent");
|
||||
});
|
||||
// noinspection JSUnresolvedVariable
|
||||
calendar.selectEvent.subscribe(handleSelect, calendar.cal1, true);
|
||||
|
||||
YAHOO.util.Event.on(key, "click", dialog.show, dialog, true);
|
||||
});
|
||||
}
|
||||
|
||||
// Open edit dialog for list boxes
|
||||
function openMutDlgInit(field,divbox,header,key,langkey1,langkey2,exclude) {
|
||||
|
||||
YAHOO.util.Event.onDOMReady(function(){
|
||||
|
||||
var mutdialog;
|
||||
|
||||
var handleSuccess = function(o){
|
||||
if(o.responseText !== undefined){
|
||||
document.getElementById(divbox+'content').innerHTML = o.responseText;
|
||||
}
|
||||
}
|
||||
var handleFailure = function(o){
|
||||
if(o.responseText !== undefined){
|
||||
document.getElementById(divbox+'content').innerHTML = "No information found";
|
||||
}
|
||||
}
|
||||
var callback = {
|
||||
success:handleSuccess,
|
||||
failure: handleFailure
|
||||
};
|
||||
sUrl = "mutdialog.php?object=" + field + "&exclude=" + exclude;
|
||||
var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
|
||||
|
||||
var handleSave = function() {
|
||||
var source = document.getElementById(field);
|
||||
var targetSelect = document.getElementById(field+'Selected');
|
||||
var targetAvail = document.getElementById(field+'Avail');
|
||||
for (i = 0; i < targetSelect.length; ++i) {
|
||||
targetSelect.options[i].selected = true;
|
||||
}
|
||||
for (i = 0; i < source.length; ++i) {
|
||||
source.options[i].selected = false;
|
||||
source.options[i].className = source.options[i].className.replace(/ ieselected/g , '');
|
||||
}
|
||||
for (i = 0; i < targetSelect.length; ++i) {
|
||||
for (y = 0; y < source.length; ++y) {
|
||||
var value1 = targetSelect.options[i].value.replace(/^e/g , '');
|
||||
var value2 = "e"+value1;
|
||||
if ((source.options[y].value == value1) || (source.options[y].value == value2)) {
|
||||
source.options[y].selected = true;
|
||||
source.options[y].value = targetSelect.options[i].value;
|
||||
source.options[y].text = targetSelect.options[i].text;
|
||||
source.options[y].className = source.options[y].className+" ieselected";
|
||||
}
|
||||
}
|
||||
}
|
||||
this.cancel();
|
||||
if ((typeof(update) == 'number') && (update == 1)) {
|
||||
updateForm(field);
|
||||
}
|
||||
};
|
||||
var handleCancel = function() {
|
||||
this.cancel();
|
||||
};
|
||||
mutdialog = new YAHOO.widget.Dialog(divbox,
|
||||
{ width : "60em",
|
||||
fixedcenter : true,
|
||||
visible : false,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
constraintoviewport : true,
|
||||
buttons : [ { text:langkey1, handler:handleSave, isDefault:true },
|
||||
{ text:langkey2, handler:handleCancel } ]
|
||||
});
|
||||
|
||||
mutdialog.setHeader(header);
|
||||
mutdialog.render();
|
||||
mutdialog.hide();
|
||||
mutdialog.beforeShowEvent.subscribe(function() {
|
||||
getData(field);
|
||||
});
|
||||
|
||||
YAHOO.util.Event.on(key, "click", mutdialog.show, mutdialog, true);
|
||||
});
|
||||
// Open edit dialog for list boxes
|
||||
function openMutDlgInit(field, divbox, header, key, langkey1, langkey2, exclude) {
|
||||
|
||||
YAHOO.util.Event.onDOMReady(function () {
|
||||
|
||||
let mutdialog;
|
||||
|
||||
const handleSuccess = function (o) {
|
||||
if (o.responseText !== undefined) {
|
||||
document.getElementById(divbox + 'content').innerHTML = o.responseText;
|
||||
}
|
||||
};
|
||||
const handleFailure = function (o) {
|
||||
if (o.responseText !== undefined) {
|
||||
document.getElementById(divbox + 'content').innerHTML = "No information found";
|
||||
}
|
||||
};
|
||||
const callback = {
|
||||
success: handleSuccess,
|
||||
failure: handleFailure
|
||||
};
|
||||
let sUrl;
|
||||
sUrl = "mutdialog.php?object=" + field + "&exclude=" + exclude;
|
||||
YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
|
||||
|
||||
const handleSave = function () {
|
||||
const source = document.getElementById(field);
|
||||
const targetSelect = document.getElementById(field + 'Selected');
|
||||
//const targetAvail = document.getElementById(field + 'Avail');
|
||||
for (let i = 0; i < targetSelect.length; ++i) {
|
||||
targetSelect.options[i].selected = true;
|
||||
}
|
||||
for (let i = 0; i < source.length; ++i) {
|
||||
source.options[i].selected = false;
|
||||
source.options[i].className = source.options[i].className.replace(/ ieselected/g, '');
|
||||
}
|
||||
for (let i = 0; i < targetSelect.length; ++i) {
|
||||
for (let y = 0; y < source.length; ++y) {
|
||||
const value1 = targetSelect.options[i].value.replace(/^e/g, '');
|
||||
const value2 = "e" + value1;
|
||||
if ((source.options[y].value === value1) || (source.options[y].value === value2)) {
|
||||
source.options[y].selected = true;
|
||||
source.options[y].value = targetSelect.options[i].value;
|
||||
source.options[y].text = targetSelect.options[i].text;
|
||||
source.options[y].className = source.options[y].className + " ieselected";
|
||||
}
|
||||
}
|
||||
}
|
||||
this.cancel();
|
||||
// noinspection JSUnresolvedVariable
|
||||
if ((typeof (update) === 'number') && (update === 1)) {
|
||||
// noinspection JSUnresolvedFunction
|
||||
updateForm(field);
|
||||
}
|
||||
};
|
||||
const handleCancel = function () {
|
||||
this.cancel();
|
||||
};
|
||||
mutdialog = new YAHOO.widget.Dialog(divbox,
|
||||
{
|
||||
width: "60em",
|
||||
fixedcenter: true,
|
||||
visible: false,
|
||||
draggable: true,
|
||||
modal: true,
|
||||
constraintoviewport: true,
|
||||
buttons: [{text: langkey1, handler: handleSave, isDefault: true},
|
||||
{text: langkey2, handler: handleCancel}]
|
||||
});
|
||||
|
||||
mutdialog.setHeader(header);
|
||||
mutdialog.render();
|
||||
mutdialog.hide();
|
||||
mutdialog.beforeShowEvent.subscribe(function () {
|
||||
getData(field);
|
||||
});
|
||||
|
||||
YAHOO.util.Event.on(key, "click", mutdialog.show, mutdialog, true);
|
||||
});
|
||||
}
|
||||
|
||||
// Additional functions for edit dialog
|
||||
function getData(field) {
|
||||
var source = document.getElementById(field);
|
||||
var targetSelect = document.getElementById(field+'Selected');
|
||||
var targetAvail = document.getElementById(field+'Avail');
|
||||
for (i=0; i < targetSelect.length; i++) {
|
||||
targetSelect.options[i] = null;
|
||||
}
|
||||
targetSelect.length = 0;
|
||||
for (i=0; i < targetAvail.length; i++) {
|
||||
targetAvail.options[i] = null;
|
||||
}
|
||||
targetAvail.length = 0;
|
||||
for (i = 0; i < source.length; ++i) {
|
||||
if (source.options[i].selected == true) {
|
||||
NeuerEintrag1 = new Option(source.options[i].text, source.options[i].value, false, false);
|
||||
NeuerEintrag1.className = source.options[i].className.replace(/ ieselected/g , '');
|
||||
NeuerEintrag1.className = NeuerEintrag1.className.replace(/ inpmust/g , '');
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag1;
|
||||
}
|
||||
if (source.options[i].selected == false) {
|
||||
if (source.options[i].text != "") {
|
||||
NeuerEintrag2 = new Option(source.options[i].text, source.options[i].value, false, false);
|
||||
NeuerEintrag2.className = source.options[i].className.replace(/ ieselected/g , '');
|
||||
NeuerEintrag2.className = NeuerEintrag2.className.replace(/ inpmust/g , '');
|
||||
targetAvail.options[targetAvail.length] = NeuerEintrag2;
|
||||
}
|
||||
}
|
||||
}
|
||||
const source = document.getElementById(field);
|
||||
const targetSelect = document.getElementById(field + 'Selected');
|
||||
const targetAvail = document.getElementById(field + 'Avail');
|
||||
for (let i = 0; i < targetSelect.length; i++) {
|
||||
targetSelect.options[i] = null;
|
||||
}
|
||||
// noinspection JSUndefinedPropertyAssignment
|
||||
targetSelect.length = 0;
|
||||
for (let i = 0; i < targetAvail.length; i++) {
|
||||
targetAvail.options[i] = null;
|
||||
}
|
||||
// noinspection JSUndefinedPropertyAssignment
|
||||
targetAvail.length = 0;
|
||||
let NeuerEintrag1;
|
||||
let NeuerEintrag2;
|
||||
for (let i = 0; i < source.length; ++i) {
|
||||
if (source.options[i].selected === true) {
|
||||
NeuerEintrag1 = new Option(source.options[i].text, source.options[i].value, false, false);
|
||||
NeuerEintrag1.className = source.options[i].className.replace(/ ieselected/g, '');
|
||||
NeuerEintrag1.className = NeuerEintrag1.className.replace(/ inpmust/g, '');
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag1;
|
||||
}
|
||||
if (source.options[i].selected === false) {
|
||||
if (source.options[i].text !== "") {
|
||||
NeuerEintrag2 = new Option(source.options[i].text, source.options[i].value, false, false);
|
||||
NeuerEintrag2.className = source.options[i].className.replace(/ ieselected/g, '');
|
||||
NeuerEintrag2.className = NeuerEintrag2.className.replace(/ inpmust/g, '');
|
||||
targetAvail.options[targetAvail.length] = NeuerEintrag2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert selection
|
||||
function selValue(field) {
|
||||
var targetSelect = document.getElementById(field+'Selected');
|
||||
var targetAvail = document.getElementById(field+'Avail');
|
||||
if (targetAvail.selectedIndex != -1) {
|
||||
var DelOptions = new Array();
|
||||
for (i = 0; i < targetAvail.length; ++i) {
|
||||
if (targetAvail.options[i].selected == true) {
|
||||
NeuerEintrag = new Option(targetAvail.options[i].text, targetAvail.options[i].value, false, false);
|
||||
NeuerEintrag.className = targetAvail.options[i].className;
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetSelect);
|
||||
DelOptions.reverse();
|
||||
for (var i = 0; i < DelOptions.length; ++i) {
|
||||
targetAvail.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
const targetSelect = document.getElementById(field + 'Selected');
|
||||
const targetAvail = document.getElementById(field + 'Avail');
|
||||
let NeuerEintrag;
|
||||
if (targetAvail.selectedIndex !== -1) {
|
||||
const DelOptions = [];
|
||||
for (let i = 0; i < targetAvail.length; ++i) {
|
||||
if (targetAvail.options[i].selected === true) {
|
||||
NeuerEintrag = new Option(targetAvail.options[i].text, targetAvail.options[i].value, false, false);
|
||||
NeuerEintrag.className = targetAvail.options[i].className;
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetSelect);
|
||||
DelOptions.reverse();
|
||||
for (let i = 0; i < DelOptions.length; ++i) {
|
||||
targetAvail.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert selection (exclude variant)
|
||||
function selValueEx(field) {
|
||||
var targetSelect = document.getElementById(field+'Selected');
|
||||
var targetAvail = document.getElementById(field+'Avail');
|
||||
if (targetAvail.selectedIndex != -1) {
|
||||
var DelOptions = new Array();
|
||||
for (i = 0; i < targetAvail.length; ++i) {
|
||||
if (targetAvail.options[i].selected == true) {
|
||||
if ((targetAvail.options[i].text != '*') && (targetAvail.options[i].value != '0')) {
|
||||
NeuerEintrag = new Option("!"+targetAvail.options[i].text, "e"+targetAvail.options[i].value, false, false);
|
||||
} else {
|
||||
NeuerEintrag = new Option(targetAvail.options[i].text, targetAvail.options[i].value, false, false);
|
||||
}
|
||||
NeuerEintrag.className = targetAvail.options[i].className;
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetSelect);
|
||||
DelOptions.reverse();
|
||||
for (var i = 0; i < DelOptions.length; ++i) {
|
||||
targetAvail.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
const targetSelect = document.getElementById(field + 'Selected');
|
||||
const targetAvail = document.getElementById(field + 'Avail');
|
||||
let NeuerEintrag;
|
||||
if (targetAvail.selectedIndex !== -1) {
|
||||
const DelOptions = [];
|
||||
for (let i = 0; i < targetAvail.length; ++i) {
|
||||
if (targetAvail.options[i].selected === true) {
|
||||
if ((targetAvail.options[i].text !== '*') && (targetAvail.options[i].value !== '0')) {
|
||||
NeuerEintrag = new Option("!" + targetAvail.options[i].text, "e" + targetAvail.options[i].value, false, false);
|
||||
} else {
|
||||
NeuerEintrag = new Option(targetAvail.options[i].text, targetAvail.options[i].value, false, false);
|
||||
}
|
||||
NeuerEintrag.className = targetAvail.options[i].className;
|
||||
targetSelect.options[targetSelect.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetSelect);
|
||||
DelOptions.reverse();
|
||||
for (let i = 0; i < DelOptions.length; ++i) {
|
||||
targetAvail.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove selection
|
||||
function desValue(field) {
|
||||
var targetSelect = document.getElementById(field+'Selected');
|
||||
var targetAvail = document.getElementById(field+'Avail');
|
||||
if (targetSelect.selectedIndex != -1) {
|
||||
var DelOptions = new Array();
|
||||
for (i = 0; i < targetSelect.length; ++i) {
|
||||
if (targetSelect.options[i].selected == true) {
|
||||
var text = targetSelect.options[i].text.replace(/^!/g , '');
|
||||
var value = targetSelect.options[i].value.replace(/^e/g , '');
|
||||
NeuerEintrag = new Option(text, value, false, false);
|
||||
NeuerEintrag.className = targetSelect.options[i].className;
|
||||
targetAvail.options[targetAvail.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetAvail);
|
||||
DelOptions.reverse();
|
||||
for (var i = 0; i < DelOptions.length; ++i) {
|
||||
targetSelect.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
const targetSelect = document.getElementById(field + 'Selected');
|
||||
const targetAvail = document.getElementById(field + 'Avail');
|
||||
let NeuerEintrag;
|
||||
if (targetSelect.selectedIndex !== -1) {
|
||||
const DelOptions = [];
|
||||
for (let i = 0; i < targetSelect.length; ++i) {
|
||||
if (targetSelect.options[i].selected === true) {
|
||||
const text = targetSelect.options[i].text.replace(/^!/g, '');
|
||||
const value = targetSelect.options[i].value.replace(/^e/g, '');
|
||||
NeuerEintrag = new Option(text, value, false, false);
|
||||
NeuerEintrag.className = targetSelect.options[i].className;
|
||||
targetAvail.options[targetAvail.length] = NeuerEintrag;
|
||||
DelOptions.push(i);
|
||||
}
|
||||
}
|
||||
sort(targetAvail);
|
||||
DelOptions.reverse();
|
||||
for (let i = 0; i < DelOptions.length; ++i) {
|
||||
targetSelect.options[DelOptions[i]] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sort entries
|
||||
function sort(obj){
|
||||
var sortieren = new Array();
|
||||
var list = new Array();
|
||||
var i;
|
||||
function sort(obj) {
|
||||
const sortieren = [];
|
||||
const list = [];
|
||||
let i;
|
||||
|
||||
// Insert list to array
|
||||
for (i=0; i < obj.options.length; i++) {
|
||||
list[i] = new Array();
|
||||
list[i]["text"] = obj.options[i].text;
|
||||
list[i]["value"] = obj.options[i].value;
|
||||
list[i]["className"] = obj.options[i].className;
|
||||
}
|
||||
// Insert list to array
|
||||
for (i = 0; i < obj.options.length; i++) {
|
||||
list[i] = [];
|
||||
list[i]["text"] = obj.options[i].text;
|
||||
list[i]["value"] = obj.options[i].value;
|
||||
list[i]["className"] = obj.options[i].className;
|
||||
}
|
||||
|
||||
// Sort into a single dimension array
|
||||
for (i=0; i < obj.length; i++){
|
||||
sortieren[i]=list[i]["text"]+";"+list[i]["value"]+";"+list[i]["className"];
|
||||
}
|
||||
// Sort into a single dimension array
|
||||
for (i = 0; i < obj.length; i++) {
|
||||
sortieren[i] = list[i]["text"] + ";" + list[i]["value"] + ";" + list[i]["className"];
|
||||
}
|
||||
|
||||
// Real sort
|
||||
sortieren.sort();
|
||||
// Real sort
|
||||
sortieren.sort();
|
||||
|
||||
// Make array to list
|
||||
for (i=0; i < sortieren.length; i++) {
|
||||
var felder = sortieren[i].split(";");
|
||||
list[i]["text"] = felder[0];
|
||||
list[i]["value"] = felder[1];
|
||||
list[i]["className"] = felder[2];
|
||||
}
|
||||
// Make array to list
|
||||
for (i = 0; i < sortieren.length; i++) {
|
||||
const felder = sortieren[i].split(";");
|
||||
list[i]["text"] = felder[0];
|
||||
list[i]["value"] = felder[1];
|
||||
list[i]["className"] = felder[2];
|
||||
}
|
||||
|
||||
// Remove list field
|
||||
for (i=0; i < obj.options.length; i++) {
|
||||
obj.options[i] = null;
|
||||
}
|
||||
// Remove list field
|
||||
for (i = 0; i < obj.options.length; i++) {
|
||||
obj.options[i] = null;
|
||||
}
|
||||
|
||||
// insert list to dialog
|
||||
for (i=0; i < list.length; i++){
|
||||
NeuerEintrag = new Option(list[i]["text"], list[i]["value"], false, false);
|
||||
NeuerEintrag.className = list[i]["className"];
|
||||
obj.options[i] = NeuerEintrag;
|
||||
}
|
||||
// insert list to dialog
|
||||
let NeuerEintrag;
|
||||
for (i = 0; i < list.length; i++) {
|
||||
NeuerEintrag = new Option(list[i]["text"], list[i]["value"], false, false);
|
||||
NeuerEintrag.className = list[i]["className"];
|
||||
obj.options[i] = NeuerEintrag;
|
||||
}
|
||||
}
|
||||
|
||||
// Show relation data
|
||||
function showRelationData(option) {
|
||||
if (option == 1) {
|
||||
document.getElementById("rel_text").className = "elementHide";
|
||||
document.getElementById("rel_info").className = "elementShow";
|
||||
} else {
|
||||
document.getElementById("rel_text").className = "elementShow";
|
||||
document.getElementById("rel_info").className = "elementHide";
|
||||
}
|
||||
if (option === 1) {
|
||||
document.getElementById("rel_text").className = "elementHide";
|
||||
document.getElementById("rel_info").className = "elementShow";
|
||||
} else {
|
||||
document.getElementById("rel_text").className = "elementShow";
|
||||
document.getElementById("rel_info").className = "elementHide";
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,509 +0,0 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Content Class
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:29:35 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 2 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Class: Common content functions
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Includes all functions used to display the application data
|
||||
//
|
||||
// Name: nagcontent
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
class nagcontent {
|
||||
// Define class variables
|
||||
var $arrSettings; // Array includes all global settings
|
||||
var $myVisClass; // NagiosQL visual class object
|
||||
var $myDBClass; // NagiosQL data base class object
|
||||
var $myConfigClass; // NagiosQL configuration class object
|
||||
var $intLimit; // Data limit value
|
||||
var $intVersion; // Nagios version id
|
||||
var $strBrowser; // Browser string
|
||||
var $intGroupAdm; // Group admin enabled/disabled
|
||||
var $intWriteAccessId; // Write access id
|
||||
var $intGlobalWriteAccess; // Global write access id
|
||||
var $arrDescription; // Language field values from fieldvars.php
|
||||
var $strTableName; // Data table name
|
||||
var $strSearchSession; // Search session name
|
||||
var $intSortBy; // Sort by field id
|
||||
var $strSortDir; // SQL sort direction (ASC/DESC)
|
||||
var $intDomainId = 0; // Domain id value
|
||||
var $strErrorMessage = ""; // String including error messages
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Class constructor
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Activities during class initialization
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function __construct() {
|
||||
// Read global settings
|
||||
$this->arrSettings = $_SESSION['SETS'];
|
||||
if (isset($_SESSION['domain'])) $this->intDomainId = $_SESSION['domain'];
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Single data form initialization
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
// $strChbFields Comma separated string of checkbox value names
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function addFormInit($objTemplate,$strChbFields='') {
|
||||
// Language text replacements from fieldvars.php file
|
||||
foreach($this->arrDescription AS $elem) {
|
||||
$objTemplate->setVariable($elem['name'],$elem['string']);
|
||||
}
|
||||
// Some single replacements
|
||||
$objTemplate->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/");
|
||||
$objTemplate->setVariable("DOCUMENT_ROOT",$this->arrSettings['path']['base_url']);
|
||||
$objTemplate->setVariable("ACT_CHECKED","checked");
|
||||
$objTemplate->setVariable("REG_CHECKED","checked");
|
||||
$objTemplate->setVariable("MODUS","insert");
|
||||
$objTemplate->setVariable("VERSION",$this->intVersion);
|
||||
$objTemplate->setVariable("LIMIT",$this->intLimit);
|
||||
$objTemplate->setVariable("RELATION_CLASS","elementHide");
|
||||
$objTemplate->setVariable("IFRAME_SRC",$this->arrSettings['path']['base_url']."admin/commandline.php");
|
||||
// Some conditional replacements
|
||||
if ($this->strBrowser != "msie") $objTemplate->setVariable("MSIE_DISABLED","disabled=\"disabled\"");
|
||||
if ($this->intGroupAdm == 0) $objTemplate->setVariable("RESTRICT_GROUP_ADMIN","class=\"elementHide\"");
|
||||
if ($this->arrSettings['common']['seldisable'] == 0) $objTemplate->setVariable("MSIE_DISABLED","");
|
||||
if ($this->arrSettings['common']['tplcheck'] == 0) $objTemplate->setVariable("CHECK_BYPASS","return true;");
|
||||
// Some replacements based on nagios version
|
||||
if ($this->intVersion == 3) {
|
||||
$objTemplate->setVariable("VERSION_20_VISIBLE","elementHide");
|
||||
$objTemplate->setVariable("VERSION_30_VISIBLE","elementShow");
|
||||
$objTemplate->setVariable("VERSION_20_MUST","");
|
||||
$objTemplate->setVariable("VERSION_30_MUST","inpmust");
|
||||
$objTemplate->setVariable("VERSION_20_STAR","");
|
||||
$objTemplate->setVariable("NAGIOS_VERSION","3");
|
||||
} else {
|
||||
$objTemplate->setVariable("VERSION_20_VISIBLE","elementShow");
|
||||
$objTemplate->setVariable("VERSION_30_VISIBLE","elementHide");
|
||||
$objTemplate->setVariable("VERSION_20_MUST","inpmust");
|
||||
$objTemplate->setVariable("VERSION_30_MUST","");
|
||||
$objTemplate->setVariable("VERSION_20_STAR","*");
|
||||
$objTemplate->setVariable("NAGIOS_VERSION","2");
|
||||
}
|
||||
// Checkbox and radio field value replacements
|
||||
if ($strChbFields != '') {
|
||||
foreach (explode(",",$strChbFields) AS $elem) {
|
||||
$objTemplate->setVariable("DAT_".$elem."0_CHECKED","");
|
||||
$objTemplate->setVariable("DAT_".$elem."1_CHECKED","");
|
||||
$objTemplate->setVariable("DAT_".$elem."2_CHECKED","checked");
|
||||
}
|
||||
}
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Single data form - value insertions
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
// $arrModifyData Database values
|
||||
// $intLocked Data is locked (0=no / 1=yes)
|
||||
// $strInfo Information string
|
||||
// $strChbFields Comma separated string of checkbox value names
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function addInsertData($objTemplate,$arrModifyData,$intLocked,$strInfo,$strChbFields = '') {
|
||||
// Insert text data values
|
||||
foreach($arrModifyData AS $key => $value) {
|
||||
if (($key == "active") || ($key == "register") || ($key == "last_modified") || ($key == "access_rights")) continue;
|
||||
$objTemplate->setVariable("DAT_".strtoupper($key),htmlentities($value,ENT_QUOTES,'UTF-8'));
|
||||
}
|
||||
// Insert checkbox data values
|
||||
if ((isset($arrModifyData['active'])) && ($arrModifyData['active'] != 1)) $objTemplate->setVariable("ACT_CHECKED","");
|
||||
if ((isset($arrModifyData['register'])) && ($arrModifyData['register'] != 1)) $objTemplate->setVariable("REG_CHECKED","");
|
||||
// Deselect any checkboxes
|
||||
if ($strChbFields != '') {
|
||||
foreach (explode(",",$strChbFields) AS $elem) {
|
||||
$objTemplate->setVariable("DAT_".$elem."0_CHECKED","");
|
||||
$objTemplate->setVariable("DAT_".$elem."1_CHECKED","");
|
||||
$objTemplate->setVariable("DAT_".$elem."2_CHECKED","");
|
||||
}
|
||||
}
|
||||
// Change some status values in locked data sets
|
||||
if ($intLocked != 0) {
|
||||
$objTemplate->setVariable("ACT_DISABLED","disabled");
|
||||
$objTemplate->setVariable("ACT_CHECKED","checked");
|
||||
$objTemplate->setVariable("ACTIVE","1");
|
||||
$objTemplate->setVariable("CHECK_MUST_DATA",$strInfo);
|
||||
$objTemplate->setVariable("RELATION_CLASS","elementShow");
|
||||
}
|
||||
// Change mode to modify
|
||||
$objTemplate->setVariable("MODUS","modify");
|
||||
// Check write permission
|
||||
if ($this->intWriteAccessId == 1) $objTemplate->setVariable("DISABLE_SAVE","disabled=\"disabled\"");
|
||||
if ($this->intGlobalWriteAccess == 1) $objTemplate->setVariable("DISABLE_SAVE","disabled=\"disabled\"");
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: List view - form initialization
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function listViewInit($objTemplate) {
|
||||
// Language text replacements from fieldvars.php file
|
||||
foreach($this->arrDescription AS $elem) {
|
||||
$objTemplate->setVariable($elem['name'],$elem['string']);
|
||||
}
|
||||
// Some single replacements
|
||||
$objTemplate->setVariable("LIMIT",$this->intLimit);
|
||||
$objTemplate->setVariable("ACTION_MODIFY",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING));
|
||||
$objTemplate->setVariable("TABLE_NAME",$this->strTableName);
|
||||
$objTemplate->setVariable("DAT_SEARCH",$_SESSION['search'][$this->strSearchSession]);
|
||||
$objTemplate->setVariable("MAX_ID","0");
|
||||
$objTemplate->setVariable("MIN_ID","0");
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: List view - value insertions
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
// $arrData Database values
|
||||
// $intDataCount Total count of data lines for one page
|
||||
// $intLineCount Total count of data lines (all data)
|
||||
// $strField1 Field name for data field 1
|
||||
// $strField2 Field name for data field 2
|
||||
// $intLimit2 Actual data char limit for field 2
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function listData($objTemplate,$arrData,$intDataCount,$intLineCount,$strField1,$strField2,$intLimit2=0) {
|
||||
// Template block names
|
||||
$strTplPart = 'datatable';
|
||||
$strTplRow = 'datarow';
|
||||
if ($this->strTableName == "tbl_host") {
|
||||
$strTplPart = 'datatablehost';
|
||||
$strTplRow = 'datarowhost';
|
||||
}
|
||||
if ($this->strTableName == "tbl_service") {
|
||||
$strTplPart = 'datatableservice';
|
||||
$strTplRow = 'datarowservice';
|
||||
}
|
||||
if (($this->strTableName == "tbl_user") || ($this->strTableName == "tbl_group") || ($this->strTableName == "tbl_datadomain") || ($this->strTableName == "tbl_configtarget")) {
|
||||
$strTplPart = 'datatablecommon';
|
||||
$strTplRow = 'datarowcommon';
|
||||
}
|
||||
// Some single replacements
|
||||
$objTemplate->setVariable("IMAGE_PATH_HEAD",$this->arrSettings['path']['base_url']."images/");
|
||||
$objTemplate->setVariable("CELLCLASS_L","tdlb");
|
||||
$objTemplate->setVariable("CELLCLASS_M","tdmb");
|
||||
$objTemplate->setVariable("DISABLED","disabled");
|
||||
$objTemplate->setVariable("DATA_FIELD_1",translate('No data'));
|
||||
$objTemplate->setVariable("DATA_FIELD_2"," ");
|
||||
$objTemplate->setVariable("DATA_REGISTERED"," ");
|
||||
$objTemplate->setVariable("DATA_ACTIVE"," ");
|
||||
$objTemplate->setVariable("DATA_FILE"," ");
|
||||
$objTemplate->setVariable("PICTURE_CLASS","elementHide");
|
||||
$objTemplate->setVariable("DOMAIN_SPECIAL"," ");
|
||||
$objTemplate->setVariable("SORT_BY",$this->intSortBy);
|
||||
// Inserting data values
|
||||
if ($intDataCount != 0) {
|
||||
for ($i=0;$i<$intDataCount;$i++) {
|
||||
// Get biggest and smalest value
|
||||
if ($i == 0) {$y = $arrData[$i]['id']; $z = $arrData[$i]['id'];}
|
||||
if ($arrData[$i]['id'] < $y) $y = $arrData[$i]['id'];
|
||||
if ($arrData[$i]['id'] > $z) $z = $arrData[$i]['id'];
|
||||
$objTemplate->setVariable("MAX_ID",$z);
|
||||
$objTemplate->setVariable("MIN_ID",$y);
|
||||
// Line colours
|
||||
$strClassL = "tdld"; $strClassM = "tdmd";
|
||||
if ($i%2 == 1) {$strClassL = "tdlb"; $strClassM = "tdmb";}
|
||||
if ((isset($arrData[$i]['register'])) && ($arrData[$i]['register'] == 0)) {$strRegister = translate('No');} else {$strRegister = translate('Yes');}
|
||||
if ($arrData[$i]['active'] == 0) {$strActive = translate('No');} else {$strActive = translate('Yes');}
|
||||
// Get file date for hosts and services
|
||||
$intTimeInfo = 0;
|
||||
if ($this->strTableName == "tbl_host") {
|
||||
$intReturn = $this->myConfigClass->lastModifiedDir($this->strTableName,$arrData[$i]['host_name'],$arrData[$i]['id'],$arrTimeData,$intTimeInfo);
|
||||
if ($intReturn == 1) $this->strErrorMessage = $this->myConfigClass->strErrorMessage;
|
||||
}
|
||||
if ($this->strTableName == "tbl_service") {
|
||||
$intReturn = $this->myConfigClass->lastModifiedDir($this->strTableName,$arrData[$i]['config_name'],$arrData[$i]['id'],$arrTimeData,$intTimeInfo);
|
||||
if ($intReturn == 1) $this->strErrorMessage = $this->myConfigClass->strErrorMessage;
|
||||
}
|
||||
// Set datafields
|
||||
foreach($this->arrDescription AS $elem) {
|
||||
$objTemplate->setVariable($elem['name'],$elem['string']);
|
||||
}
|
||||
if ($arrData[$i][$strField1] == '') $arrData[$i][$strField1] = "NOT DEFINED - ".$arrData[$i]['id'];
|
||||
$objTemplate->setVariable("DATA_FIELD_1",htmlentities($arrData[$i][$strField1],ENT_COMPAT,'UTF-8'));
|
||||
$objTemplate->setVariable("DATA_FIELD_1S",addslashes(htmlentities($arrData[$i][$strField1],ENT_COMPAT,'UTF-8')));
|
||||
if ($strField2 == 'process_field') {
|
||||
$arrData[$i]['process_field'] = $this->processField2($arrData[$i],$this->strTableName);
|
||||
} else {
|
||||
$objTemplate->setVariable("DATA_FIELD_2S",addslashes(htmlentities($arrData[$i][$strField2],ENT_COMPAT,'UTF-8')));
|
||||
}
|
||||
if ($intLimit2 != 0) {
|
||||
if (strlen($arrData[$i][$strField2]) > $intLimit2) {$strAdd = " ...";} else {$strAdd = "";}
|
||||
$objTemplate->setVariable("DATA_FIELD_2",htmlentities(substr($arrData[$i][$strField2],0,$intLimit2),ENT_COMPAT,'UTF-8').$strAdd);
|
||||
} else {
|
||||
$objTemplate->setVariable("DATA_FIELD_2",htmlentities($arrData[$i][$strField2],ENT_COMPAT,'UTF-8'));
|
||||
}
|
||||
$objTemplate->setVariable("DATA_REGISTERED",$strRegister);
|
||||
if (substr_count($this->strTableName,'template') != 0) $objTemplate->setVariable("DATA_REGISTERED","-");
|
||||
$objTemplate->setVariable("DATA_ACTIVE",$strActive);
|
||||
$objTemplate->setVariable("DATA_FILE","<span class=\"redmessage\">".translate('out-of-date')."</span>");
|
||||
if ($intTimeInfo == 4) $objTemplate->setVariable("DATA_FILE",translate('no target'));
|
||||
if ($intTimeInfo == 3) $objTemplate->setVariable("DATA_FILE","<span class=\"greenmessage\">".translate('missed')."</span>");
|
||||
if ($intTimeInfo == 2) $objTemplate->setVariable("DATA_FILE","<span class=\"redmessage\">".translate('missed')."</span>");
|
||||
if ($intTimeInfo == 1) $objTemplate->setVariable("DATA_FILE","<span class=\"redmessage\">".translate('out-of-date')."</span>");
|
||||
if ($intTimeInfo == 0) $objTemplate->setVariable("DATA_FILE",translate('up-to-date'));
|
||||
$objTemplate->setVariable("LINE_ID",$arrData[$i]['id']);
|
||||
$objTemplate->setVariable("CELLCLASS_L",$strClassL);
|
||||
$objTemplate->setVariable("CELLCLASS_M",$strClassM);
|
||||
$objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/");
|
||||
$objTemplate->setVariable("PICTURE_CLASS","elementShow");
|
||||
$objTemplate->setVariable("DOMAIN_SPECIAL","");
|
||||
$objTemplate->setVariable("DISABLED","");
|
||||
// Disable common domain objects
|
||||
if (isset($arrData[$i]['config_id'])) {
|
||||
if ($arrData[$i]['config_id'] != $this->intDomainId) {
|
||||
$objTemplate->setVariable("PICTURE_CLASS","elementHide");
|
||||
$objTemplate->setVariable("DOMAIN_SPECIAL"," [common]");
|
||||
$objTemplate->setVariable("DISABLED","disabled");
|
||||
} else {
|
||||
// Inactive items should not be written/downloaded
|
||||
if ($arrData[$i]['active'] == 0) $objTemplate->setVariable("ACTIVE_CONTROL","elementHide");
|
||||
}
|
||||
}
|
||||
// Check access rights for list objects
|
||||
if (isset($arrData[$i]['access_group'])) {
|
||||
if ($this->myVisClass->checkAccGroup($arrData[$i]['access_group'],'write') != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide");
|
||||
} else {
|
||||
if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide");
|
||||
}
|
||||
// Check global access rights for list objects
|
||||
if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide");
|
||||
$objTemplate->parse($strTplRow);
|
||||
}
|
||||
} else {
|
||||
$objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/");
|
||||
$objTemplate->parse($strTplRow);
|
||||
}
|
||||
$objTemplate->setVariable("BUTTON_CLASS","elementShow");
|
||||
if ($this->intDomainId == 0) $objTemplate->setVariable("BUTTON_CLASS","elementHide");
|
||||
// Check access rights for adding new objects
|
||||
if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("ADD_CONTROL","disabled=\"disabled\"");
|
||||
// Show page numbers
|
||||
$objTemplate->setVariable("PAGES",$this->myVisClass->buildPageLinks(filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING),$intLineCount,$this->intLimit,$this->intSortBy,$this->strSortDir));
|
||||
$objTemplate->parse($strTplPart);
|
||||
$objTemplate->show($strTplPart);
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Display information messages
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
// $strErrorMessage String including error messages
|
||||
// $strInfoMessage String including information messages
|
||||
// $strConsistMessage String including consistency messages
|
||||
// $arrTimeData Array including time data
|
||||
// $strTimeInfoString String including time information message
|
||||
// $intNoTime Status value for showing time information (0=show time)
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function showMessages($objTemplate,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime=0) {
|
||||
// Display info messages
|
||||
if ($strInfoMessage != "") {
|
||||
$objTemplate->setVariable("INFOMESSAGE",$strInfoMessage);
|
||||
$objTemplate->parse('infomessage');
|
||||
}
|
||||
// Display error messages
|
||||
if ($strErrorMessage != "") {
|
||||
$objTemplate->setVariable("ERRORMESSAGE",$strErrorMessage);
|
||||
$objTemplate->parse('errormessage');
|
||||
}
|
||||
// Display time informations
|
||||
if (($this->intDomainId != 0) && ($intNoTime == 0)) {
|
||||
foreach($arrTimeData AS $key => $elem) {
|
||||
if ($key == 'table') {
|
||||
$objTemplate->setVariable("LAST_MODIFIED_TABLE",translate('Last database update:')." <b>".$elem."</b>");
|
||||
$objTemplate->parse('table_time');
|
||||
} else {
|
||||
$objTemplate->setVariable("LAST_MODIFIED_FILE",translate('Last file change of the configuration target ')." <i>".$key."</i>: <b>".$elem."</b>");
|
||||
$objTemplate->parse('file_time');
|
||||
}
|
||||
}
|
||||
if ($strTimeInfoString != "") {
|
||||
$objTemplate->setVariable("MODIFICATION_STATUS",$strTimeInfoString);
|
||||
$objTemplate->parse('modification_status');
|
||||
}
|
||||
}
|
||||
// Display consistency messages
|
||||
if ($strConsistMessage != "") {
|
||||
$objTemplate->setVariable("CONSIST_USAGE",$strConsistMessage);
|
||||
$objTemplate->parse('consistency');
|
||||
}
|
||||
$objTemplate->parse("msgfooter");
|
||||
$objTemplate->show("msgfooter");
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Display page footer
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $objTemplate Form template object
|
||||
// $setFileVersion NagiosQL version
|
||||
//
|
||||
// Return values: none
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function showFooter($objTemplate,$setFileVersion) {
|
||||
$objTemplate->setVariable("VERSION_INFO","<a href='http://www.nagiosql.org' target='_blank'>NagiosQL</a> $setFileVersion");
|
||||
$objTemplate->parse("footer");
|
||||
$objTemplate->show("footer");
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// --- HELP functions ---
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Process list view field 2
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameter: $arrData Data array
|
||||
// $strTableName Table name
|
||||
//
|
||||
// Return values: String includung field 2 data
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function processField2($arrData,$strTableName) {
|
||||
$strField = "";
|
||||
// Hostdependency table
|
||||
if ($strTableName == "tbl_hostdependency") {
|
||||
if ($arrData['dependent_host_name'] != 0) {
|
||||
$strSQLHost = "SELECT `host_name`, `exclude` FROM `tbl_host` LEFT JOIN `tbl_lnkHostdependencyToHost_DH` ON `id`=`idSlave`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `host_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHosts,$intDCHost);
|
||||
if ($intDCHost != 0) {
|
||||
foreach($arrDataHosts AS $elem) {
|
||||
if ($elem['exclude'] == 1) {
|
||||
$strField .= "H:!".$elem['host_name'].",";
|
||||
} else {
|
||||
$strField .= "H:".$elem['host_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrData['dependent_hostgroup_name'] != 0) {
|
||||
$strSQLHost = "SELECT `hostgroup_name`, `exclude` FROM `tbl_hostgroup` LEFT JOIN `tbl_lnkHostdependencyToHostgroup_DH` ON `id`=`idSlave`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `hostgroup_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHostgroups,$intDCHostgroup);
|
||||
if ($intDCHostgroup != 0) {
|
||||
foreach($arrDataHostgroups AS $elem) {
|
||||
if ($elem['exclude'] == 1) {
|
||||
$strField .= "HG:!".$elem['hostgroup_name'].",";
|
||||
} else {
|
||||
$strField .= "HG:".$elem['hostgroup_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hostescalation table
|
||||
if ($strTableName == "tbl_hostescalation") {
|
||||
if ($arrData['host_name'] != 0) {
|
||||
$strSQLHost = "SELECT `host_name` FROM `tbl_host` LEFT JOIN `tbl_lnkHostescalationToHost` ON `id`=`idSlave`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `host_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHosts,$intDCHost);
|
||||
if ($intDCHost != 0) {
|
||||
foreach($arrDataHosts AS $elem) {
|
||||
$strField .= "H:".$elem['host_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($arrData['hostgroup_name'] != 0) {
|
||||
$strSQLHost = "SELECT `hostgroup_name` FROM `tbl_hostgroup` LEFT JOIN `tbl_lnkHostescalationToHostgroup` ON `id`=`idSlave`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `hostgroup_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHostgroups,$intDCHostgroup);
|
||||
if ($intDCHostgroup != 0) {
|
||||
foreach($arrDataHostgroups AS $elem) {
|
||||
$strField .= "HG:".$elem['hostgroup_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Servicedependency table
|
||||
if ($strTableName == "tbl_servicedependency") {
|
||||
if ($arrData['dependent_service_description'] == 2) {
|
||||
$strField .= "*";
|
||||
} else if ($arrData['dependent_service_description'] != 0) {
|
||||
$strSQLService = "SELECT `strSlave` FROM `tbl_lnkServicedependencyToService_DS` WHERE `idMaster`=".$arrData['id']." ORDER BY `strSlave`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService);
|
||||
if ($intDCService != 0) {
|
||||
foreach($arrDataService AS $elem) {
|
||||
$strField .= $elem['strSlave'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strField == "") {
|
||||
$strSQLService = "SELECT `servicegroup_name` FROM `tbl_servicegroup`
|
||||
LEFT JOIN `tbl_lnkServicedependencyToServicegroup_DS` ON `idSlave`=`id`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `servicegroup_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService);
|
||||
if ($intDCService != 0) {
|
||||
foreach($arrDataService AS $elem) {
|
||||
$strField .= $elem['servicegroup_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Serviceescalation table
|
||||
if ($strTableName == "tbl_serviceescalation") {
|
||||
if ($arrData['service_description'] == 2) {
|
||||
$strField .= "*";
|
||||
} else if ($arrData['service_description'] != 0) {
|
||||
$strSQLService = "SELECT `strSlave` FROM `tbl_lnkServiceescalationToService` WHERE `idMaster`=".$arrData['id'];
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataServices,$intDCServices);
|
||||
if ($intDCServices != 0) {
|
||||
foreach($arrDataServices AS $elem) {
|
||||
$strField .= $elem['strSlave'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($strField == "") {
|
||||
$strSQLService = "SELECT `servicegroup_name` FROM `tbl_servicegroup`
|
||||
LEFT JOIN `tbl_lnkServiceescalationToServicegroup` ON `idSlave`=`id`
|
||||
WHERE `idMaster`=".$arrData['id']." ORDER BY `servicegroup_name`";
|
||||
$booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService);
|
||||
if ($intDCService != 0) {
|
||||
foreach($arrDataService AS $elem) {
|
||||
$strField .= $elem['servicegroup_name'].",";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Some string manipulations - remove comma on line end
|
||||
if (substr($strField,-1) == ',') $strField = substr($strField,0,-1);
|
||||
return($strField);
|
||||
}
|
||||
}
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,440 +0,0 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Common utilities
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : Common scripts
|
||||
// Component : MySQLi data processing class
|
||||
// Date : $LastChangedDate: 2017-06-22 13:39:15 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 7 $
|
||||
// SVN-ID : $Id: mysqli_class.php 7 2017-06-22 11:39:15Z martin $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Class: Common database functions for MySQL (mysqli database module)
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Includes any functions to communicate with an MySQL database server
|
||||
//
|
||||
// Name: mysqlidb
|
||||
//
|
||||
// Class variables: $arrParams Array including the server settings
|
||||
// ---------------- $strErrorMessage Database error string
|
||||
// $error Boolean - Error true/false
|
||||
// $strDBId Database connection id
|
||||
// $intLastId ID of last dataset
|
||||
// $intAffectedRows Counter variable of all affected data dows
|
||||
// $booSSLuse Use SSL connection
|
||||
// (INSERT/DELETE/UPDATE)
|
||||
//
|
||||
// Parameters: $arrParams['server'] -> DB server name
|
||||
// ----------- $arrParams['port'] -> DB server port
|
||||
// $arrParams['user'] -> DB server username
|
||||
// $arrParams['password'] -> DB server password
|
||||
// $arrParams['database'] -> DB server database name
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
class mysqlidb {
|
||||
// Define class variables
|
||||
var $error = false; // Will be filled in functions
|
||||
var $strDBId = ""; // Will be filled in functions
|
||||
var $intLastId = 0; // Will be filled in functions
|
||||
var $intAffectedRows = 0; // Will be filled in functions
|
||||
var $strErrorMessage = ""; // Will be filled in functions
|
||||
var $booSSLuse = false; // Defines if SSL is used or not
|
||||
var $arrParams = ""; // Must be filled in while initialization
|
||||
var $arrSQLdef = ""; // Must be filled in while initialization
|
||||
var $strSQLQuote1 = "`"; // Quote char for table or row names
|
||||
var $strSQLQuote2 = "'"; // Quote char for table or row names
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Class constructor
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Activities during initialisation
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function __construct() {
|
||||
$this->arrParams['server'] = "";
|
||||
$this->arrParams['port'] = 0;
|
||||
$this->arrParams['username'] = "";
|
||||
$this->arrParams['password'] = "";
|
||||
$this->arrParams['database'] = "";
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Connect to database
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Opens a connection to the database server and select a database
|
||||
//
|
||||
//
|
||||
// Return value: true successful
|
||||
// false error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function getdatabase() {
|
||||
$this->dbconnect();
|
||||
if ($this->error == true) {
|
||||
return false;
|
||||
}
|
||||
$this->dbselect();
|
||||
if ($this->error == true) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Get a single dataset field value
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Sends an SQL statement to the server and returns the result of the first data field
|
||||
//
|
||||
// Parameters: $strSQL SQL Statement
|
||||
//
|
||||
// Return value: <data> = successful
|
||||
// <empty> = error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function getFieldData($strSQL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Send the SQL statement to the server
|
||||
$resQuery = mysqli_query($this->strDBId,$strSQL);
|
||||
// Error processing
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) != 0) && (mysqli_error($this->strDBId) == "")) {
|
||||
// Return the field value from position 0/0
|
||||
$arrDataset = mysqli_fetch_array($resQuery,MYSQLI_NUM);
|
||||
return $arrDataset[0];
|
||||
} else if (mysqli_error($this->strDBId) != "") {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return("");
|
||||
}
|
||||
return("");
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Get a single dataset
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Sends an SQL statement to the server and returns the result of the first data set
|
||||
//
|
||||
// Parameters: $strSQL SQL Statement
|
||||
// $arrDataset Return value including the data set
|
||||
//
|
||||
// Return value: true = successful
|
||||
// false = error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function getSingleDataset($strSQL,&$arrDataset) {
|
||||
$arrDataset = "";
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Send the SQL statement to the server
|
||||
$resQuery = mysqli_query($this->strDBId,$strSQL);
|
||||
// Error processing
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) != 0) && (mysqli_error($this->strDBId) == "")) {
|
||||
// Put the values into the array
|
||||
$arrDataset = mysqli_fetch_array($resQuery,MYSQLI_ASSOC);
|
||||
return true;
|
||||
} else if (mysqli_error($this->strDBId) != "") {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Get a full data part
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Sends an SQL statement to the server and returns the result inside a data array
|
||||
//
|
||||
// Parameters: $strSQL SQL Statement
|
||||
// $arrDataset Return value including the data records
|
||||
// $intDataCount Return value including the number of the records
|
||||
//
|
||||
// Return value: true = successful
|
||||
// false = error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function getDataArray($strSQL,&$arrDataset,&$intDataCount) {
|
||||
$arrDataset = "";
|
||||
$intDataCount = 0;
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Send the SQL statement to the server
|
||||
$resQuery = mysqli_query($this->strDBId,$strSQL);
|
||||
// Error processing
|
||||
if ($resQuery && (mysqli_num_rows($resQuery) != 0) && (mysqli_error($this->strDBId) == "")) {
|
||||
$intDataCount = mysqli_num_rows($resQuery);
|
||||
$i = 0;
|
||||
// Put the values into the array
|
||||
while ($arrDataTemp = mysqli_fetch_array($resQuery,MYSQLI_ASSOC)) {
|
||||
foreach ($arrDataTemp AS $key => $value) {
|
||||
$arrDataset[$i][$key] = $value;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
return true;
|
||||
} else if (mysqli_error($this->strDBId) != "") {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Insert/update/delete data
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Insert/update or delete data
|
||||
//
|
||||
// Parameters: $strSQL SQL Statement
|
||||
// $this->intLastId Dataset insert ID
|
||||
// $this->intAffectedRows The number of the affected records
|
||||
//
|
||||
// Return value: true = successful
|
||||
// false = error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function insertData($strSQL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Send the SQL statement to the server
|
||||
$resQuery = mysqli_query($this->strDBId,$strSQL);
|
||||
// Error processing
|
||||
if (mysqli_error($this->strDBId) == "") {
|
||||
$this->intLastId = mysqli_insert_id($this->strDBId);
|
||||
$this->intAffectedRows = mysqli_affected_rows($this->strDBId);
|
||||
return true;
|
||||
} else {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Counts data rows
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Counts the number of records
|
||||
//
|
||||
// Parameters: $strSQL SQL Statement
|
||||
//
|
||||
// Return value: <number> = successful
|
||||
// 0 = no datasets or error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function countRows($strSQL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Send the SQL statement to the server
|
||||
$resQuery = mysqli_query($this->strDBId,$strSQL);
|
||||
// Error processing
|
||||
if ($resQuery && (mysqli_error($this->strDBId) == "")) {
|
||||
return mysqli_num_rows($resQuery);
|
||||
} else {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId);
|
||||
$this->error = true;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Use mysqli_real_escape_string
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Returns a safe insert string for database manipulations
|
||||
//
|
||||
// Value: $strInput Input String
|
||||
//
|
||||
// Return value: $strOutput Output String
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function real_escape($strInput) {
|
||||
return mysqli_real_escape_string($this->strDBId,$strInput);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Assistant functions
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Initialize a mysql database connection
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Return value: true
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function dbinit() {
|
||||
$this->strDBId = mysqli_init();
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Connect to database server
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameters: $dbserver Server name
|
||||
// $dbuser Database user
|
||||
// $dbpasswd Database password
|
||||
// $dbname Database name
|
||||
// $dbport TCP port
|
||||
//
|
||||
// Return value: true successful
|
||||
// false error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function dbconnect($dbserver=NULL,$dbport=NULL,$dbuser=NULL,$dbpasswd=NULL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Get parameters
|
||||
if ($dbserver == NULL) $dbserver = $this->arrParams['server'];
|
||||
if ($dbport == NULL) $dbport = $this->arrParams['port'];
|
||||
if ($dbuser == NULL) $dbuser = $this->arrParams['username'];
|
||||
if ($dbpasswd == NULL) $dbpasswd = $this->arrParams['password'];
|
||||
// Not all parameters available
|
||||
if (($dbserver == "") || ($dbuser == "") || ($dbpasswd == "")) {
|
||||
$this->strErrorMessage .= gettext("Missing server connection parameter!")."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
$this->dbinit();
|
||||
if ($this->booSSLuse == true) {
|
||||
// TO BE DEFINED
|
||||
}
|
||||
$intErrorReporting = error_reporting();
|
||||
error_reporting(0);
|
||||
if ($dbport == 0) {
|
||||
$booReturn = mysqli_real_connect($this->strDBId,$dbserver,$dbuser,$dbpasswd);
|
||||
} else {
|
||||
$booReturn = mysqli_real_connect($this->strDBId,$dbserver,$dbuser,$dbpasswd,NULL,$dbport);
|
||||
}
|
||||
$arrError = error_get_last();
|
||||
error_reporting($intErrorReporting);
|
||||
// Connection fails
|
||||
if($booReturn == false) {
|
||||
$this->strErrorMessage = "[".$dbserver."] ".gettext("Connection to the database server has failed by reason:")." ::";
|
||||
if (mysqli_connect_error($this->strDBId) != "") $this->strErrorMessage .= mysqli_connect_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: select database
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameters: $database Database name
|
||||
//
|
||||
// Return value: true = successful
|
||||
// false = error
|
||||
// Status message is stored in class variable $this->strErrorMessage
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function dbselect($database=NULL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Get parameters
|
||||
if ($database == NULL) $database = $this->arrParams['database'];
|
||||
// Not all parameters available
|
||||
if ($database == "") {
|
||||
$this->strErrorMessage .= gettext("Missing database connection parameter!")."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
$bolConnect = mysqli_select_db($this->strDBId,$database);
|
||||
// Session cannot be etablished
|
||||
if(!$bolConnect) {
|
||||
$this->strErrorMessage .= "[".$database."] ".gettext("Connection to the database has failed by reason:")." ::";
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
$resQuery = mysqli_query($this->strDBId,"set names 'utf8'");
|
||||
if (mysqli_error($this->strDBId) != "") {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
$resQuery = mysqli_query($this->strDBId,"set session sql_mode = 'NO_ENGINE_SUBSTITUTION'");
|
||||
if (mysqli_error($this->strDBId) != "") {
|
||||
$this->strErrorMessage .= mysqli_error($this->strDBId)."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Set SSL parameters
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Parameters: $sslkey SSL key
|
||||
// $sslcert SSL certificate
|
||||
// $sslca SSL CA file (optional)
|
||||
// $sslpath SSL certificate path (optional)
|
||||
// $sslcypher SSL cypher (optional)
|
||||
//
|
||||
// Return value: true successful
|
||||
// The mysqli_ssl_set function always returns TRUE!
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function dbsetssl($sslkey,$sslcert,$sslca=NULL,$sslpath=NULL,$sslcypher=NULL) {
|
||||
// Reset error variables
|
||||
$this->strErrorMessage = "";
|
||||
$this->error = false;
|
||||
// Values are missing
|
||||
if (($sslkey == "") || ($sslcert == "")) {
|
||||
$this->strErrorMessage = gettext("Missing MySQL SSL parameter!")."::";
|
||||
$this->error = true;
|
||||
return false;
|
||||
}
|
||||
mysqli_ssl_set($this->strDBId,$sslkey,$sslcert,$sslca,$sslpath,$sslcypher);
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Function: Close database server connectuon
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Value: none
|
||||
//
|
||||
// Return value: true if successful, false if failed
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
function dbdisconnect() {
|
||||
mysqli_close($this->strDBId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,112 +1,106 @@
|
||||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// NagiosQL
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (c) 2005-2017 by Martin Willisegger
|
||||
//
|
||||
// Project : NagiosQL
|
||||
// Component : Preprocessing script for scripting files
|
||||
// Website : http://www.nagiosql.org
|
||||
// Date : $LastChangedDate: 2017-06-22 09:48:25 +0200 (Thu, 22 Jun 2017) $
|
||||
// Author : $LastChangedBy: martin $
|
||||
// Version : 3.3.0
|
||||
// Revision : $LastChangedRevision: 4 $
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
error_reporting(E_ALL);
|
||||
//error_reporting(E_ERROR);
|
||||
//
|
||||
// Security Protection
|
||||
// ===================
|
||||
/* ----------------------------------------------------------------------------
|
||||
NagiosQL
|
||||
-------------------------------------------------------------------------------
|
||||
(c) 2005-2022 by Martin Willisegger
|
||||
|
||||
Project : NagiosQL
|
||||
Component : Preprocessing script for scripting files
|
||||
Website : https://sourceforge.net/projects/nagiosql/
|
||||
Version : 3.5.0
|
||||
GIT Repo : https://gitlab.com/wizonet/NagiosQL
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
Security Protection
|
||||
*/
|
||||
if (isset($_GET['SETS']) || isset($_POST['SETS'])) {
|
||||
$SETS = "";
|
||||
$SETS = '';
|
||||
}
|
||||
//
|
||||
// Timezone settings (>=PHP5.1)
|
||||
// ============================
|
||||
if(function_exists("date_default_timezone_set") and function_exists("date_default_timezone_get")) {
|
||||
@date_default_timezone_set(@date_default_timezone_get());
|
||||
|
||||
/*
|
||||
Timezone settings
|
||||
*/
|
||||
if (function_exists('date_default_timezone_set') and function_exists('date_default_timezone_get')) {
|
||||
@date_default_timezone_set(@date_default_timezone_get());
|
||||
}
|
||||
//
|
||||
// Define common variables
|
||||
// =======================
|
||||
$chkDomainId = 0;
|
||||
$intError = 0;
|
||||
//
|
||||
// Define path constants
|
||||
//
|
||||
define('BASE_PATH', str_replace("functions","",dirname(__FILE__)));
|
||||
//
|
||||
// Read settings file
|
||||
// ==================
|
||||
$preBasePath = str_replace("functions","",dirname(__FILE__));
|
||||
$preIniFile = $preBasePath.'config/settings.php';
|
||||
//
|
||||
// Read file settings
|
||||
// ==================
|
||||
$SETS = parse_ini_file($preIniFile,true);
|
||||
//
|
||||
// Include external function/class files - part 1
|
||||
// ==============================================
|
||||
include("mysqli_class.php");
|
||||
//
|
||||
// Initialize classes - part 1
|
||||
// ===========================
|
||||
$myDBClass = new mysqlidb;
|
||||
|
||||
/*
|
||||
Define common variables
|
||||
*/
|
||||
$chkDomainId = 0;
|
||||
$intError = 0;
|
||||
|
||||
/*
|
||||
Read settings file
|
||||
*/
|
||||
$preBasePath = str_replace('functions', '', __DIR__);
|
||||
$preIniFile = $preBasePath . 'config/settings.php';
|
||||
|
||||
/*
|
||||
Read file settings
|
||||
*/
|
||||
$SETS = parse_ini_file($preIniFile, true);
|
||||
|
||||
/*
|
||||
Include external function/class files - part 1
|
||||
*/
|
||||
require_once $preBasePath . 'libraries/pear/HTML/Template/IT.php';
|
||||
require $preBasePath . 'functions/Autoloader.php';
|
||||
functions\Autoloader::register($preBasePath);
|
||||
|
||||
/*
|
||||
Initialize classes - part 1
|
||||
*/
|
||||
$myDBClass = new functions\MysqliDbClass();
|
||||
$myDBClass->arrParams = $SETS['db'];
|
||||
$myDBClass->getDatabase();
|
||||
if ($myDBClass->error == true) {
|
||||
$strDBMessage = $myDBClass->strErrorMessage;
|
||||
$booError = $myDBClass->error;
|
||||
$myDBClass->hasDBConnection();
|
||||
if ($myDBClass->error === true) {
|
||||
$strDBMessage = $myDBClass->strErrorMessage;
|
||||
$booError = $myDBClass->error;
|
||||
}
|
||||
//
|
||||
// Get additional configuration from the table tbl_settings
|
||||
// ========================================================
|
||||
if ($intError == 0) {
|
||||
$strSQL = "SELECT `category`,`name`,`value` FROM `tbl_settings`";
|
||||
$booReturn = $myDBClass->getDataArray($strSQL,$arrDataLines,$intDataCount);
|
||||
if ($booReturn == false) {
|
||||
echo str_replace("::","\n","Error while selecting data from database: ".$myDBClass->strErrorMessage);
|
||||
$intError = 1;
|
||||
} else if ($intDataCount != 0) {
|
||||
for ($i=0;$i<$intDataCount;$i++) {
|
||||
$SETS[$arrDataLines[$i]['category']][$arrDataLines[$i]['name']] = $arrDataLines[$i]['value'];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Get additional configuration from the table tbl_settings
|
||||
*/
|
||||
if ($intError === 0) {
|
||||
$strSQL = 'SELECT `category`,`name`,`value` FROM `tbl_settings`';
|
||||
$booReturn = $myDBClass->hasDataArray($strSQL, $arrDataLines, $intDataCount);
|
||||
if ($booReturn === false) {
|
||||
echo str_replace('::', "\n", 'Error while selecting data from database: ' . $myDBClass->strErrorMessage);
|
||||
$intError = 1;
|
||||
} elseif ($intDataCount !== 0) {
|
||||
for ($i = 0; $i < $intDataCount; $i++) {
|
||||
$SETS[$arrDataLines[$i]['category']][$arrDataLines[$i]['name']] = $arrDataLines[$i]['value'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
echo "Could not load configuration settings from database - abort\n";
|
||||
exit;
|
||||
echo "Could not load configuration settings from database - abort\n";
|
||||
exit;
|
||||
}
|
||||
//
|
||||
// Include external function/class files
|
||||
// =====================================
|
||||
include("translator.php");
|
||||
include("data_class.php");
|
||||
include("config_class.php");
|
||||
include("import_class.php");
|
||||
require_once($preBasePath.'libraries/pear/HTML/Template/IT.php');
|
||||
//
|
||||
// Initialize classes
|
||||
// ==================
|
||||
$myDataClass = new nagdata;
|
||||
$myConfigClass = new nagconfig;
|
||||
$myImportClass = new nagimport;
|
||||
//
|
||||
// Propagating the classes themselves
|
||||
// ==================================
|
||||
$myDataClass->myDBClass =& $myDBClass;
|
||||
$myDataClass->myConfigClass =& $myConfigClass;
|
||||
$myConfigClass->myDBClass =& $myDBClass;
|
||||
$myConfigClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myDBClass =& $myDBClass;
|
||||
$myImportClass->myConfigClass =& $myConfigClass;
|
||||
//
|
||||
// Set class variables
|
||||
// ===================
|
||||
$myDataClass->arrSettings = $SETS;
|
||||
$myConfigClass->arrSettings = $SETS;
|
||||
?>
|
||||
|
||||
/*
|
||||
Include translator strings
|
||||
*/
|
||||
include 'translator.php';
|
||||
|
||||
/*
|
||||
Initialize classes
|
||||
*/
|
||||
$arrSession = array();
|
||||
$arrSession['SETS'] = $SETS;
|
||||
$myDataClass = new functions\NagDataClass($arrSession);
|
||||
$myConfigClass = new functions\NagConfigClass($arrSession);
|
||||
/** @noinspection PhpObjectFieldsAreOnlyWrittenInspection */
|
||||
$myImportClass = new functions\NagImportClass($arrSession);
|
||||
|
||||
/*
|
||||
Propagating the classes themselves
|
||||
*/
|
||||
$myDataClass->myDBClass =& $myDBClass;
|
||||
$myDataClass->myConfigClass =& $myConfigClass;
|
||||
$myConfigClass->myDBClass =& $myDBClass;
|
||||
$myConfigClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myDataClass =& $myDataClass;
|
||||
$myImportClass->myDBClass =& $myDBClass;
|
||||
$myImportClass->myConfigClass =& $myConfigClass;
|
||||
444
functions/tinyMCE/jscripts/tiny_mce/langs/en.js
vendored
444
functions/tinyMCE/jscripts/tiny_mce/langs/en.js
vendored
@@ -1,223 +1,223 @@
|
||||
tinyMCE.addI18n({en:{
|
||||
common:{
|
||||
edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
|
||||
apply:"Apply",
|
||||
insert:"Insert",
|
||||
update:"Update",
|
||||
cancel:"Cancel",
|
||||
close:"Close",
|
||||
browse:"Browse",
|
||||
class_name:"Class",
|
||||
not_set:"-- Not set --",
|
||||
clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
|
||||
clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
|
||||
popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
|
||||
invalid_data:"{#field} is invalid",
|
||||
invalid_data_number:"{#field} must be a number",
|
||||
invalid_data_min:"{#field} must be a number greater than {#min}",
|
||||
invalid_data_size:"{#field} must be a number or percentage",
|
||||
more_colors:"More colors"
|
||||
},
|
||||
colors:{
|
||||
'000000':'Black',
|
||||
'993300':'Burnt orange',
|
||||
'333300':'Dark olive',
|
||||
'003300':'Dark green',
|
||||
'003366':'Dark azure',
|
||||
'000080':'Navy Blue',
|
||||
'333399':'Indigo',
|
||||
'333333':'Very dark gray',
|
||||
'800000':'Maroon',
|
||||
'FF6600':'Orange',
|
||||
'808000':'Olive',
|
||||
'008000':'Green',
|
||||
'008080':'Teal',
|
||||
'0000FF':'Blue',
|
||||
'666699':'Grayish blue',
|
||||
'808080':'Gray',
|
||||
'FF0000':'Red',
|
||||
'FF9900':'Amber',
|
||||
'99CC00':'Yellow green',
|
||||
'339966':'Sea green',
|
||||
'33CCCC':'Turquoise',
|
||||
'3366FF':'Royal blue',
|
||||
'800080':'Purple',
|
||||
'999999':'Medium gray',
|
||||
'FF00FF':'Magenta',
|
||||
'FFCC00':'Gold',
|
||||
'FFFF00':'Yellow',
|
||||
'00FF00':'Lime',
|
||||
'00FFFF':'Aqua',
|
||||
'00CCFF':'Sky blue',
|
||||
'993366':'Brown',
|
||||
'C0C0C0':'Silver',
|
||||
'FF99CC':'Pink',
|
||||
'FFCC99':'Peach',
|
||||
'FFFF99':'Light yellow',
|
||||
'CCFFCC':'Pale green',
|
||||
'CCFFFF':'Pale cyan',
|
||||
'99CCFF':'Light sky blue',
|
||||
'CC99FF':'Plum',
|
||||
'FFFFFF':'White'
|
||||
},
|
||||
contextmenu:{
|
||||
align:"Alignment",
|
||||
left:"Left",
|
||||
center:"Center",
|
||||
right:"Right",
|
||||
full:"Full"
|
||||
},
|
||||
insertdatetime:{
|
||||
date_fmt:"%Y-%m-%d",
|
||||
time_fmt:"%H:%M:%S",
|
||||
insertdate_desc:"Insert date",
|
||||
inserttime_desc:"Insert time",
|
||||
months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
|
||||
months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
|
||||
day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
|
||||
day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
|
||||
},
|
||||
print:{
|
||||
print_desc:"Print"
|
||||
},
|
||||
preview:{
|
||||
preview_desc:"Preview"
|
||||
},
|
||||
directionality:{
|
||||
ltr_desc:"Direction left to right",
|
||||
rtl_desc:"Direction right to left"
|
||||
},
|
||||
layer:{
|
||||
insertlayer_desc:"Insert new layer",
|
||||
forward_desc:"Move forward",
|
||||
backward_desc:"Move backward",
|
||||
absolute_desc:"Toggle absolute positioning",
|
||||
content:"New layer..."
|
||||
},
|
||||
save:{
|
||||
save_desc:"Save",
|
||||
cancel_desc:"Cancel all changes"
|
||||
},
|
||||
nonbreaking:{
|
||||
nonbreaking_desc:"Insert non-breaking space character"
|
||||
},
|
||||
iespell:{
|
||||
iespell_desc:"Run spell checking",
|
||||
download:"ieSpell not detected. Do you want to install it now?"
|
||||
},
|
||||
advhr:{
|
||||
advhr_desc:"Horizontal rule"
|
||||
},
|
||||
emotions:{
|
||||
emotions_desc:"Emotions"
|
||||
},
|
||||
searchreplace:{
|
||||
search_desc:"Find",
|
||||
replace_desc:"Find/Replace"
|
||||
},
|
||||
advimage:{
|
||||
image_desc:"Insert/edit image"
|
||||
},
|
||||
advlink:{
|
||||
link_desc:"Insert/edit link"
|
||||
},
|
||||
xhtmlxtras:{
|
||||
cite_desc:"Citation",
|
||||
abbr_desc:"Abbreviation",
|
||||
acronym_desc:"Acronym",
|
||||
del_desc:"Deletion",
|
||||
ins_desc:"Insertion",
|
||||
attribs_desc:"Insert/Edit Attributes"
|
||||
},
|
||||
style:{
|
||||
desc:"Edit CSS Style"
|
||||
},
|
||||
paste:{
|
||||
paste_text_desc:"Paste as Plain Text",
|
||||
paste_word_desc:"Paste from Word",
|
||||
selectall_desc:"Select All",
|
||||
plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",
|
||||
plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode."
|
||||
},
|
||||
paste_dlg:{
|
||||
text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
|
||||
text_linebreaks:"Keep linebreaks",
|
||||
word_title:"Use CTRL+V on your keyboard to paste the text into the window."
|
||||
},
|
||||
table:{
|
||||
desc:"Inserts a new table",
|
||||
row_before_desc:"Insert row before",
|
||||
row_after_desc:"Insert row after",
|
||||
delete_row_desc:"Delete row",
|
||||
col_before_desc:"Insert column before",
|
||||
col_after_desc:"Insert column after",
|
||||
delete_col_desc:"Remove column",
|
||||
split_cells_desc:"Split merged table cells",
|
||||
merge_cells_desc:"Merge table cells",
|
||||
row_desc:"Table row properties",
|
||||
cell_desc:"Table cell properties",
|
||||
props_desc:"Table properties",
|
||||
paste_row_before_desc:"Paste table row before",
|
||||
paste_row_after_desc:"Paste table row after",
|
||||
cut_row_desc:"Cut table row",
|
||||
copy_row_desc:"Copy table row",
|
||||
del:"Delete table",
|
||||
row:"Row",
|
||||
col:"Column",
|
||||
cell:"Cell"
|
||||
},
|
||||
autosave:{
|
||||
unload_msg:"The changes you made will be lost if you navigate away from this page.",
|
||||
restore_content:"Restore auto-saved content.",
|
||||
warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?."
|
||||
},
|
||||
fullscreen:{
|
||||
desc:"Toggle fullscreen mode"
|
||||
},
|
||||
media:{
|
||||
desc:"Insert / edit embedded media",
|
||||
edit:"Edit embedded media"
|
||||
},
|
||||
fullpage:{
|
||||
desc:"Document properties"
|
||||
},
|
||||
template:{
|
||||
desc:"Insert predefined template content"
|
||||
},
|
||||
visualchars:{
|
||||
desc:"Visual control characters on/off."
|
||||
},
|
||||
spellchecker:{
|
||||
desc:"Toggle spellchecker",
|
||||
menu:"Spellchecker settings",
|
||||
ignore_word:"Ignore word",
|
||||
ignore_words:"Ignore all",
|
||||
langs:"Languages",
|
||||
wait:"Please wait...",
|
||||
sug:"Suggestions",
|
||||
no_sug:"No suggestions",
|
||||
no_mpell:"No misspellings found.",
|
||||
learn_word:"Learn word"
|
||||
},
|
||||
pagebreak:{
|
||||
desc:"Insert page break."
|
||||
},
|
||||
advlist:{
|
||||
types:"Types",
|
||||
def:"Default",
|
||||
lower_alpha:"Lower alpha",
|
||||
lower_greek:"Lower greek",
|
||||
lower_roman:"Lower roman",
|
||||
upper_alpha:"Upper alpha",
|
||||
upper_roman:"Upper roman",
|
||||
circle:"Circle",
|
||||
disc:"Disc",
|
||||
square:"Square"
|
||||
},
|
||||
aria:{
|
||||
rich_text_area:"Rich Text Area"
|
||||
},
|
||||
wordcount:{
|
||||
words: 'Words: '
|
||||
}
|
||||
tinyMCE.addI18n({en:{
|
||||
common:{
|
||||
edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
|
||||
apply:"Apply",
|
||||
insert:"Insert",
|
||||
update:"Update",
|
||||
cancel:"Cancel",
|
||||
close:"Close",
|
||||
browse:"Browse",
|
||||
class_name:"Class",
|
||||
not_set:"-- Not set --",
|
||||
clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
|
||||
clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
|
||||
popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
|
||||
invalid_data:"{#field} is invalid",
|
||||
invalid_data_number:"{#field} must be a number",
|
||||
invalid_data_min:"{#field} must be a number greater than {#min}",
|
||||
invalid_data_size:"{#field} must be a number or percentage",
|
||||
more_colors:"More colors"
|
||||
},
|
||||
colors:{
|
||||
'000000':'Black',
|
||||
'993300':'Burnt orange',
|
||||
'333300':'Dark olive',
|
||||
'003300':'Dark green',
|
||||
'003366':'Dark azure',
|
||||
'000080':'Navy Blue',
|
||||
'333399':'Indigo',
|
||||
'333333':'Very dark gray',
|
||||
'800000':'Maroon',
|
||||
'FF6600':'Orange',
|
||||
'808000':'Olive',
|
||||
'008000':'Green',
|
||||
'008080':'Teal',
|
||||
'0000FF':'Blue',
|
||||
'666699':'Grayish blue',
|
||||
'808080':'Gray',
|
||||
'FF0000':'Red',
|
||||
'FF9900':'Amber',
|
||||
'99CC00':'Yellow green',
|
||||
'339966':'Sea green',
|
||||
'33CCCC':'Turquoise',
|
||||
'3366FF':'Royal blue',
|
||||
'800080':'Purple',
|
||||
'999999':'Medium gray',
|
||||
'FF00FF':'Magenta',
|
||||
'FFCC00':'Gold',
|
||||
'FFFF00':'Yellow',
|
||||
'00FF00':'Lime',
|
||||
'00FFFF':'Aqua',
|
||||
'00CCFF':'Sky blue',
|
||||
'993366':'Brown',
|
||||
'C0C0C0':'Silver',
|
||||
'FF99CC':'Pink',
|
||||
'FFCC99':'Peach',
|
||||
'FFFF99':'Light yellow',
|
||||
'CCFFCC':'Pale green',
|
||||
'CCFFFF':'Pale cyan',
|
||||
'99CCFF':'Light sky blue',
|
||||
'CC99FF':'Plum',
|
||||
'FFFFFF':'White'
|
||||
},
|
||||
contextmenu:{
|
||||
align:"Alignment",
|
||||
left:"Left",
|
||||
center:"Center",
|
||||
right:"Right",
|
||||
full:"Full"
|
||||
},
|
||||
insertdatetime:{
|
||||
date_fmt:"%Y-%m-%d",
|
||||
time_fmt:"%H:%M:%S",
|
||||
insertdate_desc:"Insert date",
|
||||
inserttime_desc:"Insert time",
|
||||
months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
|
||||
months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
|
||||
day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
|
||||
day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
|
||||
},
|
||||
print:{
|
||||
print_desc:"Print"
|
||||
},
|
||||
preview:{
|
||||
preview_desc:"Preview"
|
||||
},
|
||||
directionality:{
|
||||
ltr_desc:"Direction left to right",
|
||||
rtl_desc:"Direction right to left"
|
||||
},
|
||||
layer:{
|
||||
insertlayer_desc:"Insert new layer",
|
||||
forward_desc:"Move forward",
|
||||
backward_desc:"Move backward",
|
||||
absolute_desc:"Toggle absolute positioning",
|
||||
content:"New layer..."
|
||||
},
|
||||
save:{
|
||||
save_desc:"Save",
|
||||
cancel_desc:"Cancel all changes"
|
||||
},
|
||||
nonbreaking:{
|
||||
nonbreaking_desc:"Insert non-breaking space character"
|
||||
},
|
||||
iespell:{
|
||||
iespell_desc:"Run spell checking",
|
||||
download:"ieSpell not detected. Do you want to install it now?"
|
||||
},
|
||||
advhr:{
|
||||
advhr_desc:"Horizontal rule"
|
||||
},
|
||||
emotions:{
|
||||
emotions_desc:"Emotions"
|
||||
},
|
||||
searchreplace:{
|
||||
search_desc:"Find",
|
||||
replace_desc:"Find/Replace"
|
||||
},
|
||||
advimage:{
|
||||
image_desc:"Insert/edit image"
|
||||
},
|
||||
advlink:{
|
||||
link_desc:"Insert/edit link"
|
||||
},
|
||||
xhtmlxtras:{
|
||||
cite_desc:"Citation",
|
||||
abbr_desc:"Abbreviation",
|
||||
acronym_desc:"Acronym",
|
||||
del_desc:"Deletion",
|
||||
ins_desc:"Insertion",
|
||||
attribs_desc:"Insert/Edit Attributes"
|
||||
},
|
||||
style:{
|
||||
desc:"Edit CSS Style"
|
||||
},
|
||||
paste:{
|
||||
paste_text_desc:"Paste as Plain Text",
|
||||
paste_word_desc:"Paste from Word",
|
||||
selectall_desc:"Select All",
|
||||
plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",
|
||||
plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode."
|
||||
},
|
||||
paste_dlg:{
|
||||
text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
|
||||
text_linebreaks:"Keep linebreaks",
|
||||
word_title:"Use CTRL+V on your keyboard to paste the text into the window."
|
||||
},
|
||||
table:{
|
||||
desc:"Inserts a new table",
|
||||
row_before_desc:"Insert row before",
|
||||
row_after_desc:"Insert row after",
|
||||
delete_row_desc:"Delete row",
|
||||
col_before_desc:"Insert column before",
|
||||
col_after_desc:"Insert column after",
|
||||
delete_col_desc:"Remove column",
|
||||
split_cells_desc:"Split merged table cells",
|
||||
merge_cells_desc:"Merge table cells",
|
||||
row_desc:"Table row properties",
|
||||
cell_desc:"Table cell properties",
|
||||
props_desc:"Table properties",
|
||||
paste_row_before_desc:"Paste table row before",
|
||||
paste_row_after_desc:"Paste table row after",
|
||||
cut_row_desc:"Cut table row",
|
||||
copy_row_desc:"Copy table row",
|
||||
del:"Delete table",
|
||||
row:"Row",
|
||||
col:"Column",
|
||||
cell:"Cell"
|
||||
},
|
||||
autosave:{
|
||||
unload_msg:"The changes you made will be lost if you navigate away from this page.",
|
||||
restore_content:"Restore auto-saved content.",
|
||||
warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?."
|
||||
},
|
||||
fullscreen:{
|
||||
desc:"Toggle fullscreen mode"
|
||||
},
|
||||
media:{
|
||||
desc:"Insert / edit embedded media",
|
||||
edit:"Edit embedded media"
|
||||
},
|
||||
fullpage:{
|
||||
desc:"Document properties"
|
||||
},
|
||||
template:{
|
||||
desc:"Insert predefined template content"
|
||||
},
|
||||
visualchars:{
|
||||
desc:"Visual control characters on/off."
|
||||
},
|
||||
spellchecker:{
|
||||
desc:"Toggle spellchecker",
|
||||
menu:"Spellchecker settings",
|
||||
ignore_word:"Ignore word",
|
||||
ignore_words:"Ignore all",
|
||||
langs:"Languages",
|
||||
wait:"Please wait...",
|
||||
sug:"Suggestions",
|
||||
no_sug:"No suggestions",
|
||||
no_mpell:"No misspellings found.",
|
||||
learn_word:"Learn word"
|
||||
},
|
||||
pagebreak:{
|
||||
desc:"Insert page break."
|
||||
},
|
||||
advlist:{
|
||||
types:"Types",
|
||||
def:"Default",
|
||||
lower_alpha:"Lower alpha",
|
||||
lower_greek:"Lower greek",
|
||||
lower_roman:"Lower roman",
|
||||
upper_alpha:"Upper alpha",
|
||||
upper_roman:"Upper roman",
|
||||
circle:"Circle",
|
||||
disc:"Disc",
|
||||
square:"Square"
|
||||
},
|
||||
aria:{
|
||||
rich_text_area:"Rich Text Area"
|
||||
},
|
||||
wordcount:{
|
||||
words: 'Words: '
|
||||
}
|
||||
}});
|
||||
File diff suppressed because it is too large
Load Diff
1
functions/tinyMCE/jscripts/tiny_mce/plugins/safari/blank.htm
vendored
Normal file
1
functions/tinyMCE/jscripts/tiny_mce/plugins/safari/blank.htm
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<!-- WebKit -->
|
||||
1
functions/tinyMCE/jscripts/tiny_mce/plugins/safari/editor_plugin.js
vendored
Normal file
1
functions/tinyMCE/jscripts/tiny_mce/plugins/safari/editor_plugin.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
.panel_wrapper {height:85px;}
|
||||
.panel_wrapper div.current {height:85px;}
|
||||
|
||||
/* IE */
|
||||
* html .panel_wrapper {height:100px;}
|
||||
* html .panel_wrapper div.current {height:100px;}
|
||||
.panel_wrapper {height:85px;}
|
||||
.panel_wrapper div.current {height:85px;}
|
||||
|
||||
/* IE */
|
||||
* html .panel_wrapper {height:100px;}
|
||||
* html .panel_wrapper div.current {height:100px;}
|
||||
|
||||
@@ -1,142 +1,142 @@
|
||||
tinyMCEPopup.requireLangPack();
|
||||
|
||||
var SearchReplaceDialog = {
|
||||
init : function(ed) {
|
||||
var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
|
||||
|
||||
t.switchMode(m);
|
||||
|
||||
f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
|
||||
|
||||
// Focus input field
|
||||
f[m + '_panel_searchstring'].focus();
|
||||
|
||||
mcTabs.onChange.add(function(tab_id, panel_id) {
|
||||
t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
|
||||
});
|
||||
},
|
||||
|
||||
switchMode : function(m) {
|
||||
var f, lm = this.lastMode;
|
||||
|
||||
if (lm != m) {
|
||||
f = document.forms[0];
|
||||
|
||||
if (lm) {
|
||||
f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
|
||||
f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
|
||||
f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
|
||||
f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
|
||||
}
|
||||
|
||||
mcTabs.displayTab(m + '_tab', m + '_panel');
|
||||
document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
|
||||
document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
|
||||
this.lastMode = m;
|
||||
}
|
||||
},
|
||||
|
||||
searchNext : function(a) {
|
||||
var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
|
||||
|
||||
// Get input
|
||||
f = document.forms[0];
|
||||
s = f[m + '_panel_searchstring'].value;
|
||||
b = f[m + '_panel_backwardsu'].checked;
|
||||
ca = f[m + '_panel_casesensitivebox'].checked;
|
||||
rs = f['replace_panel_replacestring'].value;
|
||||
|
||||
if (tinymce.isIE) {
|
||||
r = ed.getDoc().selection.createRange();
|
||||
}
|
||||
|
||||
if (s == '')
|
||||
return;
|
||||
|
||||
function fix() {
|
||||
// Correct Firefox graphics glitches
|
||||
// TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
|
||||
r = se.getRng().cloneRange();
|
||||
ed.getDoc().execCommand('SelectAll', false, null);
|
||||
se.setRng(r);
|
||||
};
|
||||
|
||||
function replace() {
|
||||
ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
|
||||
};
|
||||
|
||||
// IE flags
|
||||
if (ca)
|
||||
fl = fl | 4;
|
||||
|
||||
switch (a) {
|
||||
case 'all':
|
||||
// Move caret to beginning of text
|
||||
ed.execCommand('SelectAll');
|
||||
ed.selection.collapse(true);
|
||||
|
||||
if (tinymce.isIE) {
|
||||
ed.focus();
|
||||
r = ed.getDoc().selection.createRange();
|
||||
|
||||
while (r.findText(s, b ? -1 : 1, fl)) {
|
||||
r.scrollIntoView();
|
||||
r.select();
|
||||
replace();
|
||||
fo = 1;
|
||||
|
||||
if (b) {
|
||||
r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
|
||||
}
|
||||
}
|
||||
|
||||
tinyMCEPopup.storeSelection();
|
||||
} else {
|
||||
while (w.find(s, ca, b, false, false, false, false)) {
|
||||
replace();
|
||||
fo = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (fo)
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
|
||||
else
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
|
||||
return;
|
||||
|
||||
case 'current':
|
||||
if (!ed.selection.isCollapsed())
|
||||
replace();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
se.collapse(b);
|
||||
r = se.getRng();
|
||||
|
||||
// Whats the point
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
if (tinymce.isIE) {
|
||||
ed.focus();
|
||||
r = ed.getDoc().selection.createRange();
|
||||
|
||||
if (r.findText(s, b ? -1 : 1, fl)) {
|
||||
r.scrollIntoView();
|
||||
r.select();
|
||||
} else
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
|
||||
tinyMCEPopup.storeSelection();
|
||||
} else {
|
||||
if (!w.find(s, ca, b, false, false, false, false))
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
else
|
||||
fix();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
|
||||
tinyMCEPopup.requireLangPack();
|
||||
|
||||
var SearchReplaceDialog = {
|
||||
init : function(ed) {
|
||||
var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
|
||||
|
||||
t.switchMode(m);
|
||||
|
||||
f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
|
||||
|
||||
// Focus input field
|
||||
f[m + '_panel_searchstring'].focus();
|
||||
|
||||
mcTabs.onChange.add(function(tab_id, panel_id) {
|
||||
t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
|
||||
});
|
||||
},
|
||||
|
||||
switchMode : function(m) {
|
||||
var f, lm = this.lastMode;
|
||||
|
||||
if (lm != m) {
|
||||
f = document.forms[0];
|
||||
|
||||
if (lm) {
|
||||
f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
|
||||
f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
|
||||
f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
|
||||
f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
|
||||
}
|
||||
|
||||
mcTabs.displayTab(m + '_tab', m + '_panel');
|
||||
document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
|
||||
document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
|
||||
this.lastMode = m;
|
||||
}
|
||||
},
|
||||
|
||||
searchNext : function(a) {
|
||||
var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
|
||||
|
||||
// Get input
|
||||
f = document.forms[0];
|
||||
s = f[m + '_panel_searchstring'].value;
|
||||
b = f[m + '_panel_backwardsu'].checked;
|
||||
ca = f[m + '_panel_casesensitivebox'].checked;
|
||||
rs = f['replace_panel_replacestring'].value;
|
||||
|
||||
if (tinymce.isIE) {
|
||||
r = ed.getDoc().selection.createRange();
|
||||
}
|
||||
|
||||
if (s == '')
|
||||
return;
|
||||
|
||||
function fix() {
|
||||
// Correct Firefox graphics glitches
|
||||
// TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
|
||||
r = se.getRng().cloneRange();
|
||||
ed.getDoc().execCommand('SelectAll', false, null);
|
||||
se.setRng(r);
|
||||
};
|
||||
|
||||
function replace() {
|
||||
ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
|
||||
};
|
||||
|
||||
// IE flags
|
||||
if (ca)
|
||||
fl = fl | 4;
|
||||
|
||||
switch (a) {
|
||||
case 'all':
|
||||
// Move caret to beginning of text
|
||||
ed.execCommand('SelectAll');
|
||||
ed.selection.collapse(true);
|
||||
|
||||
if (tinymce.isIE) {
|
||||
ed.focus();
|
||||
r = ed.getDoc().selection.createRange();
|
||||
|
||||
while (r.findText(s, b ? -1 : 1, fl)) {
|
||||
r.scrollIntoView();
|
||||
r.select();
|
||||
replace();
|
||||
fo = 1;
|
||||
|
||||
if (b) {
|
||||
r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
|
||||
}
|
||||
}
|
||||
|
||||
tinyMCEPopup.storeSelection();
|
||||
} else {
|
||||
while (w.find(s, ca, b, false, false, false, false)) {
|
||||
replace();
|
||||
fo = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (fo)
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
|
||||
else
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
|
||||
return;
|
||||
|
||||
case 'current':
|
||||
if (!ed.selection.isCollapsed())
|
||||
replace();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
se.collapse(b);
|
||||
r = se.getRng();
|
||||
|
||||
// Whats the point
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
if (tinymce.isIE) {
|
||||
ed.focus();
|
||||
r = ed.getDoc().selection.createRange();
|
||||
|
||||
if (r.findText(s, b ? -1 : 1, fl)) {
|
||||
r.scrollIntoView();
|
||||
r.select();
|
||||
} else
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
|
||||
tinyMCEPopup.storeSelection();
|
||||
} else {
|
||||
if (!w.find(s, ca, b, false, false, false, false))
|
||||
tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
||||
else
|
||||
fix();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user