2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-09-01 14:55:10 +00:00

Compare commits

...

329 Commits

Author SHA1 Message Date
Steve Beattie
4158b5e095 Fix up the profiles make install target for the tunables/multiarch.d/
change.
2011-03-23 16:07:55 -07:00
Steve Beattie
3706a9c31a Update version for release 2011-03-23 15:01:51 -07:00
Steve Beattie
6bd242fefc Merge from trunk rev 1700: fix typo in multi-arch comment. 2011-03-23 13:45:41 -07:00
Steve Beattie
2ef723e054 Merge from trunk rev 1699: This patch add multiarch support for common
shared library locations, as well as a tunables file and directory
to ease adding additional multiarch paths.

Bug: https://launchpad.net/bugs/736870
2011-03-23 12:27:16 -07:00
Steve Beattie
e268784406 Merge from trunk rev 1698: Update the toplevel README file to discuss
the needed apparmor compatibility patches, mention the profile
consistency check, and remove some variables that no longer need to
be set at build time.
2011-03-18 23:15:43 -07:00
Steve Beattie
be34a7e217 Merge from trunk rev 1697: disable the local include in the extras
firefox profile; the build process does not generate local files
for things in extras, and even if it did, this one is named in a
non-standard fashion (usr.bin.firefox vs. usr.lib.firefox.firefox).
2011-03-18 23:07:19 -07:00
Steve Beattie
d9832491bd Merge from trunk 1696: profiles/Makefile: fix 'check' target to
iterate over the profiles in the extras directory as intended and
fail the make if a parse failure occurs. Also, set the default parser
and logprof to be the intree ones; the system ones can still be used
by setting environment variables.  Finally, have the 'all' target
generate the local files. Also, set the parser base directory to
the apparmor.d directory (rather than as an added include, to avoid
outside contamination from system profiles and includes).

With these changes, make && make check should verify the profile set
is compilable and mostly consistent. (Alas, the current profiles are
not quite consistent).

Nominated-By: Steve Beattie <sbeattie@ubuntu.com>
Acked-By: John Johansen <john.johansen@canonical.com>
2011-03-18 23:05:38 -07:00
Steve Beattie
2a031e3d71 prep for releasing a 2.6.1 release candidate 2011-03-18 15:56:09 -07:00
Steve Beattie
1ed68f67a9 Merge from trunk rev 1695: This fixes the apparmor apache2 module
to link correctly against the built libapparmor, as well as working
around libtool so that the libapparmor library build directory does
not get added as an rpath to the module.

Nominated-By: Steve Beattie <sbeattie@ubuntu.com>
Acked-By: John Johansen <john.johansen@canonical.com>

Bug: https://launchpad.net/bugs/737074
2011-03-17 23:35:45 -07:00
Steve Beattie
ffcb113465 Merge from trunk rev 1694: reduce the number of network protocols
filtered out of the parser at build time.

Bug: https://launchpad.net/bugs/732837
2011-03-17 11:18:43 -07:00
Steve Beattie
613a449db6 Merge from trunk rev 1693: Fix from PLD/Arkadiusz Miskiewicz
<arekm@maven.pl> to the initscript helper functions to correct some
log messages and to unload hats first, before their parents.

Nominated-by: John Johansen <john.johansen@canonical.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-03-17 10:24:25 -07:00
Steve Beattie
a14d06f8f6 Update repo url after branching 2.6 off of trunk, as well as adjust the
version to indicate that the branch is working towards a 2.6.1 release.
2011-03-10 10:08:24 -08:00
John Johansen
0b383ad769 Add tests to ensure parser is checking its own time stamp wrt profile cache
Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: John Johansen <john.johansen@canonical.com>
2011-03-08 14:52:32 -08:00
John Johansen
55bad42088 apparmor_parser doesn't use its time stamp when determining if cache is stale
If the apparmor_parser is updated (outside of current packaging), when
doing profile loads it will use the existing cache of compiled profiles,
instead of forcing a recompile on profiles.

This can cause apparmor to load bad policy if the parser contains a bug
fix for the previous version of the parser.

This can be worked around in packaging by invalidating the cache and
forcing a profile reload when the parser is upgraded.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-03-08 14:49:03 -08:00
John Johansen
258c39d4a5 Profiles that specify a name and attachment specification fail to attach when the
attachment specification doesn't contain globbing.

eg.
   # profile name and attachment the same - attaches as expected
   profile /usr/lib/chromium-browser/chromium-browser

   # profile without attachment specification - does not attach as expected
  profile chromium-browser

  # profile with name and attachment specification where the attachment specification uses globbing - attaches as expected
  profile chromium-browser /usr/lib/chromium-browser/chromium-broswer*

  # profile with name and attachment specification without globbing - FAILS to attach when it should
  profile chromium-browser /usr/lib/chromium-browser/chromium-browser


This occurs because the xmatch_len is not set correctly for the profiles that specify
a name and an attachment specification, where the attachment specification does not
contain globbing characters.

In this situation the correct length for the xmatch_len is the length of the name, as
the shortest possible unambiguous match is the name length.

This patch does not fix a related bug where an attachment specification of ** will not
match (/**) will.
2011-03-08 10:12:09 -08:00
John Johansen
9819bf5df0 Ensure that the buffer read from /proc/sys/kernel/osrelease is null terminated
Signed-off-by: Jamie Strandboge <jamie@canonical.com>
Acked-by: John Johansen <john.johansen@canonical.com>
2011-03-03 15:53:23 -08:00
John Johansen
174c89f772 override AF_MAX for kernels that don't support proper masking
Older versions of the apparmor kernel patches didn't handle receiving
network tables of a larger size than expected.

Allow the parser to detect the kernel version and override the AF_MAX
value for those kernels.

This also replaces the hack using a hardcoded limit of 36 for kernels
missing the features flag.

Signed-off-by: John Johansen <john.johansen@canonical.com>
Acked-by: Kees Cook <kees.cook@canonical.com>
2011-03-03 15:45:10 -08:00
Steve Beattie
52e14b5c93 merged:
Kees Cook 2011-03-02 update AA url in README
2011-03-02 20:12:27 -08:00
Kees Cook
83ef426514 update AA url in README 2011-03-02 12:19:35 -08:00
Steve Beattie
e14c6c39f1 Make tcp test support current network syntax, reanable tcp test 2011-03-02 05:02:45 -08:00
Steve Beattie
d1789d1469 Merge fix from 2.5 branch to leave timestamps alone when exporting
tarball.
2011-02-24 01:32:08 -08:00
Steve Beattie
2fed7cdb61 Adjust the python setup to actually match what swig expects so it will work 2011-02-23 23:34:36 -08:00
Steve Beattie
cd97402779 Update project info in libapparmor's setup.py.in. 2011-02-23 21:10:20 -08:00
Steve Beattie
ca4906c0a3 Fix list email typo 2011-02-23 15:57:36 -08:00
Steve Beattie
a28e39cd06 Prep for 2.6.0 release 2011-02-23 15:55:03 -08:00
Steve Beattie
3768096308 Fix compilation errors that slipped in. Yes, I realize this breaks the
one translation string that was intended for regexp.y, sorry.
2011-02-23 14:40:07 -08:00
Steve Beattie
3dde3d5322 libraries/libapparmor/: more license cleanups, adjust my email address
in the AUTHORS file.
2011-02-23 14:02:45 -08:00
John Johansen
9df0a29e9e Update the copyright message in apparmor_parser --version 2011-02-22 14:58:49 -08:00
Jamie Strandboge
da1e958eb9 parser/rc.apparmor.functions: Don't unload libvirt's dynamic profiles on
reload. For now just special-case libvirt's profiles. If more applications
use dynamic profiles, this should be generalized in some way to flag profiles
as dynamic. (LP: #702774)
2011-02-22 16:24:29 -06:00
John Johansen
52ca88141a Fix previously committed translation patch that didn't correctly add the
new apparmor-parser.pot file
2011-02-22 11:36:14 -08:00
Jamie Strandboge
4cd73b7a93 parser/rc.apparmor.functions: Don't unload libvirt's dynamic profiles on
reload. For now just special-case libvirt's profiles. If more applications
use dynamic profiles, this should be generalized in some way to flag profiles
as dynamic. (LP: #702774)
2011-02-22 11:29:33 -06:00
Jamie Strandboge
fb188972dc parser/rc.apparmor.functions: Don't unload libvirt's dynamic profiles on
reload. For now just special-case libvirt's profiles. If more applications
 use dynamic profiles, this should be generalized in some way to flag profiles
 as dynamic.
2011-02-22 11:14:34 -06:00
John Johansen
6e6b57fbd1 Sync apparmor.vim to the latest version from Christian Boltz
Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:57:37 -08:00
John Johansen
ee0d5b7d50 Update documentation for change_hatv, change_hat_varags and change_onexec
Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:55:53 -08:00
John Johansen
6d62a3634e Update change_hatv and change_hat_vargs prototypes to use long
Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:55:16 -08:00
John Johansen
54fd453d35 Update swig to export all current interface fns
Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:54:35 -08:00
John Johansen
18537e6c38 Rename change_hat.c to kernel_interface.c
Rename change_hat.c to kernel_interface.c to better reflect that it
is providing multiple kernel_interfaces.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:53:39 -08:00
John Johansen
7e78ee6363 Update licencing in libapparmor
Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:51:16 -08:00
John Johansen
d788969c25 Update apparmor_parser translation files
The apparmor_parser translation files where using the old subdomain_parser
domain, but the parser was binding to apparmor-parser.  Create a new
apparmor-parser.pot file and remove the subdomain_parser.pot file.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:48:03 -08:00
John Johansen
db70a37621 Update x conflict failure message
Output a better failure message when a conflict of x permissions cause
policy compilation to fail.  We don't have enough information available
to output which rules during the dfa compilation so just improve the
message to let people know that it means there are conflicting x modifiers
in the rules.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2011-02-22 03:47:03 -08:00
Steve Beattie
b8be715227 Remove deprecated kernel patches, no longer needed as the kernel
portion of apparmor has gone upstream. These patches had already been
dropped from the 2.5.x tree.

The compatibility kernel patches are still provided.
2011-02-18 10:42:08 -08:00
Steve Beattie
24a47e2faa Update version to prepare for impending 2.6.0 release. 2011-02-16 10:38:28 -08:00
Steve Beattie
c56ec9eea7 top-level Makefile:
- adjust snapshot versioning to be less than the upcoming version yet
  still embed the bzr repo version
2011-02-16 09:41:14 -08:00
Steve Beattie
a39d6e36e8 From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor-utils: Inherit flags in sub-profiles when generating profiles
References: bnc#496204

 When creating profiles with cx subprofiles, genprof will set the
 sub-profile in enforce mode. When genprof cycles multiple times, it
 prohibits the sub-profile from working correctly.

 e.g.

 # Last Modified: Mon Jan 24 13:52:26 2011
 #include <tunables/global>

 /home/jeffm/mycat flags=(complain) {
   #include <abstractions/base>
   #include <abstractions/bash>
   #include <abstractions/consoles>

   /bin/bash ix,
   /bin/cat cx,
   /home/jeffm/mycat r,

 profile /bin/cat {
     #include <abstractions/base>

     /bin/cat r,
     /home/jeffm/mycat r,

   }
 }

 This patch allows sub-profiles to inherit the flags from the parent
 profile, which allows it to be created in complain mode (if appropriate).
 The temporary complain flags are cleaned up at genprof completion as
 expected.

 This issue was reported at: https://bugzilla.novell.com/show_bug.cgi?id=496204

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>

Bug: https://launchpad.net/bugs/707092
2011-02-15 16:26:05 -08:00
Steve Beattie
4e01f55a81 From: Jeff Mahoney <jeffm@suse.com>
Subject: Subdomain.pm: Fix for null path
References: bnc#407959

When handling the following log entry, logprof will spew perl errors and
ultimately generate an invalid config: "r,"

Since there is nothing to do with a null path, just skip to the next entry.

type=APPARMOR_DENIED msg=audit(1214497030.421:39): operation="inode_permission" info="Failed name resolution - object not a valid entry" requested_mask="r" denied_mask="r" pid=31367 profile="/usr/sbin/httpd2-worker

Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-15 14:45:04 -08:00
Jamie Strandboge
6c7492af89 dd LibreOffice to ubuntu-browsers.d/productivity abstraction 2011-02-15 15:54:48 -06:00
Steve Beattie
4c8d4490cb From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor: Subdomain.pm: Fix handling of audits of unconfined processes

 The version of AppArmor that was accepted into the mainline kernel
 issues audit events for things like change_hat while unconfined.
 Previous versions just returned -EPERM without the audit.

 This results in logprof and friends spewing uninitialized value errors
 when it hits events like:
 type=AVC msg=audit(1291742101.899:220): apparmor="DENIED" operation="change_hat" info="unconfined" error=-1 pid=28005 comm="cron

 ... which happen any time an unconfined process does something with pam
 when pam_apparmor is installed.

 This patch skips those events.

[Note that the second half of the OpenSUSE patch had already been applied.]

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-15 11:16:28 -08:00
Steve Beattie
5a56604f99 From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor: Fix incorrect /proc/*/sys usage in usr.sbin.ntpd
References: bnc#634801

 /proc/sys/kernel exists, but /proc/*/sys/kernel doesn't. This patch
 fixes the profile.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-15 10:54:30 -08:00
Steve Beattie
f471bc4018 Author: Jamie Strandboge <jamie@canonical.com>
Description: the Ubuntu buildds do not have the AppArmor securityfs mounted, so
the cache tests fail. This patch skips these tests if the introspection
directory is not mounted, but runs them if it is. This should allow testing of
local builds while still allowing builds on the official buildds.

Acked-By: Steve Beattie <sbeattie@ubuntu.com> - both Ubuntu and
OpenSUSE were carrying patches that disabled the caching test,
though OpenSUSE's disabled it completely rather than checking. The
parser builds need to complete even when the kernel it's building on
doesn't support AppArmor or all the extensions that the parser needs
at runtime.
2011-02-15 10:41:29 -08:00
Steve Beattie
596cba37e8 From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor-docs: Fix grammar error in techdoc.pdf
References: bnc#588235

This patch fixes a grammar error in techdoc.pdf.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-09 14:29:05 -08:00
Steve Beattie
3c8538c0c6 From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor-utils: Translation unification
References: bnc#586072

 This patch removes small inconsistencies between identical strings to
 allow for easier translation.

Reported-by: Isis Binder <isis.binder@gmail.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-08 16:29:59 -08:00
Steve Beattie
4df8c4c09c Purge utils/severity.pl due to incorrect license/copyright statement. It
should have been covered under both the Immunix acquisition by Novell
Inc and by the open sourcing of the apparmor tree by Novell Inc.
2011-02-08 15:50:51 -08:00
Steve Beattie
bf9a559dcc From: Jeff Mahoney <jeffm@suse.com>
Subject: [PATCH] apparmor-utils: cleanup after abort in genprof
References: bnc#307067

 The initial generation of the base profile is required to be written out
 to put the process in complain mode for observation. If the user
 decides to abort the profiling session, that base profile is left
 behind.

 This patch removes all profiles created during the run up to an abort.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
2011-02-08 14:50:43 -08:00
Steve Beattie
974d0a33b0 Remove obsolete rc.sd-event-dispatch.suse; was replaced by not nearly
but almost as obsolete aa-eventd and controlled by the main apparmor
initscript.

Acked-by: John Johansen <john.johansen@canonical.com>
2011-02-08 14:21:51 -08:00
Steve Beattie
b5cd93aa2f Purge deprecated gnome apparmor applet, aa-notify is the preferred
notification mechanism nowadays.

Acked-by: John Johansen <john.johansen@canonical.com>
2011-02-08 14:18:39 -08:00
Steve Beattie
ef2fa2c895 From: Jeff Mahoney <jeffm@suse.com>
utils/Immunix/Reports.pm: s/SubDomain/AppArmor/ in header comment
2011-02-08 13:58:52 -08:00
Steve Beattie
4ff5b80ee8 From: Jeff Mahoney <jeffm@suse.com>
Fix compilation in deprecated gnome apparmor applet.
2011-02-08 12:52:26 -08:00
Steve Beattie
fb8d5d05dc From: Jeff Mahoney <jeffm@suse.com>
utils/Makefile: abstract out the perl vendor location for distros to
override if necessary
2011-02-08 10:39:44 -08:00
Steve Beattie
cef7289d75 From: Jeff Mahoney <jeffm@suse.com>
Fix grammar in in utils UI text.
2011-02-08 10:25:05 -08:00
Steve Beattie
94dfe15b28 From: Jeff Mahoney <jeffm@suse.com>
libapparmor: remove LD_RUN_PATH from swig generated makefile as it
results in an rpath binding in the library.
2011-02-08 09:27:32 -08:00
Steve Beattie
788bdcafb9 From: Jeff Mahoney <jeffm@suse.com>
Fix up tomcat build, also use in-tree libapparmor.
2011-02-08 08:22:46 -08:00
Steve Beattie
0cfa2b2cf8 From: Jeff Mahoney <jeffm@suse.com>
Rip out a little bit of crufty old compatibility code with immunix.h and
support directly building with in-tree libapparmor.
2011-02-08 08:18:36 -08:00
Steve Beattie
37ac8ede4f From: Jeff Mahoney <jeffm@suse.com>
Subject: adjust includes for pam_apparmor to point at the intree version
of libapparmor, rather than depend on an external version to be
installed.
2011-02-08 07:21:20 -08:00
Steve Beattie
09edd269aa Makefile: make setup target work independently 2011-02-08 07:05:39 -08:00
Jamie Strandboge
61e7aac455 make aa-disable executable 2011-02-07 21:02:57 -06:00
Jamie Strandboge
bf02536fa3 Description: add aa-disable
aa-enforce and aa-complain exist to put a profile into enforce or
 complain mode respectively. The /etc/apparmor.d/disable directory
 already exists to drop files into it to disable profile load via
 apparmor_parser (and therefore via the apparmor initscript). What
 doesn't exist is aa-disable to add a file to the disable/ directory and
 unload the profile. This patch does that. This version of aa-disable is
 based on aa-complain (in fact doing a diff between aa-complain and
 aa-disable might make review easier) and works as well as aa-enforce and
 aa-complain. In other words, aa-disable has the same limitations of not
 handling the specified binary properly if the specified attachment does
 not match the path naming scheme (eg, the profile doesn't use the
 conventional path.to.binary naming scheme, globbing is used for
 attachment within the profile, etc). Also adjust documentation to
 reference aa-disable.
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-02-07 20:48:50 -06:00
Jamie Strandboge
74b2fdc52c update documentation for aa-disable 2011-02-07 17:39:54 -06:00
Jamie Strandboge
1459c9eb20 add aa-disable 2011-02-07 17:39:36 -06:00
Steve Beattie
1005bfdf7e Subject: logprof - variable definitions should not have trailing commas.
This patch fixes a logprof bug where when profiles with variable
declarations at the top level (not hidden in an include) were written
back to a file, a trailing comma was being added to the declaration
statement, which is invalid apparmor policy syntax. This patch corrects
this and no longer adds the trailing comma.
2011-02-04 21:20:58 -08:00
John Johansen
52453313c1 Update to latest version of apparmor.vim from Chritian Boltz 2011-01-26 06:43:39 -08:00
Steve Beattie
6f620e9247 From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor: Fix network event parsing
References: bnc#665483

 The upstream version of AppArmor had network mediation but it was
 removed. There's a compability patch floating around that both openSUSE
 and Ubuntu have applied to their kernels. Unfortunately, one part was
 overlooked. The socket operation event names where changed from the
 socket_ prefixed names they had when AppArmor was out-of-tree and
 utils/SubDomain.pm was never updated to understand them.

 This patch adds an operation-type table so that the code can just
 do a optype($operation) call to discover what type of operation a
 particular name refers to. It then uses this in place of the socket_
 checks to decide whether an event is a network operation.

 This allows genprof and logprof to work with networking rules again.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>

Bug: https://launchpad.net/bugs/706733
2011-01-24 15:49:46 -08:00
Steve Beattie
1c2591de1e This patch removes all of the old log parsing code from libapparmor.
The testcases that were in place for the old style log messages have
had their expected output modified such that they are expected to
return invalid results, rather than deleting the testcases outright.
2011-01-21 11:47:54 -08:00
Steve Beattie
93ae7808cb From: Jeff Mahoney <jeffm@suse.com>
Subject: apparmor-parser: Fix up translations
References: bnc#586070

Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-01-14 17:44:51 -06:00
Kees Cook
14d8bac7b2 Here's an update to rename another chunk of things that still used
"SubDomain" in some way. This leaves only "subdomain.conf" and the
function names internally.

Additionally, I added a "make check" rule to the utils/Makefile to do a
simple "perl -c" sanity check just for good measure.
2011-01-13 13:58:26 -08:00
Kees Cook
dd3a964249 drop /var/log/apparmor, stop installing Reports.pm, use LOGPROF_DEBUG as the debugging target instead of /var/log/apparmor 2011-01-13 09:13:34 -08:00
Steve Beattie
d088727bdf Support newer auditd formatted messages. Patch from mancha on irc.
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2011-01-12 13:57:19 -06:00
Jamie Strandboge
0807a74490 The example firefox profile in extras has been pretty out of date. Also, it
allows write to the ~/Desktop directory, which could conceivably allow writing
of .desktop files which could be clicked on and executed by the user. This is
based on the firefox base profile as included in Ubuntu. Notable features:
- allows for using the browser to navigate through directories
- allows reads from @{HOME}/Public/**
- allows writes to @{HOME}/Downloads/**

The intent of this profile is to restrict code execution, writes to $HOME
and information leaks while allowing basic web browsing and reading of
system documentation. It does not allow for plugins, extensions or other
helpers (but these can be added via the local/ mechanism).
2011-01-12 11:51:22 -06:00
Jamie Strandboge
b12d93a739 Attached is an updated dnsmasq profile that fixes the following:
- allow net_admin capability for DHCP server
- allow net_raw and network inet raw for ICMP pings when used as a DHCP
server
- allow read and write access to libvirt pid files for dnsmasq

See the FAQ in the dnsmasq source for details. This fixes
https://launchpad.net/bugs/697239
2011-01-12 11:47:04 -06:00
John Johansen
2796c58eca Refresh kernel compatibility patches for 2.6.36.2 and 2.6.37 2011-01-09 21:03:19 -08:00
Jamie Strandboge
22f912b9f1 abstractions/private-files: don't allow wl to autostart directories
abstractions/private-files-strict: don't allow access to:
  - chromium
  - thunderbird
  - evolution
  - kmail
  - kwallet
2011-01-07 21:05:59 -06:00
Steve Beattie
0e87acb318 Change the compilation ordering in the regression testsuite as the
toolchain has gotten stricter about linking order; in short, linked
libraries need to come after the objects referring to them. Adding to
LDLIBS is the correct solution for this.

See https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition for more
details.
2011-01-07 10:35:47 -08:00
Jamie Strandboge
f7c6a848bb abstractions/private-files: don't allow wl to autostart directories
abstractions/private-files-strict: don't allow access to:
- chromium
- thunderbird
- evolution
- kmail
- kwallet
2011-01-07 10:44:47 -06:00
Steve Beattie
cb96345f21 From: Jeff Mahoney <jeffm@suse.com>
dynamically link in libapparmor library in libapparmor's testsuite.
2011-01-05 14:41:11 -08:00
Jamie Strandboge
d03c2e681f abstractions/freedesktop.org updates:
- require owner match for files in @{HOME}
- add new path for @{HOME}/.local/share/recently-used.xbel*
- add the following, confirmed via specifications:
  /usr/share/applications/mimeinfo.cache r,
  /usr/share/applications/*.desktop r,
  owner @{HOME}/.local/share/applications/defaults.list r,
  owner @{HOME}/.local/share/applications/mimeinfo.cache r,
  owner @{HOME}/.local/share/applications/mimeapps.list r,
  owner @{HOME}/.local/share/applications/*.desktop r,

References:
http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-0.9.4.html
http://www.freedesktop.org/wiki/Specifications/mime-actions-spec
2010-12-23 18:39:28 -06:00
Jamie Strandboge
73c1283e98 abstractions/X: allow access to /usr/lib32 and /usr/lib64 for dri modules
(LP: #658135)
2010-12-23 18:39:02 -06:00
Jamie Strandboge
e400b296d8 abstractions/freedesktop.org updates:
- require owner match for files in @{HOME}
- add new path for @{HOME}/.local/share/recently-used.xbel*
- add the following, confirmed via specifications:
  /usr/share/applications/mimeinfo.cache r,
  /usr/share/applications/*.desktop r,
  owner @{HOME}/.local/share/applications/defaults.list r,
  owner @{HOME}/.local/share/applications/mimeinfo.cache r,
  owner @{HOME}/.local/share/applications/mimeapps.list r,
  owner @{HOME}/.local/share/applications/*.desktop r,

References:
http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-0.9.4.html
http://www.freedesktop.org/wiki/Specifications/mime-actions-spec
2010-12-23 07:52:47 -06:00
Jamie Strandboge
8180aa0bd3 abstractions/base: allow access to /usr/lib32 and /usr/lib64 for dri modules
(LP: #658135)
2010-12-23 07:46:55 -06:00
Jamie Strandboge
e356c4b19e add enchant abstraction. Enchant is a frontend for spellcheckers and in
use by more and more applications, including empathy and evolution. It
is listed on freedesktop.org. See:
http://www.abisource.com/projects/enchant/

This abstraction gives access to enchant itself, files in the user's home
directory for enchant and various dictionaries for:
- aspell
- ispell
- hunspell
- myspell
- hspell
- zemberek
- voikko
2010-12-22 16:59:44 -06:00
Jamie Strandboge
5c040c6149 allow 'rw' to /var/log/samba/cores/ (LP: #652562) 2010-12-22 16:58:23 -06:00
Jamie Strandboge
d097df8226 add preliminary ibus abstraction. Will likely need more once more ibus users
start to use it. Additionally, the 'rw' on the @{HOME}/.config/ibus/bus/
probably only needs 'create' and 'chmod', so that could be tightened up once
those are exposed in the tools. LP: #649497.
2010-12-22 16:57:35 -06:00
Jamie Strandboge
add5d47fc3 abstractions/user-manpages: require owner match for files in @{HOME} and /tmp 2010-12-22 16:55:50 -06:00
Jamie Strandboge
2227de709b abstractions/user-mail:
- use character globbing
- require owner match for files in @{HOME}
2010-12-22 16:55:18 -06:00
Jamie Strandboge
84b5f6e441 abstractions/user-write:
- require owner match
- add @{HOME}/Public/
2010-12-22 16:54:40 -06:00
Jamie Strandboge
1f2b4a5a19 abstractions/user-download:
- fix typo for Desktop (should be Desktop/)
- require owner match
- allow writes to @{HOME}/[dD]ownload{,s}
2010-12-22 16:52:13 -06:00
Jamie Strandboge
1b78752db6 utils/Config.pm: disable the repository by explicitly setting
$config->{repository}{enabled} = "no" (LP: #692406). We need to do this
since opensuse's site is down and there is no current alternative. Can
reenable once we have an alternative.
2010-12-21 22:08:28 -06:00
Jamie Strandboge
ca30e18692 utils/Config.pm: disable the repository by explicitly setting
$config->{repository}{enabled} = "no" (LP: #692406). We need to do this
since opensuse's site is down and there is no current alternative. Can
reenable once we have an alternative.
2010-12-21 16:56:21 -06:00
Jamie Strandboge
36f6da62aa update ubuntu abstractions to use '# vim:syntax=apparmor' 2010-12-21 12:54:57 -06:00
Jamie Strandboge
046cfe305f update ubuntu abstractions to use '# vim:syntax=apparmor' 2010-12-21 12:53:33 -06:00
Jamie Strandboge
5272c9ef0a utils/apparmor.vim: update comments on how to use 2010-12-21 10:55:24 -06:00
Jamie Strandboge
aa7304f01e utils/apparmor.vim: remove trailing whitespace 2010-12-21 10:45:33 -06:00
Kees Cook
acfcdfe750 ignore generated manpages 2010-12-20 14:02:03 -08:00
Kees Cook
39b5240966 mark parser/tst/simple_tests/xtrans/minimize-x-conflict.sd as "TODO" and hook up parser/tst/Makefile "clean" to parser/Makefile "clean" rule 2010-12-20 13:44:14 -08:00
Kees Cook
b11fd82d96 make gen-xtrans executable 2010-12-20 13:25:54 -08:00
John Johansen
3973387295 Add missing files from my last 11 patches as I forgot to do bzr add before
committing.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 13:18:36 -08:00
Kees Cook
a6dc414f57 adjust line offset now that $Id$ was removed 2010-12-20 13:06:54 -08:00
Kees Cook
723a20ba7d as ACKed on IRC, drop the unused $Id$ tags everywhere 2010-12-20 12:29:10 -08:00
Kees Cook
46e96476d8 add python2.7 to python abstraction, LP: #644983
Bug: https://launchpad.net/bugs/644983
2010-12-20 12:10:52 -08:00
Jamie Strandboge
b3c6ec3ded add aa_change_profile.pod manpage and reference it in aa_change_hat.pod 2010-12-20 14:01:58 -06:00
Kees Cook
319777962b update RPM spec, thanks to Christian Boltz. See https://bugzilla.novell.com/show_bug.cgi?id=619893 2010-12-20 12:01:23 -08:00
John Johansen
283abda83c Default permission-hashing for dfa creation to on, to fix a bug
When doing permission merging in the dfa minimization phase the information
about whether a rule is dominant or not has been lost so the merge of
xtransitions can not be handled correctly.

When two conflicting x transitions are merged the results are unpredicitable
and not currently detected.  So default dfa minimization to set up its
initial partitions with permission hashing, this ensures that dfa states
that have different xtransitions in the minimization stage will never
be merged thus will not result in a conflict.

x permission checking is still enforced at the dfa creation phase where
the originial information is available to check whether the conflicting
permissions came from exact match or re rules so that conflict resolution
can be properly applied.

The end result is that dfa minimization does not result in a truely minimal
dfa (the minimization phase is also slightly faster).

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:58:44 -08:00
John Johansen
77be2c450f Add the safe xtransition key word
Currently apparmor provides the unsafe keyword to indicate an xtransition
is not scrubbing its environment variables.  This can be used to be
explicit about which transition are unsafe instead of relying on people
remembering which of px Px is safe or unsafe.

Add the orthogonal keyword safe to allow specifying a transition is
safe.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:58:05 -08:00
John Johansen
4eea3ae073 Make meaning of leading permissions consistent with trailing permissions
x Permissions when specified as a the start of the rule had a differnt
meaning than when they appeared at the tail of a rule.

Specifically px,cx,ux were not treated as unsafe when they appeared at
the start of the rule.
  px /foo,
instead of at the tail of the rule
  /foo px,

the keyword unsafe had to be used to force the rule to cause the x transitio
to be its unsafe variant.

Fix leading permissions so that they are consistent with file rules that
use trailing permissions.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:56:57 -08:00
John Johansen
c059224811 Merge parsing of file rules with leading permissions into a single rule
Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:56:30 -08:00
John Johansen
a29078ac04 Add auto generation of tests to verify leading and trailing perms for xrules
Test the leading permission form of an xrule against its trailing permission
form, to verify that they are generating the same xtransition and thus
don't conflict (assumes xtransition conflict checking is working).
  eg.
    px /foo,
    /foo px,

should generate the same rule and thus not result in any conflicts

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:54:27 -08:00
John Johansen
851b7655c1 Add auto generation of xtransition conflict tests
All the combiniation of xtransition conflics where not well represented in
the regression test suite.  Instead of relying on multiple static test
files, automatically generate all possible conflicts.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:53:52 -08:00
John Johansen
bdea9e5678 Fix two x transition conflict bugs.
The is_merged_x_consistend macro was incorrect in that is tested for
USER_EXEC_TYPE to determine if there was an x transition.  This fails
for unconfined execs so an unconfined exec would not correctly conflict
with another exec type.

The dfa match flag table for xtransitions was not large enough and not
indexed properly for pux, and cux transitions.  The index calculation did
not take into account the pux flag so that pux and px aliased to the same
location and cux and cx aliased to the same location.

This would result in the first rule being processed defining what the
transition type was for all following rules of the type following.  So
if a px transition was processed first all pux, transitions in the profile
would be treated pux.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:52:53 -08:00
John Johansen
6d6df2a16b Make libaare built depend on immunix.h
The dfa engine uses the defines from immunix.h for permission conflict
checking, so make the build depend on it.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:52:10 -08:00
John Johansen
240c4e3674 Fix error checking of conflicting x-trans during dfa construction.
During some of the dfa cleanups, the checks for conflicting xtransition
was removed.  This adds the conflict checking back in and makes it part
of dfa creation.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:51:20 -08:00
John Johansen
fb61ea7635 Fix xtrans tests
Several of the x-trans tests where failing because of the include file was
bad.  This kept the test from testing what it was supposed as the test
was expected to fail.  Thus hidding a bug :(

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:50:31 -08:00
John Johansen
d4ca9f3ba0 Add profile names that are independent of attachment specification
Add the ability to specify the name and attachment of the profile
separately. It does not allow for the attachment specification to
begin with a variable however since variables in profile names is not
currently support this shouldn't be and issue.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-12-20 11:49:42 -08:00
Jamie Strandboge
49f27414e0 update the man pages to:
* add Canonical to the headers of the pod files touched
  * use aa_change_hat() instead of change_hat() (LP: #692216)
  * use http://wiki.apparmor.net in the SEE ALSO
  * use http://https://bugs.launchpad.net/apparmor/+filebug for bugs
  * prefix 'aa-' in SEE ALSO section for utilities (eg, 'aa-complain' for
    'complain')
2010-12-20 13:47:09 -06:00
Jamie Strandboge
77b864527a changehat/mod_apparmor/mod_apparmor.pod: make several clarifications and
add a summary for the order of operations
2010-12-20 13:45:56 -06:00
Jamie Strandboge
e5f4aa4140 parser/apparmor.d.pod: more fully document child profiles, including:
- cx and Cx
  - change_profile()
2010-12-20 13:40:59 -06:00
Jamie Strandboge
289dcfb492 add [^] 2010-12-20 12:50:53 -06:00
Jamie Strandboge
79828d1f10 LP: #349049: document audit, deny and owner rule qualifiers 2010-12-20 12:48:26 -06:00
Jamie Strandboge
7296af3f39 mod_apparmor.pod: adjust for Canonical, launchpad and Ubuntu binaries and tools 2010-12-20 08:35:00 -06:00
Jamie Strandboge
2ade2782d4 parser/apparmor.d.pod: clarify alias rules 2010-12-20 08:34:12 -06:00
John Johansen
34c78d34b1 Combine hat and local profile parsing into the same base rule as profile
parsing.
2010-12-13 16:29:16 -08:00
John Johansen
7c1f5fd932 Merge profile and :namespace:profile parsing into a single rule.
clean up profile parsing by merging profile and :namespace:profile parsing
into a single rule.

This also fixes a bug where the profile	keyword was not allowed to proceed
profiles with a namespace declaration.

Signed-off-by: John Johansen <john.johansen@canonical.com>
Acked-By: Steve Beattie <sbeattie@ubuntu.com>
2010-12-13 16:26:38 -08:00
Steve Beattie
810f54ffdd Bug: https://bugzilla.novell.com/show_bug.cgi?id=510740
Short summary: Unloading of profiles with a space in the name fails,
therefore "rcapparmor stop" (or restart) causes a funny message - and
the profile is still loaded.

Thanks to Christian Boltz <apparmor@cboltz.de>
2010-11-29 13:40:45 -08:00
Steve Beattie
8740fd517d This patch fixes the parser's lexer to not passthrough other invalid
characters in variable declarations. It also adds testcases
demonstrating the issue.
2010-11-19 02:27:33 -08:00
Steve Beattie
7ef28d9fdc This patch fixes the parser to return an error when variable declaration
statements contain trailing commas, instead of passing them through to
STDOUT. It also adds parser testcases demonstrating the issue.
2010-11-19 01:42:04 -08:00
Steve Beattie
83c4a5132e This minor patch updates the compilation dependencies for bits of the
parser that interact with the regex DFA generation library, and thus
need to be recompiled when the header file changes.

(This patch isn't particularly of interest to distros, as they
typically won't be doing incremental compilation.)
2010-11-12 13:38:21 -08:00
John Johansen
85c133cd84 Rework the code so that update for nodes is now a function
The other changes have made it so that using a macro really isn't justified
so rework the code to get rid of the hiddeous update_for_nodes macro.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:20:32 -08:00
John Johansen
d551a1a9ab Make the work_queue be a work_queue of states that need finished computing
With the addition of the nodes field to the state we can make the work
queue, be based off of the state instead of the node, and avoid doing
the node to map lookup to get back to the state.

This means that the NodeMap is now only used for duplicate elimination.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:19:47 -08:00
John Johansen
e87e45c0a2 Factor updating the state transitions into its own fn
Factoring the updating of the state transitions doesn't save on any code
but it provides a nice logical seperation and makes the dfa work_queue
loop and the updating of the state transitions easier to understand as
units.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:18:48 -08:00
John Johansen
72aa490e49 Factor adding a new state to the dfa the map into its own function
Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:16:38 -08:00
John Johansen
35d55fce81 Move state label, nodes, and permission setting into the State constructor
Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:14:12 -08:00
John Johansen
5578299445 Group dfa stats into a single structure.
Move the dfa stats into a structure to provide a single access point to
them.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:12:50 -08:00
John Johansen
99a7991664 Rename the match_count variable to duplicates
The match_count variable is a sum of the number of duplicates node sets
that have been encountered and discarded.  Rename it to better reflect what
it is doing.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:09:05 -08:00
John Johansen
15567a55dc Embedded the temporary computed nodes as part of the state
Embedding the nodes are part of the state gives fast back reference from
the state to the nodes that created it.  This is useful for the state to
nodes mapping dump as it lets us output the states in order.  It will also
let us avoid certain nodemap lookup in the future.

Overlay the nodes field (used only in dfa construction) with the partition
field which is only used during dfa minimization to avoid making the state
any larger.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:08:02 -08:00
John Johansen
5b68e0f7c4 Fix comment about what state information is being dumped
Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-11-11 16:06:52 -08:00
Kees Cook
eaa6a3c297 This cleans up a number of warnings that appeared after the parser rework
commits were made (as well as a few other minor warnings elsewhere).

The Makefile change is to avoid passing -Wstrict-prototypes and
-Wnested-externs to the C++ compiler, which the compiler yells about and
then ignores.

Since we compile with -Wmissing-field-initializers I dropped the
unreferenced zero-width fields in the header structs, and then explicitly
initialized the remaining fields.

I tagged several unused function parameters to silence those warnings.

And finally, I dropped the unused filter_escapes() too.
2010-11-09 13:39:18 -08:00
John Johansen
d53bb7f811 Embedded the State to partition mapping into the State.
Embedding the the partition mapping into the State structure significantly
speeds up dfa minimization, by converting rbtree finds to straight direct
references when checking for same mappings.

The overall time improvement is small but it can half the time spent in
minimization.
2010-11-09 11:57:43 -08:00
John Johansen
29c6f7e3ac Re-enable the ability to invoke remove-unreachable-states.
Now that removing unreachable states is not on by default re-enable the
ability to turn it on.
2010-11-09 11:56:58 -08:00
John Johansen
14e7d94701 Add ability to dump unique permission sets 2010-11-09 11:56:28 -08:00
John Johansen
318351376c Add the ability to dump NodeSet to dfa state mapping 2010-11-09 11:55:40 -08:00
John Johansen
af8b3b84ef Use nodemap.size() to label state node
The nodemap.size() increases by one with each node added, every time we
add a state we label it so this provides the proper labeling without needing
a separate variable.
2010-11-09 11:55:05 -08:00
John Johansen
b64921a5ec Add tracking of the node set (proto state) max, and average size 2010-11-09 11:54:20 -08:00
John Johansen
f1a3f66515 Add -D stats and -D progress options
add short options to turn on all stats, and all progress indicators,
also allow adding "no-" prefix to dump options to allow subtracting
individual options when short options are used.

eg.
  -D stats -D no-expr-simplify
2010-11-09 11:53:38 -08:00
John Johansen
6b4dff4bee Move -O and -D options and documentation into tables
Move the -O and -D options into tables, that keep the option and its
description.  This will help keep the options consistent and the description
up to date, as all information is now in one place.

Previously the options, and descriptions kept getting out of sync as all
relavent parts were spread out.
2010-11-09 11:52:38 -08:00
John Johansen
de2dec2bec Reduce the number of -O flag options by factoring our no- prefix
Factor out the "no-" prefix so that optimization flags and their no-
counter parts are handled by the same code.
2010-11-09 11:50:13 -08:00
John Johansen
fae7cac15c Rename trans-XXXX transition to compress- compression
trans- isn't a very good name for this phase of compilation.  It is the
compression phase, rename to trans- to compress- to reflect this.
2010-11-09 11:49:18 -08:00
John Johansen
8972e4f577 Generic cleanup pass of -D and -O options 2010-11-09 11:48:53 -08:00
John Johansen
0ad84d93f9 Factor out expr tree rotation into its own function 2010-11-09 11:48:29 -08:00
John Johansen
ac9553de19 Rework tests against Epsnodes to compare to the singleton
Dynamic casts are slower than plain comparisons so rework epsnode comparison
to use comparisons to the singleton epsnode instead of dynamic_casts.
2010-11-09 11:47:37 -08:00
John Johansen
6801346b81 Add cnode class as a base class of all expr nodes that contain character info 2010-11-09 11:46:05 -08:00
John Johansen
04d6c727e1 Add a leafnode class to clearly indicate what node types are leaf nodes 2010-11-09 11:44:26 -08:00
John Johansen
aec77cecde Move nodes around to put one child node together and two child nodes together 2010-11-09 11:38:20 -08:00
John Johansen
0f26d8f097 Further split up innernode, to be able to better identify the types of
inner nodes.

This is part of a serious of patches to cleanup expr nodes, by separating
out functionality and reducing the number of dynamic casts.
2010-11-09 11:36:14 -08:00
John Johansen
cb2ebc3102 Rework the depth first traversal of expr trees, to remove the use of the
unneeded visited table, and give a little speed up and cleanup.
2010-11-09 11:35:38 -08:00
John Johansen
d2581332db This is part of a serious of patches to cleanup expr nodes, by separating
out functionality and reducing the number of dynamic casts.
2010-11-09 11:34:59 -08:00
John Johansen
adb0973d61 Update Makefile to pass CFLAGS into libapparmor_re 2010-11-09 11:33:40 -08:00
John Johansen
7f987f93d1 As from a library pov they should be seperately callable fns, and this will
help reduce peak memory usage in some cases.

Also disbale remove_unreachable, as the current dfa code isn't generating
unreachable states, and minimization removes any states that are connected
but redundant.
2010-11-09 11:28:56 -08:00
John Johansen
c5fa0e98b3 Reference counting of Nodes exists to shared the special accept nodes that
hold permission information.  We currently keep them in a table with a
refcount so that they don't go away, until we delete the table.

We can simulate this by getting rid of the refcount, and making dup and release
virtual, and overriding it for the special accept nodes.
2010-11-09 11:28:22 -08:00
John Johansen
a84844cea5 Do not use permission hashing for minimization by default. While this
improves minimization performance, it can slow down total creation time and
result in larger compressed dfas.

This is because it results in the dfa not being completely minimized which
with the current O(n2) dfa table compression algorithm can result in slower
compressed dfa generation.
2010-11-09 11:27:36 -08:00
John Johansen
51f443c7b6 Update state progress/stats output to dump the number of accepting
states/partitions occur in the minimized dfa.
2010-11-09 11:26:50 -08:00
John Johansen
c2601dbd30 Cleanup the perm_map as soon as it is no longer needed. Cleaning up the map
before the end of the functions reduces the peak memory of the function
2010-11-09 11:26:18 -08:00
John Johansen
2fb64fa85e When hashing Nodes ensure that cases.otherwise == NULL is treated the same
as pointing to the nonmatching state.  Having this mix shouldn't currently
exist but adding the extra check makes the code more robust.
2010-11-09 11:25:44 -08:00
John Johansen
4e80416a4f Do permission accumulation in dfa minimization. This is necessary if accept
states with different permissions are to ever share a partition.
2010-11-09 11:24:51 -08:00
John Johansen
a949b075b4 The dfa flags currently are a weird mix of position and negative assertions.
Its cleaner just to have them all assert one way and let the cmd line
options apply them correctly.
2010-11-09 11:23:45 -08:00
John Johansen
36e99af7fb Split dfa minimizing hashing into two seperately controllable hashes. The
first hash does hashing on state just state transitions, which always results
in a performance improvement.

The second does hashing based off of accept permissions, which can create
more initial states but can result in not being able to achieve a true
minimum dfa.  This can also lead to slowing down total dfa creation because
while minimization, compression can take longer if the dfa isn't completely
minimized.

permission hashing is currently required, as minimization does not accumulate
redundant Node permissions.
2010-11-09 11:22:54 -08:00
John Johansen
9b99039fdb Convert Nodemap comparision to use a hash value. This uses a little more
memory than just using the NodeSet size to short circuit comparison but it
improves on the case where compared sets have the same size.  It is possible
that this will slow down small dfa generation slightly but the trade off for
large dfa's (which are the slow ones to generate) is worth it.

This results in another performance bump over using the NodeSize is NodeSet
comparison, and the amount of improvement increases with larger dfas
2010-11-09 11:20:08 -08:00
John Johansen
344e11a539 Use set size as part of set comparison, short circuiting comparing sets
of pointers when it isn't necessary.  This results in a nice little
performance increase in dfa creation.

This is more of a proof of concept patch, and is replaced by the next
patch which does better short circuiting via hashing
2010-11-09 11:18:46 -08:00
John Johansen
ca1d891799 This patch reworks the internal structures used to compute the dfa. It is on
the large side, and I experimented with different ways to split this up but in
the end, anything I could do would result in a series of dependent patches
that would require all of them to be applied to get meaningful functional
changes.

The patch structural reworks the dfa so that
- there is a new State class, it takes the place of sets of nodes in the
  dfa, and allows storing state information within the state
- removes the dfa transition table, which mapped sets of nodes to a
  transition table, by moving the transition into the new state class
- computes dfa state permissions once (stored in the state)
- expression tree nodes are independent from a created dfa.  This allows
  computed expression trees, and sets of Nodes (used as protostates when
  computing the dfa).  To be managed independent of the dfa life time.
  This will allow reducing the amount of memory used, in the future,
  and will also allow separating the expression tree logic out into
  its own file.


The patch has some effect on reducing peak memory usage, and computation
time.  The actual amount of reduction is dependent on the number of states
in the dfa with larger saving being achieved on larger dfas.  Eg. for
the test evince profile I was using it makes the parser about 7% faster with a
peak memory usage about 12% less.

This patch changes the initial partition hashing of minimization resulting
in slightly smaller dfas.
2010-11-09 11:14:55 -08:00
Kees Cook
485df894ab This fixes a few typos in documentation that lintian noticed. 2010-11-04 14:27:30 -07:00
Kees Cook
38cefc358a add symlink for manpage as well 2010-11-04 13:36:38 -07:00
Kees Cook
6d2d55057c retain one backward compat symlink for the heavily-documented "apparmor_status" command 2010-11-04 11:52:33 -07:00
Kees Cook
4b9a2683ed include release version in manpage 2010-11-04 11:32:06 -07:00
Kees Cook
06b4d7db0d Make the manpage release distro agnostic though configurable. 2010-11-03 23:49:41 -07:00
Kees Cook
225c779225 This patch cleans up the testsuite output harder, and removes a bashism in
another clean target.
2010-11-03 17:04:43 -07:00
Kees Cook
6717e29909 Here is a patch to standardize on all utils using the "aa-" prefix instead
of a mix of symlinks to non-prefixed comands, and "apparmor_" prefixed
commands.

This also refactors the manpage generation slightly since we no longer
need special cases for the manpages, and drops aa-eventd from the default
list of tools to install (it also lacks a manpage).
2010-11-03 17:03:52 -07:00
Jamie Strandboge
7f1b117675 abstractions/ubuntu-browsers: adjust sensible browser to use Pixr 2010-10-22 07:43:23 -05:00
John Johansen
632b6aaf1f Add the compatibility patches for the 2.6.36 upstream kernel version of
AppArmor.
2010-10-21 10:58:18 -07:00
John Johansen
3e8a61d626 Move kernel patches for old versions of the module to deprecated 2010-10-21 10:56:01 -07:00
Jamie Strandboge
fb418015e3 add /usr/bin/emacs-snapshot-gtk PUxr to ubuntu-browsers.d/text-editors 2010-10-21 09:03:09 -05:00
Steve Beattie
db30c2bc19 This patch fixes the common/Make.rules file to not do bzr versioninfo
on every make invocation; instead it defines a command as a variable
that then is evaluated into shell variables when needed.
2010-10-18 12:12:37 -07:00
Steve Beattie
f6b043b434 Bump version up to prevent confusion at the request of jjohansen. 2010-10-18 11:18:03 -07:00
Steve Beattie
abcd1f2975 This patch makes the parser's makefile honor CFLAGS that have been
exported in the environment. Without it, merely setting the CFLAGS
environment variable would not affect the compilation of the parser,
though it was still possible to override it by passing the variable
as an argument (e.g. make all CFLAGS="-Oinsane -Wextra-special").

It also makes the default CFLAGS for the parser consistent with
the default for the C++ dfa library, and passes the flags on to
the library.

An audit of the other bits of C showed that they either supported
CFLAGS during configure or were otherwise honoring CFLAGS when set
as environment variable.
2010-10-09 14:15:59 -07:00
Steve Beattie
5849c7ab78 This patch removes a bunch of crufty old stuff, including some
subversion deritrus, the slackware tarball build support as well as
the aborted attempt to make auto building debian packages.
2010-10-07 15:42:36 -07:00
Steve Beattie
19fa8a3ed9 This patch takes the revision info from the stamp file if things are
being built outside of a working bzr tree.
2010-10-07 15:39:55 -07:00
Steve Beattie
875a06b9d7 This corrects a couple of build issues on openSUSE, as the version
of rpm there no longer defines %{_host_vendor}.
2010-10-07 15:38:31 -07:00
Steve Beattie
c90b199488 This patch moves the overall version definition of the software out of
the common/Make.rules file into common/Version so that libapparmor's
configure.in can make use of it, meaning there's one less thing to
adjust when updating the version. It also bumps the trunk version
from 2.5 to 2.5.90 in (perhaps excessively long) preparation for the
2.6.0 release, and to indicate that it's newer than the 2.5.x branch.
2010-10-07 15:37:30 -07:00
Steve Beattie
0e1158c71d This patch adds a toplevel target to add a bzr tag in a consistent
format.
2010-10-07 15:33:11 -07:00
Steve Beattie
b19f77d5c7 This patch adds toplevel support for creating release and snapshot
tarballs and converts some of the common/Make.rules targets to get
version information from bzr. As part of this, the tarball generation
creates a .stamp_rev file in the common directory which contains both
the name of the bzr repo exported from as well as the revision.
2010-10-07 15:25:21 -07:00
Steve Beattie
7e0969bf82 From: Jesse Michael <jesse@lonelyrhinoceros.com>
This just adds prototypes to all functions to make further cleanup
slightly easier by getting perl to complain if not enough args are
passed to a function.  Perl doesn't appear to complain about this in
every case even with prototypes, which is kind of annoying.
2010-10-06 13:06:05 -07:00
Steve Beattie
8e51a7b31e From: Jesse Michael <jesse@lonelyrhinoceros.com>
One of the uses of eval { } wasn't checking $@ for errors, so if
something bad happened, it'd be silently ignored.  This just adds in
an extra check to die if we hit a failure.
2010-10-06 12:21:56 -07:00
Steve Beattie
317197a6b5 This patch modifies the xattr regression test to use a separate
loopback mounted filesystem to operate on, to guarantee that the mount
option user_xattr is enabled (it's disabled by default on Ubuntu).

With this change, a number of the user xattr testcases that were
expected to pass but weren't started working; however, some of the
ones that were failing as expected are now passing. I've touched up
the expectations as well.
2010-09-30 10:49:26 -07:00
Jamie Strandboge
39902eff28 abstractions/ubuntu-email: adjustment for ever-changing path of thunderbird
(LP: #648900)
2010-09-27 08:47:08 -05:00
Jamie Strandboge
2cb3463cc8 add ubuntu-integration-xul for firefox-notify 2010-09-23 08:16:56 -05:00
Steve Beattie
60b014667a When loading without the 2.4 compatibility patch, the parser needs the
following patch or it will explode when it can't find the "features"
file.

Bug: https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/626984
From: Kees Cook <kees@ubuntu.com>
2010-09-16 10:24:50 -07:00
Steve Beattie
d7fde9d109 Reorders the timstamp check to move it to the beginning of the
script and add an additional sleep before the parser invocation that
generates the cache file for the first time, to avoid failures in the
"Profiles are cached when requested:" test on ext3 and other filesystems
without fine-grained enough timestamps.
2010-09-15 14:28:35 -07:00
Kees Cook
72701bd2a0 drop duplicate extern from rev 1496 2010-09-15 12:24:12 -07:00
Jamie Strandboge
6b81b50d36 ubuntu-browsers.d/multimedia: allow lpr and lpstat for printing from flash
plugin
2010-09-15 08:20:21 -05:00
Kees Cook
862836548d Fix write_cache to not be a privileged operation so that the caching tests
can be added to the build. Update caching tests to detect non-ns-resolution
filesystems and back off on the timing test.
2010-09-14 12:45:34 -07:00
Kees Cook
feb70284bc Effectively revert revno 1471, and fix the misdetected error condition
so that caching will work again without needing kernel_load.
2010-09-14 12:38:38 -07:00
Kees Cook
3a1fbb49f4 fix up typo and add extern for update_mru_tstamp 2010-09-14 12:37:59 -07:00
John Johansen
02e86864da This patch changes how cache validation is done, by moving it post
parsing, and precompilation of policy.  This allows finding the most
recent text time stamp during parsing and this is then compared to
the cache file time stamp.

While this is slightly slower than the cache file check that only
validated against the profile file it fixes the bug where abstraction
updates do not cause the cache file to become invalid.
2010-09-14 12:22:02 -07:00
Jamie Strandboge
b465b91ec9 exported smbd files need to have 'k' to work properly with certain applications 2010-09-14 14:12:49 -05:00
Jamie Strandboge
7aac7a23a3 profiles/apparmor.d/local/README: use commented text since aa-genprof is pretty
grumpy without it
2010-09-10 09:39:29 -05:00
Steve Beattie
8fd1f15ae7 Add testcases for trunk commits 1486-1490. 2010-09-09 17:14:25 -07:00
John Johansen
5c43890b31 Change the second key_capability entry into a comment and document why
its there and what to do with it once the old entry types are cleaned up.
2010-09-09 16:51:44 -07:00
John Johansen
073064bdb0 The new apparmor module uses has added a target key that is used to report
the target of an operation instead of name2 used in previous kernels
2010-09-09 12:22:02 -07:00
John Johansen
59597775e5 Status messages have and offset field used to debug why and where a policy
load failed.  For now just ignore it.
2010-09-09 12:21:19 -07:00
John Johansen
4c666b4d2f The kernel can return negative error codes for error= 2010-09-09 12:20:30 -07:00
John Johansen
1e098b5928 The capability operation picked up the capability and capname fields.
capability is reported by LSM_AUDIT and is just the capability number.
capname is reported by the apparmor module and is the name the kernel
knows the capability as.

For now just use capname and silently drop capability when it is found.
2010-09-09 12:19:08 -07:00
John Johansen
4fcd7e94f5 If encountered the scanner will dump unmatched text from <audit_id>. 2010-09-09 12:17:03 -07:00
John Johansen
513611ff92 Fix memory leak where apparmor_notify is not freeing up messages that
are not reported.
2010-09-09 10:40:38 -07:00
John Johansen
fe3cce7828 Default apparmor_notify to report messages, when it is installed and
started.  Since apparmor_notify is not installed by default and not started
by default, the act of installing and starting it implies the desire to
get messages.
2010-09-09 10:31:45 -07:00
Jamie Strandboge
edb1ae1798 allow mmap of font cache files in @{HOME}/.fontconfig/ for sun-java6 2010-09-08 13:56:19 -05:00
Jamie Strandboge
85c20fb564 update ubuntu-browsers.d/java for latest sun-java6 (LP: #633369) 2010-09-08 12:27:09 -05:00
Jamie Strandboge
834efc7b2c fix LP: #626451 (GoogleTalk in ubuntu-browsers.d/multimedia) 2010-09-08 08:51:06 -05:00
Jamie Strandboge
d2c61794ea update fonts abstraction to add '/var/lib/ghostscript/** r,' 2010-09-03 08:38:14 -05:00
Jamie Strandboge
b56e654f26 abstractions/ubuntu-browsers: add '/usr/bin/sensible-browser PUxr' 2010-08-30 07:52:20 -05:00
John Johansen
d256e1f9c0 The upstream 2.6.36 kernel is missing the /sys/kernel/security/apparmor/profiles file, so introspection of which profiles are loaded is not possible.
Make testing of profiles loaded conditional on introspection being present.
2010-08-26 10:38:27 -07:00
John Johansen
8762c1dcfb The upstream 2.6.36 version of apparmor doesn't support network rules.
Add a flag to the parser controlling the output of network rules,
and warn per profile when network rules are not going to be enforced.
2010-08-26 10:37:46 -07:00
John Johansen
1f1a303457 The upstream 2.6.36 version of apparmor is missing the match file,
so the parser doesn't set matching options correctly.

Set minimal defaults with that will allow the parser to load policy,
on 2.6.36 kernels.
2010-08-26 10:36:45 -07:00
Steve Beattie
046e1fb215 This is an incomplete fix for bug
https://bugs.launchpad.net/apparmor/+bug/623467

This patch adds some additional testcases to the log parsing
testsuite, to cover rejections for operations that aren't covered by
other testcase (truncate, rename_src, rename_dest, mkdir) as well
as fixing SubDomain.pm to take those operations into account when
parsing log files.

The operations link, unlink, and possibly setattr still need to be
covered by SubDomain.pm
2010-08-25 09:53:39 -07:00
Steve Beattie
341877416e Creating lame empty error files that dejagnu needs for its tests.
Apologies for not getting an ACK on this commit.
2010-08-23 22:34:51 -07:00
Steve Beattie
6c31d0d894 This commit teaches pam_apparmor about the current errno returned by the
kernel when the hat that was passed does not exist in the profile (but
other hats exist). It also removes the very old EPERM case, which hasn't
been accurate for a while. (LP: #619521)
2010-08-19 08:24:41 -07:00
Jamie Strandboge
40751c2ed3 abstractions/ubuntu-browsers.d/ubuntu-integration: update for kmozillahelper
and gnome-appearance-properties (LP: #514356, LP: #573344)
abstractions/ubuntu-browsers.d/user-files: update for /net (LP: #593413)
2010-08-18 10:06:40 -05:00
John Johansen
d72422b369 When doing debugging/building dfa graphs, generally I use -QT however
this results in

Unable to open output file - Success

to be output to standard error.

This occurs because despite specifying kernel_load = 0, the kernel load
parts are still being done, and failing.
2010-08-17 08:03:07 -07:00
John Johansen
291066dcbd On certain graphs the dfa graph dump output can become messed up as it isn't properly handling non-printing characters in the case of single character
output.  Drop the cast to signed character which messes up the output.
2010-08-17 08:02:27 -07:00
Jamie Strandboge
c96c8a391f profiles/apparmor.d/abstractions/ubuntu-browsers.d/java: generalize names
of child profiles
2010-08-11 14:10:16 -05:00
Jamie Strandboge
7536899894 create ubuntu-feed-readers abstraction and have ubuntu-browsers.d/multimedia
use it instead of specifying liferea directly
2010-08-11 09:58:34 -05:00
Jamie Strandboge
44f2e73d1b update X abstraction for gdm's new placement of XAUTHORITY (LP: #601583) 2010-08-11 09:57:54 -05:00
Jamie Strandboge
9e99dfc8b2 add ca-certificates to ssl_certs abstraction (LP: #605835) 2010-08-11 09:15:56 -05:00
Jamie Strandboge
42cd946ff2 update ubuntu-browsers.d/kde to use PUx for kde4-config 2010-08-10 17:57:42 -05:00
Jamie Strandboge
cbbf3ea75e update abstractions/ubuntu-browsers.d/java for icedtea 2010-08-10 16:45:23 -05:00
Jamie Strandboge
23a77d70e8 adjust profiles/Makefile for abstractions/ubuntu-browsers.d 2010-08-10 16:42:00 -05:00
Jamie Strandboge
e1e85f285c remove kde4-config from the kde abstraction 2010-08-10 15:38:58 -05:00
Jamie Strandboge
6988cd07a0 adjust profiles/apparmor.d/local/README to codify the intended usage of local/ 2010-08-10 14:28:10 -05:00
Jamie Strandboge
1bdb6069da fix whitespace abstractions/ubuntu-browsers.d/*
add 'owner' match to abstractions/ubuntu-browsers.d/java
2010-08-10 14:18:21 -05:00
Jamie Strandboge
0978a1ad8a update ubuntu-* abstractions to use PUx instead of Ux 2010-08-10 14:11:04 -05:00
John Johansen
350520a650 Add check to the regression tests that verifies the expected profiles
are loaded.
2010-08-10 09:24:41 -04:00
Jamie Strandboge
2a3aae6d57 'owner' match in commit 1406 too strict for /tmp/ and /var/tmp/ 2010-08-09 09:56:31 -05:00
Jamie Strandboge
d472cf13b1 add Ubuntu-specific profiles/apparmor.d/abstractions/ubuntu-browsers.d/*
for use with browser profiles
2010-08-06 16:01:57 -05:00
Jamie Strandboge
eace04e2e7 profiles/Makefile: use LOCAL_ADDITIONS using filter-out in clean target, which
is much cleaner.
2010-08-05 16:00:23 -05:00
Jamie Strandboge
f9187ac661 profiles/Makefile: use same logic in 'clean' target as we did in 'local' 2010-08-05 15:53:07 -05:00
Jamie Strandboge
9c3fb960e8 implement 'local/' mechanism to aid in packaging:
- create profiles/apparmor.d/local/README to explain it all
- adjust shipped profiles in profiles/apparmor.d to include the local changes
- adjust profiles/Makefile for local files
2010-08-05 15:30:43 -05:00
Jamie Strandboge
b550fa291c adjust profiles/Makefile for local files 2010-08-05 15:10:33 -05:00
Jamie Strandboge
6fb3f5c4a6 move profiles/local to profiles/apparmor.d/local 2010-08-05 14:15:56 -05:00
Jamie Strandboge
f25949cf84 start on 'local/' mechanism to aid in packaging:
- add profiles/local/README
- adjust profiles/apparmor.d/{bin,sbin,usr}* to include a file from local/
- adjust profiles/apparmor.d/{bin,sbin,usr}* for for copyright, some whitespace
  and svn conventions
2010-08-05 14:00:02 -05:00
Kees Cook
cc434a1c7f Fixes "deleted" test case to match the documentation for the expected
outcome. Adds additional positive test, fixes spelling.
2010-08-04 12:22:48 -07:00
John Johansen
5c8581a345 Update the regression test suite to test chmod, chown and chgrp on directories. 2010-08-04 10:25:44 -07:00
John Johansen
6259edac38 Update and expand comments on regex tree normalization 2010-08-04 10:23:22 -07:00
John Johansen
f0220611aa Epsnodes carry no information beyond the node type. Convert to using
a single static node, which will reduce allocations and peak memory
use slightly.
2010-08-04 09:53:46 -07:00
John Johansen
5c8051994b Make -q quiet can not update cache warnings 2010-08-04 09:52:54 -07:00
Jamie Strandboge
62f2e7f06e fix for LP: #611248 (gdk pixbug loaders)
tighten up the dbus abstractions
2010-08-03 12:06:29 -05:00
Jamie Strandboge
24e3b5296e tighten up the dbus abstractions 2010-08-03 12:04:37 -05:00
Jamie Strandboge
9533ac3405 fix for LP: #611248 2010-08-03 09:13:34 -05:00
John Johansen
b5c780d2a1 Remove pcre and update tests where necessary 2010-07-31 16:00:52 -07:00
Kees Cook
06ebb0b6d6 use wildcards correctly for utils subdirectory ignores 2010-07-26 11:02:42 -07:00
Kees Cook
5f76ba2ae3 Cleanups in libapparmor that should have been part of commit 1437. These
were part of the ACKed patch on the mailing list.
2010-07-26 10:58:07 -07:00
Kees Cook
32d899eb6d The coredump regression test existed in the tree, but was not hooked up to
the testsuite. It looks like coredump mediation may have been removed,
since it is rather a corner-case, so I have currently marked it as XFAIL.

In hooking it back up, the "prologue.inc" was reviewed, dead code dropped,
and the "image=" argument changed to correctly handle the imageperms
syntax used elsewhere. It was working in other tests out of coincidence.
2010-07-26 10:55:00 -07:00
Kees Cook
b30b4c1877 Fixes several warnings, typos, clarifies a subtest description and starts
to try to get rid of programmatic use of $Id$ in kernel regression tests.
2010-07-26 10:50:33 -07:00
Kees Cook
0d357a892b Actually fail "make tests" if any of the tests fail to run. 2010-07-26 10:46:03 -07:00
Kees Cook
e180ed4ccb There didn't seem to be a way to see individual test successes, so I added
a check for "VERBOSE=1" in the kernel regression testsuite.
2010-07-26 09:30:36 -07:00
Kees Cook
27ce962708 Rename "subdomain" to "apparmor" in kernel regression tests.
Includes spelling fixes, drops of old documentation, and removal of notes on
tests that no longer fail.
2010-07-26 09:26:26 -07:00
Kees Cook
084f975d5e Drop unused file descriptor. 2010-07-26 09:25:00 -07:00
Kees Cook
624aee531a Fix many compile-time warnings.
Start replacing RPM with lsb-release.
Drop old references to CVE.
Remove unused code.
2010-07-26 09:22:45 -07:00
Kees Cook
a92f9e67b3 Add "comm" string to the parser structure and testsuite runner. Update
testsuite output to include "comm" report.
2010-07-26 09:20:02 -07:00
Kees Cook
5649f5237b Add testcases for new LSM-audit log messages.
Update log parser grammar to handle new LSM-audit log messages.
2010-07-26 09:16:23 -07:00
Kees Cook
24a05b0bf5 add kernel regression test build-time by-products to ignore list 2010-07-25 19:00:51 -07:00
Kees Cook
359514432f add more build-time by-products to the ignore list 2010-07-25 18:59:58 -07:00
Kees Cook
cf706a37f0 add build-time by-products to the .bzrignore for libapparmor 2010-07-25 18:52:19 -07:00
John Johansen
4be07c3265 This adds a basic debug dump for the conversion of each rule in a profile to its expression
tree.  It is limited in that it doesn't currently handle the permissions of a rule.

conversion output presents an aare -> prce conversion followed by 1 or more expression
tree rules, governed by what the rule does.
eg.
  aare: /**   ->   /[^/\x00][^\x00]*
  rule: /[^/\x00][^\x00]*  ->  /[^\0000/]([^\0000])*

eg.
echo "/foo { /** rwlkmix, } " | ./apparmor_parser -QT -D rule-exprs -D expr-tree

aare: /foo   ->   /foo
aare: /**   ->   /[^/\x00][^\x00]*
rule: /[^/\x00][^\x00]*  ->  /[^\0000/]([^\0000])*

rule: /[^/\x00][^\x00]*\x00/[^/].*  ->  /[^\0000/]([^\0000])*\0000/[^/](.)*


DFA: Expression Tree
(/[^\0000/]([^\0000])*(((((((((((((<513>|<2>)|<4>)|<8>)|<16>)|<32>)|<64>)|<8404992>)|<32768>)|<65536>)|<131072>)|<262144>)|<524288>)|<1048576>)|/[^\0000/]([^\0000])*\0000/[^/](.)*((<16>|<32>)|<262144>))


This simple example shows many things
1. The profile name under goes pcre conversion.  But since no regular expressions where found
   it doesn't generate any expr rules
2. /** is converted into the pcre expression /[^\0000/]([^\0000])*
3. The pcre expression /[^\0000/]([^\0000])* is converted into two rules that are then
   converted into expression trees.

   The reason for this can not be seen by the output as this is actually triggered by
   permissions separation for the rule.  In this case the link permission is separated
   into what is shown as the second rule: statement.
4. DFA: Expression Tree dump shows how these rules are combined together

You will notice that the rule conversion statement is fairly redundant currently as it just
show pcre to expression tree pcre.  This will change when direct aare parsing occurs,
but currently serves to verify the pcre conversion step.


It is not the prettiest patch, as its touching some ugly code that is schedule to be cleaned
up/replaced. eg. convert_aaregex_to_pcre is going to replaced with native parse conversion
from an aare straight to the expression tree, and dfaflag passing will become part of the
rule set.
2010-07-23 13:29:35 +02:00
John Johansen
837f47c921 This is the user space fix for launchpad.net/busgs/599450
It changes the table resizing so that there is always sufficient
high entries in the table, preventing bounds violations from
occurring.

Previously the resize allocation was always based on the character
set range for a state, which could be more or less than actually
required, and packing would waste some space when over allocation
was done.

As a result this patch in general results in slightly smaller
transition tables even though it enforcing the minimum required
padding to avoid bounds violations.
2010-07-23 04:30:31 +02:00
John Johansen
bfb96638f6 This is a preparatory patch for the fix to launchpad.net/bugs/599450.
It combines the two separate table resize code segments into a single
functionally equivalent segment.  It does not fix the bug.
2010-07-23 04:29:54 +02:00
John Johansen
6453a41a28 Add extra transition table labeling to help with interpretation of the
dump output.
2010-07-23 04:29:29 +02:00
Steve Beattie
1d9ca54cec Minor touchups to the README. 2010-07-22 17:07:10 +02:00
Jamie Strandboge
1cc6ef54d0 added README file 2010-07-22 15:29:07 +02:00
John Johansen
af3476afb9 The templatization of deref_less_than is unnecessary and complicates the code
replace it with its none templatized version.
2010-07-10 17:53:04 -07:00
John Johansen
4f8e01ff36 expression tree node labeling is used during debugging dumps. Currently the node labels
are computed and stored in a map, that is not cleaned up.  This means that the labeling
is retained across different dfas.

Move the labeling into expr node as this takes less memory than using a map and will
also separates node labeling so its per dfa instead of global.  In addition this means
the labeling is cleanedup/freed when the expr tree is freed without any extra work.
2010-07-10 17:52:13 -07:00
John Johansen
d0dcab10f1 Make the transition table dump easier to understand by labeling each entry with its
index.
2010-07-10 17:49:32 -07:00
John Johansen
1004f039ec When creating the dfa the sets firstpos, lastpos, and followpos are computed for
each expression tree node and then used as input to create the dfa states.

Currently they are not being freed until the nodes are destroyed, but the information
is no longer needed once the dfa has been created.  Cleaning them up early reduces
peak memory usage.
2010-07-10 17:47:25 -07:00
John Johansen
da6df9fdc5 The apparmor parser applies the disabled and complain mode directories even when just
dumping the preprocessor output to stdout.

Add a flag to test whether to skip forcing the mode and use it with -p (dump preprocessed
profile).
2010-07-10 17:46:06 -07:00
John Johansen
a30ecbfe3c Add the -o flag to allow specifying the output file instead of loading
to the kernel.

Signed-off-by: John Johansen <john.johansen@canonical.com>
2010-06-26 13:14:56 -07:00
John Johansen
49530d5fe5 This patch adds back in the -p flag, allowing the dumping of a
flattened profile to stdout.

It currently does not do anymore than flattening the include
files.  The expansions of variables etc can be added later.
2010-06-26 13:13:52 -07:00
Steve Beattie
2d2897f426 This patch adds a couple of additional lineno reporting testcases:
* a non-include related syntax error (errors/modefail.sd)
  * multiple successful includes followed by a failed include
    (errors/multi_include.sd)

It also fixes two issues with the parser's line counting:

  * the count began at 0 (demonstrated by the first testcase's error
    being reporting on one line less than it should be), and

  * an extra line increment when includes were detected (demonstrated
    by the second testcase's error being reported at a line beyond the
    correct linenumber.

The existing testcases did not catch these because they were all
based on the first include in the file failing and so the start of
the count from 0 counteracted the extra counted line.
2010-06-25 12:43:48 -07:00
Jamie Strandboge
d744377f4a abstractions/dbus-session: use Pix instead of Ux for dbus-launch since in
addition to setting up a dbus session it can be used to launch applications
2010-06-22 11:50:31 -05:00
Jamie Strandboge
23bc2980c6 ubuntu-media-players: add gmplayer 2010-06-08 14:33:31 -05:00
Jamie Strandboge
f8c7cee59c allow thunderbird 3 in abstractions/ubuntu-email 2010-06-07 08:30:34 -05:00
Kees Cook
6737031eb9 hrm, since I added code, I need to update the copyright details. 2010-06-04 18:57:01 -07:00
Kees Cook
7cfc7e1133 add correct line number and filename tracking for error conditions (LP: #588014)
Bug: https://launchpad.net/bugs/588014
2010-06-04 18:47:44 -07:00
Kees Cook
67bd489ba8 add generated files from parser/ to ignore list 2010-06-04 18:39:20 -07:00
Kees Cook
34f5510faf network interface enumeration 2010-06-04 17:44:59 -07:00
Kees Cook
0e07298340 update for font/icon/mime locations in current gnome 2010-06-04 17:44:30 -07:00
Kees Cook
a7fd5abe37 statvfs allowed by default 2010-06-04 17:43:11 -07:00
Jamie Strandboge
a029b16066 apparmor_notify:
- verify $opt_s is initialized (LP: #582075)
- don't show summary if $opt_s < 1
2010-05-27 09:08:12 -05:00
Jamie Strandboge
ea4756a802 ##rmor_notify: show last date when using -s # -v 2010-05-14 00:08:31 +02:00
Jamie Strandboge
7d76eea05a apparmor_notify: show last date when using -s # -v 2010-05-14 00:07:32 +02:00
Jamie Strandboge
7d22b5bdce abstractions/user-tmp: require 'owner' matching 2010-05-12 10:52:23 +02:00
Jamie Strandboge
8e97e4a405 apparmor_notify: add long options. Your welcome Steve ;) 2010-05-12 10:46:22 +02:00
Steve Beattie
d6713e49cd First, readlink is in /bin/ on ubuntu, not /usr/bin - checked both
paths. Secondly, the /lib64 -> /lib symlink would mean the
/lib64/ld-linux symlink would incorrectly be generated as
/lib64/ld-N.NN.so which still has a symlink in its path, and thus
apparmor wouldn't permit the access. Fixing by having readlink
canonicalize the entire path.

ack thppt.
2010-04-27 02:37:30 -07:00
Jamie Strandboge
369e18202f add dbus-session abstraction 2010-04-19 12:38:17 -05:00
Jamie Strandboge
96b1328967 apparmor_notify: adjust '(3 total)' to '(3 found)' 2010-04-08 23:00:52 -05:00
Jamie Strandboge
0254d63fdc apparmor_notify: group like entries together when using -v with -s. Eg:
$ sudo apparmor_notify -s 1 -v
 Profile: /usr/lib/firefox-3.6.3/firefox-*bin
 Operation: exec
 Name: /usr/bin/apturl
 Denied: ::x
 Logfile: /var/log/audit/audit.log

 Profile: /usr/sbin/ntpd
 Operation: open
 Name: /var/lib/ntp/ntp.conf.dhcp
 Denied: r::
 Logfile: /var/log/audit/audit.log
 (3 total)

 AppArmor denials: 4 (since Wed Apr  7 22:57:56 2010)
 For more information, please see: https://wiki.ubuntu.com/DebuggingApparmor
2010-04-08 22:57:04 -05:00
John Johansen
b0a9f46bb7 Update parser man page to include dump and optimize flags 2010-04-03 16:24:06 -07:00
John Johansen
d295e3b444 Update several flags to not preclude there using with writing the cache,
they will however still skip reading the cache.
2010-04-03 15:41:40 -07:00
Jamie Strandboge
6186118aa0 adjust cgi path for php5 abstraction (LP: #538661) 2010-03-30 12:34:32 -05:00
Jamie Strandboge
98d20bf257 adjust path to extensions in php5 abstraction, since the extensions directory
is more free-form than once thought
2010-03-30 12:31:26 -05:00
Jamie Strandboge
c38f0f22bc apparmor_notify: remove stray print 2010-03-30 12:26:32 -05:00
Jamie Strandboge
24446dd1d0 apparmor_notify.pod: add -u and -w options 2010-03-30 10:48:51 -05:00
Jamie Strandboge
cd90674f37 apparmor_notify: fix reopening logfile after dropping privileges (ie, notice
when auditd logs get rotated)
- use getgrnam() with setgid when dropping to nobody_group
- add '-u USER' option to drop to this user when running priviliged but
  not under sudo. Useful for starting when logged in as root.
- add a read access check before get_logfile_inode() so we don't have to
  wait for the timeout in get_logfile_inode()
- set euid only when dropping privileges, instead of using POSIX::setuid()
  which sets uid, euid and saved id when starting privileged
- create send_message() function which fork/execs so that we can set the
  real uid before calling notify-send (notify-send looks at the real uid
  when trying to connect to dbus)
- adjust reopen_logfile() to raise privileges (via euid) before accessing
  logfile when $< != $>. Drop them again after open().
2010-03-30 10:31:23 -05:00
Jamie Strandboge
4cfe8e9d48 apparmor_notify.pod: update for -f 2010-03-27 09:16:38 -05:00
Jamie Strandboge
5ceb1fa1c9 apparmor_notify:
- also check for inode change
- update size to use stat
- treat logfile_size like logfile_inode
- update logfile_size and logfile_inode in reopen_logfile()
2010-03-27 09:14:33 -05:00
Jamie Strandboge
4fb9a702f0 apparmor_notify:
- add -f option to optionally specify the logfile
- when polling, check to see if the logfile size decreased, and if so, reopen
  it. Currently this only works if you can read the file after dropping
  privileges
2010-03-27 08:28:07 -05:00
Marc Deslauriers
daffe30e47 - utils/SubDomain.pm: get rid of warnings 2010-03-26 09:51:21 -04:00
Jamie Strandboge
f0b380fe5e add 'k' to /var/lib/samba/**.tdb in the samba abstraction 2010-03-25 18:13:00 -05:00
Steve Beattie
4e039d07f3 - Break out make targets so that distributors that don't want full docs
can pick targets they want. Patch from Arkadiusz Miskiewicz <arekm at
  maven.pl>.

- Comment out debug dump of generate af_names.h
2010-03-16 15:18:55 -07:00
Steve Beattie
b403bbdf82 Fix perl swig bindings so that libapparmor can be built when configured
without perl. Thanks to Arkadiusz Miskiewicz <arekm at maven.pl>.
2010-03-16 15:00:26 -07:00
Steve Beattie
8c7fea39d4 Expand parser stress test to included regexs and rlimit rules. 2010-03-15 11:31:38 -07:00
John Johansen
9efd526f6f Fix memory leak during dfa minimization.
Dfa minimization wasn't deleting the states it eliminated during the
minimization process, and hence leaking memory.
2010-03-13 02:23:23 -08:00
Steve Beattie
4ab92b62f5 Fix debug options so they don't go through the dfa engine, significantly
speeding up the time to emit debugging information.
2010-03-12 15:26:32 -08:00
Steve Beattie
bd1b72ad42 *whimper* last portiong of the strict-aliasing fix. 2010-03-12 15:20:22 -08:00
Steve Beattie
bccd45a22e Bah, managed to forget part of the last commit. The other half of fixing
the strict-aliasing bit, the portion that I don't like.
2010-03-12 15:16:06 -08:00
Steve Beattie
3b9b2158c1 Fix strict aliasing issue that triggered a bug in the parser_symtab unit
tests. I don't like the solution because it exposes a data structure
definition outside of the only file that should know it's layout.

Also, fixed the Makefile to fail the build when one of the unit test
programs fails. :-(
2010-03-12 14:41:58 -08:00
Steve Beattie
2a0df39961 Ease memory usage by collating rules in string form rather than as Rule
objects. Add randomly generating profile flags.
2010-03-12 03:05:25 -08:00
1215 changed files with 17062 additions and 97227 deletions

165
.bzrignore Normal file
View File

@@ -0,0 +1,165 @@
parser/po/*.mo
parser/af_names.h
parser/cap_names.h
parser/tst_misc
parser/tst_regex
parser/tst_symtab
parser/tst_variable
parser/parser_lex.c
parser/parser_version.h
parser/parser_yacc.c
parser/parser_yacc.h
parser/pod2htm*.tmp
parser/*.7
parser/*.5
parser/*.8
parser/*.7.html
parser/*.5.html
parser/*.8.html
parser/common
parser/apparmor_parser
parser/libapparmor_re/regexp.cc
parser/techdoc.aux
parser/techdoc.log
parser/techdoc.pdf
parser/techdoc.toc
libraries/libapparmor/Makefile
libraries/libapparmor/Makefile.in
libraries/libapparmor/aclocal.m4
libraries/libapparmor/audit.log
libraries/libapparmor/autom4te.cache
libraries/libapparmor/compile
libraries/libapparmor/config.guess
libraries/libapparmor/config.log
libraries/libapparmor/config.status
libraries/libapparmor/config.sub
libraries/libapparmor/configure
libraries/libapparmor/depcomp
libraries/libapparmor/install-sh
libraries/libapparmor/libtool
libraries/libapparmor/ltmain.sh
libraries/libapparmor/missing
libraries/libapparmor/ylwrap
libraries/libapparmor/doc/Makefile
libraries/libapparmor/doc/Makefile.in
libraries/libapparmor/doc/*.2
libraries/libapparmor/src/.deps
libraries/libapparmor/src/.libs
libraries/libapparmor/src/Makefile
libraries/libapparmor/src/Makefile.in
libraries/libapparmor/src/af_protos.h
libraries/libapparmor/src/change_hat.lo
libraries/libapparmor/src/grammar.lo
libraries/libapparmor/src/libaalogparse.lo
libraries/libapparmor/src/libimmunix_warning.lo
libraries/libapparmor/src/scanner.lo
libraries/libapparmor/src/libapparmor.la
libraries/libapparmor/src/libimmunix.la
libraries/libapparmor/src/grammar.c
libraries/libapparmor/src/grammar.h
libraries/libapparmor/src/scanner.c
libraries/libapparmor/src/scanner.h
libraries/libapparmor/src/tst_aalogmisc
libraries/libapparmor/swig/Makefile
libraries/libapparmor/swig/Makefile.in
libraries/libapparmor/swig/perl/LibAppArmor.bs
libraries/libapparmor/swig/perl/LibAppArmor.pm
libraries/libapparmor/swig/perl/Makefile
libraries/libapparmor/swig/perl/Makefile.PL
libraries/libapparmor/swig/perl/Makefile.in
libraries/libapparmor/swig/perl/Makefile.perl
libraries/libapparmor/swig/perl/blib
libraries/libapparmor/swig/perl/libapparmor_wrap.c
libraries/libapparmor/swig/perl/pm_to_blib
libraries/libapparmor/swig/python/Makefile
libraries/libapparmor/swig/python/Makefile.in
libraries/libapparmor/swig/python/setup.py
libraries/libapparmor/swig/ruby/Makefile
libraries/libapparmor/swig/ruby/Makefile.in
libraries/libapparmor/testsuite/.deps
libraries/libapparmor/testsuite/.libs
libraries/libapparmor/testsuite/Makefile
libraries/libapparmor/testsuite/Makefile.in
libraries/libapparmor/testsuite/libaalogparse.log
libraries/libapparmor/testsuite/libaalogparse.sum
libraries/libapparmor/testsuite/site.exp
libraries/libapparmor/testsuite/test_multi.multi
libraries/libapparmor/testsuite/config/Makefile
libraries/libapparmor/testsuite/config/Makefile.in
libraries/libapparmor/testsuite/lib/Makefile
libraries/libapparmor/testsuite/lib/Makefile.in
libraries/libapparmor/testsuite/libaalogparse.test/Makefile
libraries/libapparmor/testsuite/libaalogparse.test/Makefile.in
libraries/libapparmor/testsuite/test_multi/out
changehat/mod_apparmor/.libs
changehat/mod_apparmor/common
changehat/pam_apparmor/common
changehat/tomcat_apparmor/common
utils/common
utils/*.8
utils/*.8.html
utils/*.5
utils/*.5.html
utils/*.tmp
utils/po/*.mo
tests/regression/apparmor/access
tests/regression/apparmor/changehat
tests/regression/apparmor/changehat_fail
tests/regression/apparmor/changehat_fork
tests/regression/apparmor/changehat_misc
tests/regression/apparmor/changehat_misc2
tests/regression/apparmor/changehat_pthread
tests/regression/apparmor/changehat_twice
tests/regression/apparmor/changehat_wrapper
tests/regression/apparmor/changeprofile
tests/regression/apparmor/chdir
tests/regression/apparmor/chgrp
tests/regression/apparmor/chmod
tests/regression/apparmor/chown
tests/regression/apparmor/clone
tests/regression/apparmor/deleted
tests/regression/apparmor/env_check
tests/regression/apparmor/environ
tests/regression/apparmor/exec
tests/regression/apparmor/exec_qual
tests/regression/apparmor/exec_qual2
tests/regression/apparmor/fchdir
tests/regression/apparmor/fchgrp
tests/regression/apparmor/fchmod
tests/regression/apparmor/fchown
tests/regression/apparmor/fork
tests/regression/apparmor/link
tests/regression/apparmor/link_subset
tests/regression/apparmor/mkdir
tests/regression/apparmor/mmap
tests/regression/apparmor/mount
tests/regression/apparmor/named_pipe
tests/regression/apparmor/net_raw
tests/regression/apparmor/open
tests/regression/apparmor/openat
tests/regression/apparmor/pipe
tests/regression/apparmor/ptrace
tests/regression/apparmor/ptrace_helper
tests/regression/apparmor/pwrite
tests/regression/apparmor/readdir
tests/regression/apparmor/rename
tests/regression/apparmor/rw
tests/regression/apparmor/swap
tests/regression/apparmor/symlink
tests/regression/apparmor/syscall_chroot
tests/regression/apparmor/syscall_mknod
tests/regression/apparmor/syscall_mlockall
tests/regression/apparmor/syscall_ptrace
tests/regression/apparmor/syscall_reboot
tests/regression/apparmor/syscall_setdomainname
tests/regression/apparmor/syscall_sethostname
tests/regression/apparmor/syscall_setpriority
tests/regression/apparmor/syscall_setscheduler
tests/regression/apparmor/syscall_sysctl
tests/regression/apparmor/sysctl_proc
tests/regression/apparmor/tcp
tests/regression/apparmor/unix_fd_client
tests/regression/apparmor/unix_fd_server
tests/regression/apparmor/unlink
tests/regression/apparmor/xattrs
tests/regression/apparmor/coredump

View File

@@ -1,5 +1,4 @@
#
# $Id$
#
OVERRIDE_TARBALL=yes
@@ -17,22 +16,44 @@ DIRS=parser \
common \
tests
RELEASE_DIR=apparmor-${VERSION}-${REPO_VERSION}
REPO_URL?=lp:apparmor/2.6
# alternate possibilities to export from
#REPO_URL=.
#REPO_URL="bzr+ssh://bazaar.launchpad.net/~sbeattie/+junk/apparmor-dev/"
RELEASE_DIR=apparmor-${VERSION}
__SETUP_DIR?=.
.PHONY: tarball
tarball: _dist
tarball: clean
REPO_VERSION=`$(value REPO_VERSION_CMD)` ; \
make export_dir __EXPORT_DIR=${RELEASE_DIR} __REPO_VERSION=$${REPO_VERSION} ; \
make setup __SETUP_DIR=${RELEASE_DIR} ; \
tar cvzf ${RELEASE_DIR}.tar.gz ${RELEASE_DIR}
${RELEASE_DIR}:
mkdir ${RELEASE_DIR}
.PHONY: snapshot
snapshot: clean
REPO_VERSION=`$(value REPO_VERSION_CMD)` ; \
SNAPSHOT_DIR=apparmor-${VERSION}~$${REPO_VERSION} ;\
make export_dir __EXPORT_DIR=$${SNAPSHOT_DIR} __REPO_VERSION=$${REPO_VERSION} ; \
make setup __SETUP_DIR=$${SNAPSHOT_DIR} ; \
tar cvzf $${SNAPSHOT_DIR}.tar.gz $${SNAPSHOT_DIR} ;
.PHONY: _dist
.PHONY: ${DIRS}
_dist: clean ${DIRS}
${DIRS}: ${RELEASE_DIR}
svn export -r $(REPO_VERSION) $(REPO_URL)/$@ $(RELEASE_DIR)/$@ ; \
.PHONY: export_dir
export_dir:
mkdir $(__EXPORT_DIR)
/usr/bin/bzr export --per-file-timestamps -r $(__REPO_VERSION) $(__EXPORT_DIR) $(REPO_URL)
echo "$(REPO_URL) $(__REPO_VERSION)" > $(__EXPORT_DIR)/common/.stamp_rev
.PHONY: clean
clean:
-rm -rf ${RELEASE_DIR}
-rm -rf ${RELEASE_DIR} ./apparmor-${VERSION}~*
.PHONY: setup
setup:
cd $(__SETUP_DIR)/libraries/libapparmor && ./autogen.sh
.PHONY: tag
tag:
bzr tag apparmor_${VERSION}

181
README Normal file
View File

@@ -0,0 +1,181 @@
------------
Introduction
------------
AppArmor protects systems from insecure or untrusted processes by
running them in restricted confinement, while still allowing processes
to share files, exercise privilege and communicate with other processes.
AppArmor is a Mandatory Access Control (MAC) mechanism which uses the
Linux Security Module (LSM) framework. The confinement's restrictions
are mandatory and are not bound to identity, group membership, or object
ownership. The protections provided are in addition to the kernel's
regular access control mechanisms (including DAC) and can be used to
restrict the superuser.
The AppArmor kernel module and accompanying user-space tools are
available under the GPL license (the exception is the libapparmor
library, available under the LGPL license, which allows change_hat(2)
and change_profile(2) to be used by non-GPL binaries).
For more information, you can read the techdoc.pdf (available after
building the parser) and by visiting the http://apparmor.net/ web
site.
-------------
Source Layout
-------------
AppArmor consists of several different parts:
changehat/ source for using changehat with Apache, PAM and Tomcat
common/ common makefile rules
desktop/ empty
kernel-patches/ compatibility patches for various kernel versions
libraries/ libapparmor source and language bindings
parser/ source for parser/loader and corresponding documentation
profiles/ configuration files, reference profiles and abstractions
tests/ regression and stress testsuites
utils/ high-level utilities for working with AppArmor
--------------------------------------
Important note on AppArmor kernel code
--------------------------------------
While most of the kernel AppArmor code has been accepted in the
upstream Linux kernel, a few important pieces were not included. These
missing pieces unfortunately are important bits for AppArmor userspace
and kernel interaction; therefore we have included compatibility
patches in the kernel-patches/ subdirectory, versioned by upstream
kernel (2.6.37 patches should apply cleanly to 2.6.38 source).
Without these patches applied to the kernel, the AppArmor userspace
will not function correctly.
------------------------------------------
Building and Installing AppArmor Userspace
------------------------------------------
To build and install AppArmor userspace on your system, build and install in
the following order.
libapparmor:
$ cd ./libraries/libapparmor
$ sh ./autogen.sh
$ sh ./configure --prefix=/usr --with-perl # see below
$ make
$ make check
[optional arguments to libapparmor's configure include --with-python
and --with-ruby, to generate python and ruby bindings to libapparmor,
respectively.]
Utilities:
$ cd utils
$ make
$ make install
parser:
$ cd parser
$ make
$ make tests # not strictly necessary as they are run during the
# build by default
$ make install
Apache mod_apparmor:
$ cd changehat/mod_apparmor
$ make # depends on libapparmor having been built first
$ make install
PAM AppArmor:
$ cd changehat/pam_apparmor
$ make # depends on libapparmor having been built first
$ make install
Profiles:
$ cd profiles
$ make
$ make check # depends on the parser having been built first
$ make install
-------------------
AppArmor Testsuites
-------------------
A number of testsuites are in the AppArmor sources. Most have documentation on
usage and how to update and add tests. Below is a quick overview of their
location and how to run them.
Regression tests
----------------
For details on structure and adding tests, see
tests/regression/apparmor/README.
To run:
$ cd tests/regression/apparmor (requires root)
$ make
$ sudo make tests
$ sudo bash open.sh -r # runs and saves the last testcase from open.sh
Parser tests
------------
For details on structure and adding tests, see parser/tst/README.
To run:
$ cd parser/tst
$ make
$ make tests
Libapparmor
-----------
For details on structure and adding tests, see libraries/libapparmor/README.
$ cd libraries/libapparmor
$ make check
Profile checks
--------------
A basic consistency check to ensure that the parser and aa-logprof parse
successfully the current set of shipped profiles. The system or other
parser and logprof can be passed in by overriding the PARSER and LOGPROF
variables.
$ cd profiles
$ make && make check
Stress Tests
------------
To run AppArmor stress tests:
$ make all
Use these:
$ ./change_hat
$ ./child
$ ./kill.sh
$ ./open
$ ./s.sh
Or run all at once:
$ ./stress.sh
Please note that the above will stress the system so much it may end up
invoking the OOM killer.
To run parser stress tests (requires /usr/bin/ruby):
$ ./stress.sh
(see stress.sh -h for options)
-----------------------------------------------
Building and Installing AppArmor Kernel Patches
-----------------------------------------------
TODO

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 2004, 2005 NOVELL (All rights reserved)
#
@@ -42,16 +41,15 @@ APXS:=$(shell if [ -x "/usr/sbin/apxs2" ] ; then \
fi )
APXS_INSTALL_DIR=$(shell ${APXS} -q LIBEXECDIR)
DESTDIR=
LIBAPPARMOR_FLAGS=$(shell if [ -f /usr/lib/libapparmor.so -o -f /usr/lib64/libapparmor.so ] ; then \
echo -lapparmor ; \
else \
echo -DUSE_COMPAT_IMMUNIX_H -limmunix ;\
fi)
# Need to pass -Wl twice here to get past both apxs2 and libtool, as
# libtool will add the path to the RPATH of the library if passed -L/some/path
LIBAPPARMOR_FLAGS=-I../../libraries/libapparmor/src -Wl,-Wl,-L../../libraries/libapparmor/src/.libs
LDLIBS=-lapparmor
all: $(TARGET) ${MANPAGES} ${HTMLMANPAGES}
%.so: %.c
${APXS} ${LIBAPPARMOR_FLAGS} -c $<
${APXS} ${LIBAPPARMOR_FLAGS} -c $< ${LDLIBS}
mv .libs/$@ .
.PHONY: install

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 2004, 2005 NOVELL (All rights reserved)
#

View File

@@ -1,6 +1,5 @@
#!/usr/bin/perl -w
#
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 2004, 2005 NOVELL (All rights reserved)
#

View File

@@ -1,5 +1,4 @@
/* $Id$
*
/*
* Copyright (c) 2004, 2005, 2006 NOVELL (All rights reserved)
*
* The mod_apparmor module is licensed under the terms of the GNU
@@ -24,11 +23,7 @@
#include "apr_strings.h"
#include "apr_lib.h"
#ifndef USE_COMPAT_IMMUNIX_H
#include <sys/apparmor.h>
#else
#include <sys/immunix.h>
#endif
#include <apparmor.h>
#include <unistd.h>
/* #define DEBUG */

View File

@@ -1,96 +1,125 @@
# $Id$
# This publication is intellectual property of Novell Inc. Its contents
# can be duplicated, either in part or in whole, provided that a copyright
# label is visibly located on each copy.
# This publication is intellectual property of Novell Inc. and Canonical
# Ltd. Its contents can be duplicated, either in part or in whole, provided
# that a copyright label is visibly located on each copy.
#
# All information found in this book has been compiled with utmost
# attention to detail. However, this does not guarantee complete accuracy.
# Neither SUSE LINUX GmbH, the authors, nor the translators shall be held
# liable for possible errors or the consequences thereof.
# Neither SUSE LINUX GmbH, Canonical Ltd, the authors, nor the translators
# shall be held liable for possible errors or the consequences thereof.
#
# Many of the software and hardware descriptions cited in this book
# are registered trademarks. All trade names are subject to copyright
# restrictions and may be registered trade marks. SUSE LINUX GmbH
# essentially adheres to the manufacturer's spelling.
# and Canonical Ltd. essentially adhere to the manufacturer's spelling.
#
# Names of products and trademarks appearing in this book (with or without
# specific notation) are likewise subject to trademark and trade protection
# laws and may thus fall under copyright restrictions.
#
# Please direct suggestions and comments to apparmor-general@forge.novell.com.
=pod
=head1 NAME
mod_apparmor - fine-grained AppArmor confinement for apache
mod_apparmor - fine-grained AppArmor confinement for Apache
=head1 DESCRIPTION
An AppArmor profile applies to an executable program; if a portion of
the program needs different access permissions than other portions,
the program can "change hats" via change_hat(2) to a different role,
also known as a subprofile. The mod_apparmor apache module uses the
change_hat(2) mechanism to offer more fine-grained confinement of dynamic
elements within apache such as individual php and perl scripts, while
the program can "change hats" via aa_change_hat(2) to a different role,
also known as a subprofile. The mod_apparmor Apache module uses the
aa_change_hat(2) mechanism to offer more fine-grained confinement of dynamic
elements within Apache such as individual php and perl scripts, while
still allowing the performance benefits of using mod_php and mod_perl.
To use mod_apparmor with apache, ensure that mod_apparmor is configured to
be loaded into apache, either via yast or manual editing of the httpd(8)
configuration files, and restart apache. Make sure that apparmor is also
functioning.
To use mod_apparmor with Apache, ensure that mod_apparmor is configured to
be loaded into Apache, either via a2enmod, yast or manual editing of the
apache2(8)/httpd(8) configuration files, and restart Apache. Make sure that
apparmor is also functioning.
Once mod_apparmor is loaded within apache, all requests to apache will
Once mod_apparmor is loaded within Apache, all requests to Apache will
cause mod_apparmor to attempt to change into a hat named by the URI
(e.g. /app/some.cgi). If no such hat is found, it will fall back to
attempting to use the hat DEFAULT_URI; if that also does not exist,
it will fall back to using the global apache profile. Most static web
it will fall back to using the global Apache profile. Most static web
pages can simply make use of the DEFAULT_URI hat.
However, defining hats for every URI/URL would become tedious, so there
are a couple of configuration options that mod_apparmor supports:
Additionally, before any requests come in to Apache, mod_apparmor
will attempt to change hat into the HANDLING_UNTRUSTED_INPUT hat.
mod_apparmor will attempt to use this hat while Apache is doing the
initial parsing of a given http request, before its given to a specific
handler (like mod_php) for processing.
Because defining hats for every URI/URL often becomes tedious, mod_apparmor
provides the AAHatName and AADefaultHatName Apache configuration options.
=over 4
=item B<AAHatName>
AAHatName allows you to specify a hat to be used for a given apache
directory or location directive (see the apache documenation for more
AAHatName allows you to specify a hat to be used for a given Apache
E<lt>DirectoryE<gt>, E<lt>DirectoryMatch>, E<lt>LocationE<gt> or
E<lt>LocationMatchE<gt> directive (see the Apache documenation for more
details). Note that mod_apparmor behavior can become confused if
directory and location directives are intermingled; it's preferred to
stick to one type of directive. If the hat specified by AAHatName does
not exist in the apache profile, then it falls back to the behavior
above.
E<lt>Directory*E<gt> and E<lt>Location*E<gt> directives are intermingled
and it is recommended to use one type of directive. If the hat specified by
AAHatName does not exist in the Apache profile, then it falls back to the
behavior described above.
=item B<AADefaultHatName>
AADefaultHatName allows you to specify a default hat to be used for
vhosts and other apache server directives, so that you can have
different defaults for different virtual hosts. This can be overridden
by an AAHatName directive. If the AADefaultHatName hat does not exist,
it falls back to the behavior described above.
virtual hosts and other Apache server directives, so that you can have
different defaults for different virtual hosts. This can be overridden by
the AAHatName directive and is checked for only if there isn't a matching
AAHatName or hat named by the URI. If the AADefaultHatName hat does not
exist, it falls back to the DEFAULT_URI hat if it exists (as described
above).
=back
Additionally, before any requests come in to apache, mod_apparmor
will attempt to change hat into the HANDLING_UNTRUSTED_INPUT hat.
mod_apparmor will attempt to use this hat while apache is doing the
initial parsing of a given http request, before its given to a specific
handler (like mod_php) for processing.
=head1 URI REQUEST SUMMARY
When profiling with mod_apparmor, it is helpful to keep the following order
of operations in mind:
On each URI request, mod_apparmor will first aa_change_hat(2) into
^HANDLING_UNTRUSTED_INPUT, if it exists.
Then, after performing the initial parsing of the request, mod_apparmor
will:
=over 2
1. try to aa_change_hat(2) into a matching AAHatName hat if it exists and
applies, otherwise it will
2. try to aa_change_hat(2) into the URI itself, otherwise it will
3. try to aa_change_hat(2) into an AADefaultHatName hat if it has been defined
for the server/vhost, otherwise it will
4. try to aa_change_hat(2) into the DEFAULT_URI hat, if it exists, otherwise it
will
5. fall back to the global Apache policy
=back
=head1 BUGS
mod_apparmor() currently only supports apache2, and has only been tested
with the prefork MPM configuration -- threaded configurations of apache
with the prefork MPM configuration -- threaded configurations of Apache
may not work correctly.
There are likely other bugs lurking about; if you find any, please report
them to bugzilla at L<http://bugzilla.novell.com>.
them at L<http://https://bugs.launchpad.net/apparmor/+filebug>.
=head1 SEE ALSO
apparmor(7), subdomain.conf(5), apparmor_parser(8), and
L<http://forge.novell.com/modules/xfmod/project/?apparmor>.
apparmor(7), subdomain.conf(5), apparmor_parser(8), aa_change_hat(2) and
L<http://wiki.apparmor.net>.
=cut

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 1999, 2004, 2005 NOVELL (All rights reserved)
#
@@ -27,8 +26,8 @@ common/Make.rules: $(COMMONDIR)/Make.rules
ln -sf $(COMMONDIR) .
endif
EXTRA_CFLAGS=$(CFLAGS) -fPIC -shared -Wall
LINK_FLAGS=-Xlinker -x
EXTRA_CFLAGS=$(CFLAGS) -fPIC -shared -Wall -I../../libraries/libapparmor/src/
LINK_FLAGS=-Xlinker -x -L../../libraries/libapparmor/src/.libs
LIBS=-lpam -lapparmor
OBJECTS=${NAME}.o get_options.o
@@ -42,7 +41,7 @@ $(NAME).so: ${OBJECTS}
# need some better way of determining this
DESTDIR=/
SECDIR=${DESTDIR}/lib/security
SECDIR ?= ${DESTDIR}/lib/security
.PHONY: install
install: $(NAME).so

View File

@@ -1,6 +1,4 @@
/*
* $Id$
*
* Written by Steve Beattie <sbeattie@suse.de> 2006/10/25
*
* Modeled after the option parsing code in pam_unix2 by:

View File

@@ -1,10 +1,14 @@
/* pam_apparmor module */
/*
* $Id$
* Copyright (c) 2006
* NOVELL (All rights reserved)
*
* Copyright (c) 2010
* Canonical, Ltd. (All rights reserved)
*
* Written by Jesse Michael <jmichael@suse.de> 2006/08/24
* and Steve Beattie <sbeattie@suse.de> 2006/10/25
* and Steve Beattie <sbeattie@ubuntu.com> 2006/10/25
*
* Based off of pam_motd by:
* Ben Collins <bcollins@debian.org> 2005/10/04
@@ -23,7 +27,7 @@
#include <grp.h>
#include <syslog.h>
#include <errno.h>
#include <sys/apparmor.h>
#include <apparmor.h>
#include <security/pam_ext.h>
#include <security/pam_modutil.h>
@@ -165,8 +169,8 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags,
* stop attempting to use change_hat */
goto nodefault;
break;
case EPERM: /* Disable when ECHILD patch gets accepted */
case EACCES:
case ENOENT:
/* failed to change into attempted hat, so we'll
* jump back out and try the next one */
break;

View File

@@ -1,8 +1,6 @@
/* pam_apparmor module */
/*
* $Id$
*
* Written by Jesse Michael <jmichael@suse.de> 2006/08/24
* and Steve Beattie <sbeattie@suse.de> 2006/10/25
*

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 1999, 2004, 2005, 2006 NOVELL (All rights reserved)
#

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 2006 NOVELL (All rights reserved)
#

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 1999, 2004, 2005, 2006 NOVELL (All rights reserved)
#

View File

@@ -4,8 +4,8 @@
<property name="jni_src" location="src/jni_src"/>
<property name="build" location="build"/>
<property name="install_root" location="/"/>
<property name="catalina_home" location="/usr/share/tomcat5"/>
<property name="lib" location="lib"/>
<property name="catalina_home" location="/usr/share/tomcat6"/>
<property name="lib" location="/usr/share/tomcat6/bin"/>
<property name="install_lib" value="/lib"/>
<property name="dist" location="dist"/>
<property name="jarfile" location="${dist}/${ant.project.name}.jar"/>
@@ -18,10 +18,11 @@
<include name="**/*.jar"/>
</fileset>
<fileset id="tomcat.jars" dir="${catalina_home}/server/lib">
<fileset id="tomcat.jars" dir="${catalina_home}/lib">
<include name="**/*.jar"/>
</fileset>
<fileset id="servlet.jars" dir="${catalina_home}/common/lib">
<fileset id="servlet.jars" dir="${catalina_home}/lib">
<include name="**/*.jar"/>
</fileset>
@@ -80,9 +81,9 @@
</target>
<target name="install_jar" depends="jni_so" description="Install jar file">
<mkdir dir="${install_root}/${catalina_home}/server/lib/"/>
<copy file="${jarfile}" tofile="${install_root}/${catalina_home}/server/lib/${ant.project.name}.jar"/>
<chmod perm="644" file="${install_root}/${catalina_home}/server/lib/${ant.project.name}.jar"/>
<mkdir dir="${install_root}/${catalina_home}/lib/"/>
<copy file="${jarfile}" tofile="${install_root}/${catalina_home}/lib/${ant.project.name}.jar"/>
<chmod perm="644" file="${install_root}/${catalina_home}/lib/${ant.project.name}.jar"/>
</target>
<target name="clean" description="Remove build and dist directories">

View File

@@ -13,7 +13,7 @@
#include "jni.h"
#include <errno.h>
#include "sys/apparmor.h"
#include <apparmor.h>
#include "com_novell_apparmor_JNIChangeHat.h"
/* c intermediate lib call for Java -> JNI -> c library execution of the change_hat call */

View File

@@ -4,7 +4,7 @@ LIB = lib/
LIBDIR = /usr/${LIB}
INCLUDE = ${LIBDIR}/jvm/java/include
CFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wl,-soname,$@.${SO_VERS} -pipe -fpic -D_REENTRANT
INCLUDES = -I$(INCLUDE) -I$(INCLUDE)/linux
INCLUDES = -I$(INCLUDE) -I$(INCLUDE)/linux -I$(TOP)/../../../libraries/libapparmor/src/
CLASSFILE = ${CLASSPATH}/com/novell/apparmor/${JAVA_CLASSNAME}.class
DESTDIR = ${TOP}/dist
SO_VERS = 1
@@ -20,7 +20,7 @@ ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h: ${CLASSFILE}
javah -jni -classpath ${CLASSPATH} com.novell.apparmor.${JAVA_CLASSNAME}
${TARGET}.so: ${JAVA_CLASSNAME}.c ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h
gcc ${INCLUDES} ${CFLAGS} -shared -o ${TARGET}.so ${JAVA_CLASSNAME}.c -lapparmor
gcc ${INCLUDES} ${CFLAGS} -shared -o ${TARGET}.so ${JAVA_CLASSNAME}.c -L$(TOP)/../../../libraries/libapparmor/src/.libs -lapparmor
install: ${TARGET}.so
install -d $(DESTDIR)/${LIB} $(DESTDIR)${LIBDIR}

View File

@@ -1,4 +1,3 @@
# $Id$
# ----------------------------------------------------------------------
# Copyright (c) 2006 NOVELL (All rights reserved)
#

View File

@@ -1,12 +1,19 @@
# $Id$
# ------------------------------------------------------------------
#
# Copyright (C) 2002-2005 Novell/SUSE
# Copyright (c) 1999-2008 NOVELL (All rights reserved)
# Copyright 2009-2010 Canonical Ltd.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License published by the Free Software Foundation.
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
# License published by the Free Software Foundation.
#
# 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 Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------
#
# The including makefile needs to define LANG, which lists the lang
@@ -14,7 +21,7 @@
# exist
LOCALEDIR=/usr/share/locale
XGETTEXT_ARGS=--copyright-holder="NOVELL, Inc." --msgid-bugs-address=apparmor-general@forge.novell.com -d ${NAME}
XGETTEXT_ARGS=--copyright-holder="NOVELL, Inc." --msgid-bugs-address=apparmor@lists.ubuntu.com -d ${NAME}
# When making the .pot file, it's expected that the parent Makefile will
# pass in the list of sources in the SOURCES variable

View File

@@ -1,7 +1,7 @@
# $Id$
# ------------------------------------------------------------------
#
# Copyright (C) 2002-2005 Novell/SUSE
# Copyright (C) 2010 Canonical, Ltd.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of version 2 of the GNU General Public
@@ -25,7 +25,7 @@
# directories
DISTRIBUTION=AppArmor
VERSION=2.5
VERSION=$(shell cat common/Version)
# OVERRIDABLE variables
# Set these variables before including Make.rules to change its behavior
@@ -48,16 +48,21 @@ BUILDDIR=$(shell if [ -d "${TESTBUILDDIR}" ] ; then \
echo "/tmp/${NAME}" ; \
fi ;)
endif
RPMHOSTVENDOR=$(shell rpm --eval "%{_host_vendor}")
ifndef DISTRO
DISTRO=$(shell if [ -f /etc/slackware-version ] ; then \
echo slackware ; \
elif [ -f /etc/debian_version ] ; then \
echo debian ;\
elif [ ${RPMHOSTVENDOR} = "suse" ] ; then \
echo suse ;\
elif [ ${RPMHOSTVENDOR} = "redhat" ] ; then \
echo rhel4 ;\
elif which rpm > /dev/null ; then \
if [ "$(rpm --eval '0%{?suse_version}')" != "0" ] ; then \
echo suse ;\
elif [ "$(rpm --eval '%{_host_vendor}')" = redhat ] ; then \
echo rhel4 ;\
elif [ "$(rpm --eval '0%{?fedora}')" != "0" ] ; then \
echo rhel4 ;\
else \
echo unknown ;\
fi ;\
else \
echo unknown ;\
fi)
@@ -70,20 +75,7 @@ RPMARG=--define "_topdir $(BUILDDIR:/=)" \
$(shell [ -d ${BUILDDIR}/BUILDROOT ] && echo --define \"buildroot $(BUILDDIR:/=)/BUILDROOT\") \
$(shell [ -n "${DISTRO}" ] && echo --define \"distro ${DISTRO}\")
#REPO_VERSION=$(shell if [ -x /usr/bin/svn ] ; then \
# if ! /usr/bin/svn info -r HEAD . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; then \
# /usr/bin/svn info . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; \
# fi ; \
# fi)
REPO_VERSION=$(shell if [ -x /usr/bin/svn ] ; then \
/usr/bin/svn info . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; \
fi)
REPO_URL=$(shell if [ -x /usr/bin/svn ] ; then \
/usr/bin/svn info . 2> /dev/null | grep "^URL:" | sed "s/^URL: //" ; \
fi)
COMMON_REPO_URL=$(shell if [ -x /usr/bin/svn ] ; then \
/usr/bin/svn info $(COMMONDIR) 2> /dev/null | grep "^URL:" | sed "s/^URL: //" ; \
fi)
REPO_VERSION_CMD=([ -x /usr/bin/bzr ] && /usr/bin/bzr version-info . 2> /dev/null || awk '{ print "revno: "$2 }' common/.stamp_rev) | awk '/^revno:/ { print $2 }'
ifdef EXTERNAL_PACKAGE
RPMARG+=--define "_sourcedir $(shell pwd)"
@@ -92,30 +84,14 @@ endif
ifndef SPECFILE
SPECFILE = $(NAME).spec
endif
RELEASE = $(shell rpm -q --specfile --define "_sourcedir ." ${RPMARG} --qf "%{RELEASE}" ${SPECFILE})
RELEASE_DIR = $(NAME)-$(VERSION)
TARBALL = $(NAME)-$(VERSION)-${REPO_VERSION}.tar.gz
TAR = /bin/tar czvp -h --exclude .svn --exclude CVS --exclude .cvsignore --exclude ${TARBALL} --exclude ${RELEASE_DIR}/${RELEASE_DIR} $(shell test -f ${NAME}.exclude && echo "-X ${NAME}.exclude")
TAR = /bin/tar czvp -h --exclude .svn --exclude .bzr --exclude .bzrignore --exclude ${RELEASE_DIR}/${RELEASE_DIR} $(shell test -f ${NAME}.exclude && echo "-X ${NAME}.exclude")
LDCONFIG = /sbin/ldconfig
CVSPKG_VERSION=$(shell rpm -q --specfile --define "_sourcedir ." ${RPMARG} ${SPECFILE} | head -1 | tr "." "_")
RPMSUBDIRS=SOURCES SPECS BUILD BUILDROOT SRPMS RPMS/i386 RPMS/i586 \
RPMS/i686 RPMS/athlon RPMS/noarch RPMS/x86_64
BUILDRPMSUBDIRS=$(foreach subdir, $(RPMSUBDIRS), $(BUILDDIR:/=)/$(subdir))
.PHONY: cvs_tag
cvs_tag:
cvs tag IMMUNIX-${CVSPKG_VERSION}
.PHONY: checkin
checkin:
if cvs -q up -d | grep -q "^\?" ; then echo "Hey! You have" \
"files in the directory you have not added into cvs."; exit 1; \
fi
cvs ci
make cvs_tag
ifdef EXTERNAL_PACKAGE
.PHONY: rpm
rpm: clean $(BUILDRPMSUBDIRS)
@@ -123,21 +99,25 @@ rpm: clean $(BUILDRPMSUBDIRS)
else
.PHONY: rpm
rpm: clean $(TARBALL) $(BUILDRPMSUBDIRS)
cp $(TARBALL) $(BUILDDIR)/SOURCES/
rpm: clean $(BUILDRPMSUBDIRS)
__REPO_VERSION=`$(value REPO_VERSION_CMD)` ; \
__TARBALL=$(NAME)-$(VERSION)-$${__REPO_VERSION}.tar.gz ; \
make $${__TARBALL} ; \
cp $${__TARBALL} $(BUILDDIR)/SOURCES/
cp ${SPECFILE} $(BUILDDIR)/SPECS/
rpmbuild -ba ${RPMARG} ${SPECFILE}
.PHONY: ${SPECFILE}
${SPECFILE}: ${SPECFILE}.in
__REPO_VERSION=`$(value REPO_VERSION_CMD)` ; \
sed -e "s/@@immunix_version@@/${VERSION}/g" \
-e "s/@@repo_version@@/${REPO_VERSION}/g" $< > $@
-e "s/@@repo_version@@/$${__REPO_VERSION}/g" $< > $@
${TARBALL}: clean ${SPECFILE}
%.tar.gz: clean ${SPECFILE}
-rm -rf $(RELEASE_DIR)
mkdir $(RELEASE_DIR)
$(TAR) . | tar xz -C $(RELEASE_DIR)
$(TAR) -f $@ $(RELEASE_DIR)
$(TAR) --exclude $@ . | tar xz -C $(RELEASE_DIR)
$(TAR) --exclude $@ -f $@ $(RELEASE_DIR)
rm -rf $(RELEASE_DIR)
ifndef OVERRIDE_TARBALL
@@ -145,15 +125,6 @@ ifndef OVERRIDE_TARBALL
tarball: clean $(TARBALL)
endif
.PHONY: dist
dist: clean $(SPECFILE)
-rm -rf $(RELEASE_DIR)
svn export -r $(REPO_VERSION) $(REPO_URL) $(RELEASE_DIR)
svn export $(COMMON_REPO_URL) $(RELEASE_DIR)/common
make -C $(RELEASE_DIR) $(SPECFILE) REPO_VERSION=${REPO_VERSION} COMMONDIR_EXISTS=false
$(TAR) -f $(TARBALL) $(RELEASE_DIR)
rm -rf $(RELEASE_DIR)
endif
.PHONY: version
@@ -161,6 +132,12 @@ endif
version:
rpm -q --define "_sourcedir ." ${RPMARG} --specfile ${SPECFILE}
.PHONY: repo_version
.SILENT: repo_version
repo_version:
$(value REPO_VERSION_CMD)
.PHONY: build_dir
build_dir: $(BUILDRPMSUBDIRS)
@@ -191,32 +168,33 @@ install_manpages: $(MANPAGES)
$(foreach dir, ${MANDIRS}, \
install -d ${DESTDIR}/${MANDIR}/man${dir} ; \
install -m 644 $(filter %.${dir}, ${MANPAGES}) ${DESTDIR}/${MANDIR}/man${dir}; \
$(foreach aa_page, $(filter %.${dir}, ${AA_MANPAGES}), \
ln -sf $(aa_page) ${DESTDIR}/${MANDIR}/man${dir}/${aa_page:%=aa-%};))
)
MAN_RELEASE="AppArmor ${VERSION}"
%.1: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=1 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=1 > $@
%.2: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=2 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=2 > $@
%.3: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=3 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=3 > $@
%.4: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=4 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=4 > $@
%.5: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=5 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=5 > $@
%.6: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=6 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=6 > $@
%.7: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=7 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=7 > $@
%.8: %.pod
$(POD2MAN) $< --release=NOVELL/SUSE --center=AppArmor --section=8 > $@
$(POD2MAN) $< --release=$(MAN_RELEASE) --center=AppArmor --section=8 > $@
%.1.html: %.pod
$(POD2HTML) --header --css apparmor.css --infile=$< --outfile=$@
@@ -242,43 +220,6 @@ install_manpages: $(MANPAGES)
%.8.html: %.pod
$(POD2HTML) --header --css apparmor.css --infile=$< --outfile=$@
# =====================
# Slackware poo
# =====================
.PHONY: slack
slack:
rm -rf ${BUILDDIR}
mkdir -p ${BUILDDIR}/install
make install DESTDIR=${BUILDDIR} DISTRO=slackware
# comment line is there so grep always has something to match
( echo "# install script pulled from ${SPECFILE}" ; rpm -q --specfile --define "_sourcedir ." ${RPMARG} --qf "%{POSTIN}\n" ${SPECFILE}) | grep -v "^(none)$$" >> ${BUILDDIR}/install/doinst.sh
( cd ${BUILDDIR} && makepkg -l y -c y -p ${PWD}/${NAME}-${VERSION}-${RELEASE}.tgz )
# =====================
# Debian poo
# =====================
.PHONY: deb
deb: ${TARBALL}
rm -rf ${BUILDDIR}
mkdir -p ${BUILDDIR}
tar -xvzf ${TARBALL} -C ${BUILDDIR}
( cd ${BUILDDIR}/${RELEASE_DIR} && sh -c "DEBFULLNAME='NOVELL, Inc' dh_make -e apparmor-general@forge.novell.com --library -f ~/svn/immunix/immunix/libimmunix/libimmunix-2.0.tar.gz << EOM \
\
EOM" )
make ${NAME}-deb -C ${BUILDDIR}/${RELEASE_DIR}
# ( cd ${BUILDDIR}/${RELEASE_DIR} && dpkg-buildpackage -b -sd -rfakeroot)
DEBIAN_DISTRO=stable
DEB_CHANGELOG_OUTPUT="${NAME} (${VERSION}-${RELEASE}) ${DEBIAN_DISTRO}; urgency=low\n\
\n * Automatically generated by the AppArmor Build System.\n\
\n -- AppArmor Development Team <apparmor-general@forge.novell.com> $(shell date -R)"
.PHONY: debian/changelog
debian/changelog:
echo -e ${DEB_CHANGELOG_OUTPUT} > $@
A2PS_ARGS=-Ec -g --line-numbers=1
ENSCRIPT_ARGS=-C -2jGr -f Courier6 -E
%.c.ps: %.c

1
common/Version Normal file
View File

@@ -0,0 +1 @@
2.6.1

View File

@@ -1,25 +0,0 @@
<oaf_info>
<oaf_server iid="OAFIID:AppArmorApplet_Factory" type="exe"
location="@LIBEXECDIR@/apparmorapplet">
<oaf_attribute name="repo_ids" type="stringv">
<item value="IDL:Bonobo/GenericFactory:1.0"/>
<item value="IDL:Bonobo/Unknown:1.0"/>
</oaf_attribute>
<oaf_attribute name="name" type="string" value="AppArmor Monitor Factory"/>
<oaf_attribute name="description" type="string" value="AppArmor Desktop Monitor factory"/>
</oaf_server>
<oaf_server iid="OAFIID:AppArmorApplet" type="factory"
location="OAFIID:AppArmorApplet_Factory">
<oaf_attribute name="repo_ids" type="stringv">
<item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
<item value="IDL:Bonobo/Control:1.0"/>
<item value="IDL:Bonobo/Unknown:1.0"/>
</oaf_attribute>
<oaf_attribute name="name" type="string" value="AppArmor Desktop Monitor"/>
<oaf_attribute name="description" type="string" value="AppArmor Desktop Monitor"/>
<oaf_attribute name="panel:category" type="string" value="Utilities"/>
<oaf_attribute name="panel:icon" type="string" value="apparmor_default.png"/>
</oaf_server>
</oaf_info>

View File

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

View File

@@ -1,236 +0,0 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View File

@@ -1,14 +0,0 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = po src pixmaps
EXTRA_DIST = \
autogen.sh \
AppArmor_Monitor_Factory.server.in
serverdir = $(libdir)/bonobo/servers
server_in_files = AppArmor_Monitor_Factory.server.in
server_DATA = AppArmor_Monitor_Factory.server
AppArmor_Monitor_Factory.server:
sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" < AppArmor_Monitor_Factory.server.in > AppArmor_Monitor_Factory.server

View File

@@ -1,48 +0,0 @@
# norootforbuild
Name: apparmorapplet-gnome
Version: 0.9
Release: 1
URL: http://forge.novell.com/modules/xfmod/project/?apparmor
BuildRequires: gnome-common gnome-desktop-devel gnome-panel-devel
%if %suse_version > 1010
BuildRequires: dbus-1-glib-devel
%else
BuildRequires: dbus-1-devel dbus-1-glib
%endif
Group: System/GUI/GNOME
Requires: apparmor-dbus
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
Summary: An AppArmor event notification applet for GNOME
License: GPL
%description
This taskbar applet receives AppArmor events over DBUS, and notifies
the user when AppArmor prevents an application from functioning.
%prep
%setup -q
%build
autoreconf -f -i
%configure --prefix=%{_prefix} --libexecdir=%{_prefix}/lib/apparmorapplet
make %{?jobs:-j%jobs}
%install
%makeinstall
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr (-, root, root)
%doc AUTHORS COPYING ChangeLog NEWS README
%{_libdir}/bonobo/servers/*.server
%{_prefix}/lib/apparmorapplet
%{_datadir}/pixmaps/*
%changelog
* Wed Jul 25 2007 - mbarringer@suse.de
- Initial package creation

View File

@@ -1,159 +0,0 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
DIE=0
if [ -n "$GNOME2_DIR" ]; then
ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS"
LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH"
PATH="$GNOME2_DIR/bin:$PATH"
export PATH
export LD_LIBRARY_PATH
fi
(test -f $srcdir/configure.in) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level package directory"
exit 1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`autoconf' installed."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && {
(intltoolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`intltool' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && {
(xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`xml-i18n-toolize' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtool' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
}
(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && {
(grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \
(glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`glib' installed."
echo "You can get it from: ftp://ftp.gtk.org/pub/gtk"
DIE=1
}
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
NO_AUTOMAKE=yes
}
# if no automake, don't bother testing for aclocal
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
echo "installed doesn't appear recent enough."
echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "**Warning**: I am going to run \`configure' with no arguments."
echo "If you wish to pass any to it, please specify them on the"
echo \`$0\'" command line."
echo
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
for coin in `find $srcdir -name configure.in -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running intltoolize..."
intltoolize --copy --force --automake
fi
if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then
echo "Running xml-i18n-toolize..."
xml-i18n-toolize --copy --force --automake
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
if test -z "$NO_LIBTOOLIZE" ; then
echo "Running libtoolize..."
libtoolize --force --copy
fi
fi
echo "Running aclocal $aclocalinclude ..."
aclocal $aclocalinclude
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running automake --gnu $am_opt ..."
automake --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
fi
done
conf_flags="--enable-maintainer-mode"
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile. || exit 1
else
echo Skipping configure process.
fi

View File

@@ -1,76 +0,0 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* always defined to indicate that i18n is enabled */
#undef ENABLE_NLS
/* Gettext package. */
#undef GETTEXT_PACKAGE
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET
/* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

View File

@@ -1,41 +0,0 @@
AC_INIT(configure.in)
AM_INIT_AUTOMAKE(apparmorapplet-gnome, 0.9)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
AC_ISC_POSIX
AC_PROG_CC
AM_PROG_CC_STDC
AC_HEADER_STDC
pkg_modules="gtk+-2.0 >= 2.0.0"
PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS)
GETTEXT_PACKAGE=apparmorapplet
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
dnl Add the languages which your application supports here.
ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT
AM_PROG_LIBTOOL
dnl PKG_CHECK_MODULES(PACKAGE, [libgnomeui-2.0 gtk+-2.0])
PKG_CHECK_MODULES(PACKAGE, [libgnomeui-2.0 gtk+-2.0 libpanelapplet-2.0 gnome-vfs-2.0 libgnome-2.0 libglade-2.0 dbus-1.0])
pixmapsdir="${datadir}/pixmaps"
AC_SUBST(pixmapsdir)
AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS)
AC_OUTPUT([
Makefile
po/Makefile.in
src/Makefile
pixmaps/Makefile
])

View File

@@ -1,6 +0,0 @@
apparmor_applet_pixmapsdir = $(pixmapsdir)
apparmor_applet_pixmaps_DATA = \
apparmor_alert.png apparmor_default.png
EXTRA_DIST = $(apparmor_applet_pixmaps_DATA)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,258 +0,0 @@
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
#
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
# instead of PACKAGE and to look for po2tbl in ./ not in intl/
#
# - Modified by jacob berkman <jacob@ximian.com> to install
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
datadir = @datadir@
libdir = @libdir@
localedir = $(libdir)/locale
gnulocaledir = $(datadir)/locale
gettextsrcdir = $(datadir)/glib-2.0/gettext/po
subdir = po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
XGETTEXT = @XGETTEXT@
MSGMERGE = msgmerge
DEFS = @DEFS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES =
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
$(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
.c.o:
$(COMPILE) $<
.po.pox:
$(MAKE) $(GETTEXT_PACKAGE).pot
$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
.po.mo:
$(MSGFMT) -o $@ $<
.po.gmo:
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
all: all-@USE_NLS@
all-yes: $(CATALOGS)
all-no:
$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
--flag=g_strdup_printf:1:c-format \
--flag=g_string_printf:2:c-format \
--flag=g_string_append_printf:2:c-format \
--flag=g_error_new:3:c-format \
--flag=g_set_error:4:c-format \
--flag=g_markup_printf_escaped:1:c-format \
--flag=g_log:3:c-format \
--flag=g_print:1:c-format \
--flag=g_printerr:1:c-format \
--flag=g_printf:1:c-format \
--flag=g_fprintf:2:c-format \
--flag=g_sprintf:2:c-format \
--flag=g_snprintf:3:c-format \
--flag=g_scanner_error:2:c-format \
--flag=g_scanner_warn:2:c-format \
--files-from=$(srcdir)/POTFILES.in \
&& test ! -f $(GETTEXT_PACKAGE).po \
|| ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
@mkdir_p@ $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
case "$$cat" in \
*.gmo) destdir=$(gnulocaledir);; \
*) destdir=$(localedir);; \
esac; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
@mkdir_p@ $$dir; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
fi; \
if test -r $$cat.m; then \
$(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
else \
if test -r $(srcdir)/$$cat.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \
$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
else \
true; \
fi; \
fi; \
done
if test "$(PACKAGE)" = "glib"; then \
@mkdir_p@ $(DESTDIR)$(gettextsrcdir); \
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
# Define this as empty until I found a useful application.
installcheck:
uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
done
if test "$(PACKAGE)" = "glib"; then \
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
fi
check: all
dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
rm -fr *.o
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
dist distdir: update-po $(DISTFILES)
dists="$(DISTFILES)"; \
for file in $$dists; do \
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(GETTEXT_PACKAGE).pot
tmpdir=`pwd`; \
cd $(srcdir); \
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
echo "$$lang:"; \
if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
:; \
else \
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
rm -f $$tmpdir/$$lang.new.po; \
exit 1; \
fi; \
fi; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$tmpdir/$$lang.new.po; \
fi; \
done
# POTFILES is created from POTFILES.in by stripping comments, empty lines
# and Intltool tags (enclosed in square brackets), and appending a full
# relative path to them
POTFILES: POTFILES.in
( if test 'x$(srcdir)' != 'x.'; then \
posrcprefix='$(top_srcdir)/'; \
else \
posrcprefix="../"; \
fi; \
rm -f $@-t $@ \
&& (sed -e '/^#/d' \
-e "s/^\[.*\] +//" \
-e '/^[ ]*$$/d' \
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
| sed -e '$$s/\\$$//') > $@-t \
&& chmod a-w $@-t \
&& mv $@-t $@ )
Makefile: Makefile.in.in ../config.status POTFILES
cd .. \
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
$(SHELL) ./config.status
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -1,6 +0,0 @@
# List of source files containing translatable strings.
src/apparmor-applet.c
src/preferences_dialog.c
src/reject_list.c

View File

@@ -1,48 +0,0 @@
# Copyright (C) 2007 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: installation\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2006-11-03 14:26\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Profielinstellings"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Pad"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,49 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-06 08:04\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet برنامج مجاني؛ يمكنك إعادة توزيعه و/أو تعديله\nبموجب بنود رخصة GNU العمومية الذي\nنشرته مؤسسة البرمجيات الحرة، إما من الإصدار الثاني من الرخصة، أو\n)وفقًا لاختيارك) أي إصدار أحدث."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "تفضيلات سطح مكتب AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "إنشاء ملف التعريف"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "المسار"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "حالات رفض AppArmor"

View File

@@ -1,53 +0,0 @@
# translation of apparmorapplet.bg.po to Bulgarian
# Borislav Mitev <morbid_viper@tkzs.org>, 2008.
# Velislav Varbanov <varbanov@bglinux.org>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.bg\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-05-13 22:02+0300\n"
"Last-Translator: Velislav Varbanov <varbanov@bglinux.org>\n"
"Language-Team: Bulgarian <bg@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet е свободен софтуер. Можете да го разпространявате\n"
"и/или променяте според условията на Общия публичен лиценз на GNU,\n"
"както е публикуван от Фондацията за свободен софтер, версия 2 на\n"
"лиценза или (по Ваше усмотрение) някоя по-висока версия."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor настройки на средата"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Създаване на профил"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Път"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor откази"

View File

@@ -1,45 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2004-08-09 10:24+0200\n"
"Last-Translator: xxx <yyy@example.org>\n"
"Language-Team: Bengali <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "প্রোফাইলের সেটিং"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "পথ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,44 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2002-07-23 18:27+0200\n"
"Last-Translator: Damir Bjelobradic <Nagual@lugbih.org>\n"
"Language-Team: Bosnian <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,51 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2002-02-08 15:47+0100\n"
"Last-Translator: Jaume Badiella <myotis@drac.com>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
#, fuzzy
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"El Power Manager és un programari lliure; el podeu redistribuir i/o\n"
"modificar sota els termes de la Llicència pública general del GNU\n"
"publicada per la Free Software Foundation; o bé la versió 2\n"
"de la llicència, o bé (a la vostra opció) qualsevol versió més nova."
#: src/preferences_dialog.c:31
#, fuzzy
msgid "AppArmor Desktop Preferences"
msgstr "Preferències de l'escriptori"
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Configuració de perfil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Camí"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 14:25\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet je svobodný software; můžete ho dále šířit a/nebo\nupravit za podmínek stanovených licencí GNU General Public License,\npublikované organizací Free Software Foundation; buď verze 2\ntéto licence, nebo (podle vaší volby) jakékoli pozdější verze."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Nastavení modulu AppArmor pro pracovní stanici"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Vytváření profilů"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Cesta"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Odmítnutí modulu AppArmor"

View File

@@ -1,44 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2003-09-23 10:33+0200\n"
"Last-Translator: Kevin Donnelly <kevin@dotmon.com>\n"
"Language-Team: Welsh <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=5; plural=(n == 0 ? 0 : n == 1 ? 1 : n < 6 ? 2 : n == 6 ? 3 : 4);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,55 +0,0 @@
# translation of apparmorapplet.po to dansk
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Martin Møller <martin@martinm-76.dk>, 2007.
# Jan Madsen <jan.madsen.pt(a)gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-15 10:57+0100\n"
"Last-Translator: Jan Madsen <jan.madsen.pt(a)gmail.com>\n"
"Language-Team: dansk <opensuse-translation@opensuse.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet er fri software. Du kan redistribuere det og/eller ændre\n"
"det under betingelserne i GNU General Public License, som udgivet af\n"
"Free Software Foundation; enten i version 2 af licensen eller\n"
"(hvis du foretrækker det) i enhver senere version."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor desktop-præferencer"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profilgenerering"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Søgesti"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor afviste handlinger"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 13:38\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppAmorApplet ist freie Software, Sie können sie gemäß der Bestimmungen\nder GNU General Public License (in der von\nder Free Software Foundation veröffentlichten Form) weiter verteilen und/oder bearbeiten. Dies gilt für Version 2 der Lizenz bzw.\neine beliebige höhere Version (nach Ihrem Ermessen)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppAmor Desktop-Einstellungen"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profilgenerierung"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Pfad"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppAmor-Zurückweisungen"

View File

@@ -1,59 +0,0 @@
# translation of apparmorapplet.el.po to Ελληνικά
# translation of apparmorapplet.el to Greek
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
# Vasileios Giannakopoulos <billg@hellug.gr>, 2007.
# Kostas Boukouvalas <quantis@hellug.gr>, 2007.
# Vasileios Giannakopoulos <billg@billg.gr>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.el\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-07-31 16:48-0600\n"
"PO-Revision-Date: 2008-06-06 01:04+0100\n"
"Last-Translator: Vasileios Giannakopoulos <billg@billg.gr>\n"
"Language-Team: Ελληνικά <billg@billg.gr>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"Το AppArmorApplet είναι ελεύθερο λογισμικό; μπορείτε να το επαναδιανείμετε ή/και να το τροποποιήσετε\n"
"υπό τους όρους της GNU General Public License όπως εκδόθηκε από\n"
"το Free Software Foundation; είτε στην έκδοση 2 της Άδειας, ή\n"
"(κατα την άποψή σας) σε νεότερη έκδοση."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Προτιμήσεις Επιφάνειας Εργασίας AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Δημιουργία Προφίλ"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Διαδρομή"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Απορριφθέντα AppArmor"

View File

@@ -1,51 +0,0 @@
# Benjamin Weber, 2007.
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-17 15:35+0100\n"
"Last-Translator: Benjamin Weber\n"
"Language-Team: British English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: KAider 0.1\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public Licence as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor Desktop Preferences"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profile Generation"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Path"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor Rejections"

View File

@@ -1,45 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-11-08 12:26+8\n"
"Last-Translator: Steve Beattie <steve@immunix.com>\n"
"Language-Team: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Profile doesn't exist\n"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Path"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-04 14:32\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet es un programa libre. Puede redistribuirlo y\nmodificarlo bajo los términos de la Licencia Pública General GNU,\ntal como la publica la Free Software Foundation, ya sea la versión 2\nde la licencia o cualquier versión posterior que elija."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferencias de AppArmor para el escritorio"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Generación de perfiles"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Vía"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Rechazos de AppArmor"

View File

@@ -1,48 +0,0 @@
# translation of apparmorapplet.et.po to Estonian
# Ain Vagula <avagula@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.et\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-10-04 23:12+0300\n"
"Last-Translator: Ain Vagula <avagula@gmail.com>\n"
"Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmori töölaua eelistused"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profiili genereerimine"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Asukoht"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,52 +0,0 @@
# translation of apparmorapplet.po to suomi
# Jyri Palokangas <jmp@opensuse.fi>, 2007.
# Mikko Piippo <piippo@cc.helsinki.fi>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-21 17:52+0300\n"
"Last-Translator: Mikko Piippo <piippo@cc.helsinki.fi>\n"
"Language-Team: suomi <fi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet on vapaa ohjelma; voit levittää sitä edelleen ja/tai muokata \n"
"sitä Free Software Foundation -säätiön julkaiseman GNU GPL -lisenssin ehtojen mukaisesti. \n"
"Voit käyttää joko lisenssin versiota 2 tai halutessasi mitä tahansa uudempaa versiota."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor-työpöytäasetukset"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profiilin luominen"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Polku"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor hylkäykset"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-04 15:43\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "L'applet AppArmor est un logiciel libre que vous pouvez \ndistribuer et/ou modifier conformément aux termes de la Licence Publique\nGénérale GNU, tel que publié par la Free Software Foundation \n(version 2 de la license ou toute autre version ultérieure, le cas échéant)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Préférences de bureau AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Génération du profil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Chemin d'accès"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Rejets AppArmor"

View File

@@ -1,65 +0,0 @@
# translation of
#
# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas
# colaborar connosco, podes atopar máis información en <http://trasno.net>
#
# Galician message file for apparmorapplet
# Copyright (C) 2000, 2001 SuSE GmbH.
#
# Jesús Bravo Álvarez <jba@pobox.com>, 2000.
# Manuel A. Vazquez <xixirei@yahoo.es>, 2008.
# Leandro Regueiro <leandro.regueiro@gmail.com>, 2008.
#
# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas
# colaborar connosco, podes atopar máis información en <http://trasno.net>
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-05-02 14:02+0100\n"
"Last-Translator: Leandro Regueiro <leandro DOT regueiro AT gmail DOT com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet é software libre; vostede pode redistribuílo e/ou\n"
"modificalo baixo os termos da Licenza Pública Xeral de GNU publicada\n"
"pola Free Software Foundation; baixo os termos da licenza na versión 2,\n"
"ou calquera versión posterior (á súa elección)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferencias de AppArmor para o escritorio"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Xeración do perfil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Ruta"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Rexeitamentos de AppArmor"

View File

@@ -1,54 +0,0 @@
# Marathi message file for YaST2 (@memory@).
# Copyright (C) 2007 SUSE Linux Products GmbH.
#
msgid ""
msgstr ""
"Project-Id-Version: YaST (@memory@)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-07-29 15:37+0530\n"
"Last-Translator: i18n@suse.de\n"
"Language-Team: Gujarati <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: src/apparmor-applet.c:244
#, fuzzy
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"પાવર મેનેજર નિશુલ્ક સોફ્ટવેર છે; તમે તે ફ્રી સોફ્ટવેર ફાઉન્ડેશન દ્વારા \n"
"પ્રકાશિત GNU સામાન્ય જાહેર લાઇસેન્સની શરતો હેઠળ, ક્યાંતો લાઇસેન્સની આવૃતિ 2, અથવા \n"
"(તમારા વિકલ્પ પ્રમાણે) અન્ય પછીની આવૃતિ, ફરીથી \n"
"વહેચી શકો અને/અથવા તે બદલી શકો."
#: src/preferences_dialog.c:31
#, fuzzy
msgid "AppArmor Desktop Preferences"
msgstr " ડેસ્કટોપ પસંદગીઓ"
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "પ્રોફાઈલ સેટિંગ્સ"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "માર્ગ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,44 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2004-08-09 10:24+0200\n"
"Last-Translator: xxx <yyy@example.org>\n"
"Language-Team: Hebrew <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,53 +0,0 @@
# translation of apparmorapplet.hi.po to Hindi
# Sangeeta Kumari <k.sangeeta09@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.hi\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-24 22:40+0530\n"
"Last-Translator: \n"
"Language-Team: Hindi <en@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"\n"
"\n"
"\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr " प्रोफाइल सेटिंग "
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "पथ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,52 +0,0 @@
# translation of apparmorapplet.hr.po to Hrvatski
# Krešimir Jozić <kjozic@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.hr\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-09-20 21:50+0200\n"
"Last-Translator: Krešimir Jozić <kjozic@gmail.com>\n"
"Language-Team: Hrvatski\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet je slobodan program, možete ga redistribuirati i/ili prerađivati\n"
"po pravilima GNU opće javne licence koju je objavila\n"
"Free Software Foundation; bilo pod verzijom 2 Licence ili\n"
"(po vašem izboru) bilo kojom novijom verzijom."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor postavke radne površine"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Stvaranje profila"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Putanja"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor pravila za odbijanje"

View File

@@ -1,52 +0,0 @@
# translation of apparmorapplet.hu.po to
# Kalman Kemenczy <kkemenczy@novell.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.hu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-12 14:47+0200\n"
"Last-Translator: Kalman Kemenczy <kkemenczy@novell.com>\n"
"Language-Team: <hu@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"Az AppArmor kisalkalmazás szabad szoftver, terjesztheti és/vagy\n"
"módosíthatja a Free Software Foundation által kiadott GNU\n"
"General Public License második (vagy bármely későbbi)\n"
"változatában foglaltak alapján."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor munkaasztal beállításai"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profillétrehozás"
# clients/online_update_details.ycp:86 clients/online_update_select.ycp:108
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Elérési útvonal"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor visszautasítások"

View File

@@ -1,44 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2002-10-08 13:38+0200\n"
"Last-Translator: I Made Wiryana <made@nakula.rvs.uni-bielefeld.de>\n"
"Language-Team: Indonesian <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 10:11\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet è un software gratuito. È possibile ridistribuirlo e/o\nmodificarlo sotto i termini della GNU General Public Licence\npubblicati dalla Free Software Foundation: versione 2\ndella licenza oppure, a scelta, una versione successiva."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferenze Desktop AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Generazione del profilo"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Percorso"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Operazioni respinte da AppArmor"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-04 15:11\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorアプレットはフリーソフトウェアです。これを、Free Software\nFoundationが公開しているGNU General Public License(バージョン2か、希望によっては\nそれ以降のバージョンのうちどれか)の定める条件の下で再配布および/または変更することが\nできます。"
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmorデスクトップ設定"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "プロファイル生成"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "パス"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmorによる拒否"

View File

@@ -1,50 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-09-25 17:51+0400\n"
"Last-Translator: George Machitidze <giomac@gmail.com>\n"
"Language-Team: Georgian <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet არის თავისუფალი პროგრამული უზრუნველოყა;\n"
"თქვენ შეგიძლიათ იგი გაავრცელოთ ან/და შეცვალოთ\n"
"Free Software Foundation-ის მიერ გამოქვეყნაბული\n"
"GNU General Public License ლიცენზიით; ან მეორე ვერსიით,\n"
"ან უფრო ახალი ვერსიით (თქვენი არჩევანის მიხედვით)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor სამუშაო მაგიდის პარამეტრები "
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "გეზი"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor-ის უარყოფები"

View File

@@ -1,52 +0,0 @@
# translation of apparmorapplet.km.po to Khmer
# Khoem Sokhem <khoemsokhem@khmeros.info>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.km\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-13 14:34+0700\n"
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
"Language-Team: Khmer <support@khmeros.info>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet គឺ​ជា​កម្មវិធី​ឥតគិតថ្លៃ អ្នក​អាច​ចែកចាយវា និង/ឬ​កែប្រែ​បាន\n"
"ប៉ុន្តែ​ត្រូវ​នៅ​ក្រោម​អាជ្ញាបណ្ណ GNU ព្រោះ​ថា​បាន​បោះពុម្ព​ផ្សាយ​ដោយ\n"
"មូលនិធិ​កម្មវិធី​ឥតគិតថ្លៃ កំណែ ២ របស់​អាជ្ញាបណ្ណ ឬ\n"
"(ជម្រើស​របស់​អ្នក) នៅ​កំណែ​ក្រោយ ។"
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "ចំណូល​ចិត្ត​ផ្ទៃតុ​របស់ AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "ការ​បង្កើត​ទម្រង់"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "ផ្លូវ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "ការ​ច្រាន AppArmor ចេញ"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-04 15:02\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet은 무료 소프트웨어이며, 배포하거나\nFSF(Free Software Foundation)에서 발행한 GNU GPL(General Public License: 버전 2 또는 (사용자 재량으로)\n이후 버전) 약관 하에서 수정할 수 있습니다. "
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor 데스크톱 기본 설정"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "프로파일 생성"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "경로"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor 거부"

View File

@@ -1,44 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2006-01-04 08:58+0100\n"
"Last-Translator: i18n@suse.de\n"
"Language-Team: Lao <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,49 +0,0 @@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# Andrius Štikonas <stikonas@gmail.com>, 2007.
# This file is distributed under the same license as AppArmorApplet package.
#
msgid ""
msgstr ""
"Project-Id-Version: AppArmorApplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-19 19:59+0300\n"
"Last-Translator: Andrius Štikonas <stikonas@gmail.com>\n"
"Language-Team: Lithuanian <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor darbastalio nustatymai"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profilio generavimas"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Kelias"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,48 +0,0 @@
# Macedonian message file for YaST2 (@memory@).
# Copyright (C) 2006 SUSE Linux Products GmbH.
# Зоран Димовски <zoki.dimovski@gmail.com>
#
msgid ""
msgstr ""
"Project-Id-Version: YaST (@memory@)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2001-07-17 16:12+0200\n"
"Last-Translator: Зоран Димовски <zoki.dimovski@gmail.com>\n"
"Language-Team: Macedonian <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n>1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,49 +0,0 @@
# Marathi message file for YaST2 (@memory@).
# Copyright (C) 2006 SUSE Linux Products GmbH.
# "( अमेय पाळंदे ) Ameya Palande" <2ameya@gmail.com>
#
msgid ""
msgstr ""
"Project-Id-Version: YaST (@memory@)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-07-29 15:37+0530\n"
"Last-Translator: \"( अमेय पाळंदे ) Ameya Palande\" <2ameya@gmail.com>\n"
"Language-Team: Marathi <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "प्रोफाईल सेटिंग्ज"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "पाथ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,59 +0,0 @@
# translation of apparmorapplet.po to norsk bokmål
# translation of apparmorapplet.po to
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
# Olav Pettershagen <olav.pet@online.no>, 2007.
# Olav Pettershagen <olav.pet@gmail.com>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-10-03 16:36+0200\n"
"Last-Translator: Olav Pettershagen <olav.pet@gmail.com>\n"
"Language-Team: norsk bokmål\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet er fri programvare; du kan redistribuere og/eller\n"
"modifisere den i henhold til GNU General Public License\n"
"som publisert av Free Software Foundation, enten versjon 2\n"
"av lisensen eller valgfri senere versjon."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Skrivebordsinnstillinger for AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Opprett profil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Sti"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor-blokkeringer"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 08:00\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet is vrije software; u mag het herdistribueren en/of\naanpassen onder de voorwaarden van de GNU General Public License, zoals\ngepubliceerd door de Free Software Foundation; versie 2 van de\nlicentie of (naar uw believen) een latere versie."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor-bureaubladvoorkeuren"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profielgeneratie"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Pad"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor-weigeringen"

View File

@@ -1,55 +0,0 @@
# translation of apparmorapplet.pa.po to Panjabi
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# A S Alam <aalam@users.sf.net>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.pa\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-13 06:50+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Panjabi <punjabi-l10n@lists.sf.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmor ਐਪਲਿਟ ਮੁਫਤ/ਮੁਕਤ ਸਾਫਟਵੇਅਰ ਹੈ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਗਨੂ ਜਰਨਲ ਪਬਲਿਕ\n"
"ਲਾਈਸੈਂਸ, ਜੋ ਕਿ ਫਰੀ ਸਾਫਟਵੇਅਰ ਫਾਊਂਡੇਸ਼ਨ ਵਲੋਂ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਦੇ ਲਾਈਸੈਂਸ\n"
"ਵਰਜਨ 2 ਜਾਂ ਨਵਾਂ (ਤੁਹਾਡੀ ਆਪਣੀ ਮਰਜ਼ੀ ਮੁਤਾਬਕ) ਦੇ ਅਧੀਨ ਇਸ ਨੂੰ ਵੰਡ ਸਕਦੇ ਹੋ\n"
"ਜਾਂ/ਅਤੇ ਸੋਧ ਸਕਦੇ ਹੋ।"
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor ਡੈਸਕਟਾਪ ਪਸੰਦ"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "ਪਰੋਫਾਇਲ ਨਿਰਮਾਣ"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "ਮਾਰਗ"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor ਇਨਕਾਰ"

View File

@@ -1,50 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-03 00:14\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorAplet to wolne oprogramowanie; można je redystrybuować i/lub\n"
"modyfikować zgodnie z warunkami licencji GNU General Public License\n"
"wydanej przez Free Software Foundation; w wersji 2 tej licencji lub\n"
"dowolnej późniejszej."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferencje AppArmor Desktop"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Generowanie profilu"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Ścieżka"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Odrzucenia AppArmor"

View File

@@ -1,57 +0,0 @@
# translation of apparmorapplet.po to Portuguese
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
# Carlos Gonçalves <cgoncalves@opensuse.org>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-08-10 14:34+0100\n"
"Last-Translator: Carlos Gonçalves <cgoncalves@opensuse.org>\n"
"Language-Team: Portuguese <opensuse-pt@opensuse.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"O AppArmor é um programa é livre; pode ser distribuído e/ou modificado\n"
"segundo os termos da licença GNU General Public License tal como\n"
"publicada pela Free Software Foundation; a versão 2 da Licença ou\n"
"(por sua opção) qualquer versão posterior."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferências do AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Generação de Perfil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Caminho"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Rejeições do AppArmor"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 09:28\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "O applet AppArmor é um software livre; você pode redistribuí-lo e/ou modificá-lo\nseguindo os termos da licença GNU General Public License (GPL) tal como\npublicada pela Free Software Foundation; na versão 2 da licença ou\n(por sua opção) qualquer versão posterior."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferências de Área de Trabalho do AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Geração de Perfil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Caminho"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Rejeições do AppArmor"

View File

@@ -1,51 +0,0 @@
# Stanciu-Lixandru Alec <stanciulixandru@gmail.com>, 2007.
# Andrei Cipu <traduceri@strainu.ro>, 2008
msgid ""
msgstr ""
"Project-Id-Version: OpenSUSE\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-10-08 10:23-0700\n"
"Last-Translator: # Andrei Cipu <traduceri@strainu.ro>\n"
"Language-Team: Romanian <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n"
"X-Generator: Narro 0.9.2 on http://narro.i18n.ro\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet este software free, îl puteți redistribui și/sau modifica\n"
"conform cu termenii GNU General Public License așa cum este publicată\n"
"de Free Software Foundation, fie versiunea 2 a licenței sau (la latitudinea\n"
"dvs.) o versiune ulterioară."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferințe desktop pentru AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Generarea profilului"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Cale"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Respinse de AppArmor"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 08:14\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet является свободно распространяемым ПО; его можно распространять и/или изменять\nв рамках условий GNU General Public License, опубликованной Free Software Foundation\n (второй версии либо выше, на Ваше усмотрение)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Настройки рабочей среды AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Создание профиля"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Путь"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Запреты AppArmor"

View File

@@ -1,47 +0,0 @@
# Sinhala message file for YaST2 (@memory@).
# Copyright (C) 2007 SUSE Linux Products GmbH.
#
msgid ""
msgstr ""
"Project-Id-Version: YaST (@memory@)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-07-29 15:37+0530\n"
"Last-Translator: i18n@suse.de\n"
"Language-Team: Sinhala <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,57 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2003-09-24 10:40+0200\n"
"Last-Translator: Stanislav Visnovsky <visnovsky@kde.org>\n"
"Language-Team: Slovak <sk-i18n@linux.sk>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.2\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: src/apparmor-applet.c:244
#, fuzzy
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"Správca napájania je slobodný softvér; môžete ho redistribuovať a/alebo\n"
"upraviť podľa pravidiel licencie GNU General Public License\n"
"publikovanej organizáciou Free Software Foundation; verzie 2\n"
"licencie, alebo (podľa vašeho uváženia) akejkoľvek neskoršej verzie."
#: src/preferences_dialog.c:31
#, fuzzy
msgid "AppArmor Desktop Preferences"
msgstr "Nastavenia siete"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,52 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-08-24 17:37+0200\n"
"Last-Translator: Janez Krek <janez.krek@euroteh.si>\n"
"Language-Team: Slovenščina <sl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.3.1\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Nastavitve profila"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Pot"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,50 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2005-08-03 21:03+0200\n"
"Last-Translator: Данило Шеган <danilo@gnome.org>\n"
"Language-Team: Serbian <novell@prevod.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 07:23\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet är gratisprogramvara. Du får distribuera den och/eller\nändra den enligt villkoren i GNU General Public License\nfrån Free Software Foundation (version 2 eller senare)."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor-skrivbordsinställningar"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Profilgenerering"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Sökväg"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor-nekanden"

View File

@@ -1,51 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2003-08-14 10:47+0200\n"
"Last-Translator: xxx <yyy@example.org>\n"
"Language-Team: Tamil <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "விவர அமைப்புகள்"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "பாதை"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,47 +0,0 @@
# Thai message file for YaST2 (@memory@).
# Copyright (C) 2008 SUSE Linux Products GmbH.
#
msgid ""
msgstr ""
"Project-Id-Version: YaST (@memory@)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-01-04 08:58+0100\n"
"Last-Translator: i18n@suse.de\n"
"Language-Team: Thai <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,51 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2001-10-18 10:13+0200\n"
"Last-Translator: Görkem Çetin <gorkem@gelecek.com.tr>\n"
"Language-Team: turkish <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Profil mevcut değil\n"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,59 +0,0 @@
# translation of apparmorapplet.po to Ukrainian
# Translation of apparmorapplet.uk.po to Ukrainian
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
# Ivan Petrouchtchak <ivanpetrouchtchak@yahoo.com>, 2007.
# Yuri Chornoivan <yurchor@ukr.net>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2008-02-12 18:57+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\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"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmorApplet є вільним програмним забезпеченням; ви можете поширювати та/або змінювати\n"
"його за умов дотримання пунктів GNU General Public License, у тому вигляді, який\n"
"оприлюднено Free Software Foundation; як версію 2 цієї ліцензії, або\n"
"(за вашого бажання) будь-якої пізнішої версії."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Параметри стільниці AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Створення профілів"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Шлях"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Відкидання AppArmor"

View File

@@ -1,50 +0,0 @@
# @TITLE@
# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# This file is distributed under the same license as @PACKAGE@ package. FIRST
#
msgid ""
msgstr ""
"Project-Id-Version: @PACKAGE@\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2006-07-12 07:32+0200\n"
"Last-Translator: Phan Vĩnh Thịnh <teppi82@gmail.com>\n"
"Language-Team: Vietnamese <i18n@suse.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr ""
#: src/preferences_dialog.c:54
msgid "Path"
msgstr ""
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,55 +0,0 @@
# translation of apparmorapplet.wa.po to Walloon
# Translation into the walloon language.
# Copyright (C) 2007 SUSE Linux Products GmbH.
#
# Pablo Saratxaga <pablo@walon.org>, 2001, 2004.
# Jean Cayron <jean.cayron@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet.wa\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2007-09-08 01:17+0200\n"
"Last-Translator: Jean Cayron <jean.cayron@gmail.com>\n"
"Language-Team: Walloon\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: KBabel 1.11.4\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"AppArmo est on libe programe; vos l' poloz diner tt avå oudonbén l' candjî\n"
"sorlon ç' k' est dit el Licince Publike Djeneråle GNU del Free Software Foundation; "
"modêye 2 del licince oudonbén (a vosse tchoes) ene ôte modêye pus djonne."
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "Preferinces sicribannes AppArmor"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "Ahivaedje di profil"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Tchimin"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "Çou k' AppArmor ridjete"

View File

@@ -1,48 +0,0 @@
# Copyright (C) 2007 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: base\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2006-11-03 14:26\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr ""
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Izakhelo zenkangelo"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Indlela yothungelwano"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-05 09:53\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet 是自由软件;您可以根据自由软件基金会\n发布的 GNU 通用公共许可证(第 2 版或您选择的任何更高版本)\n的条款重新分发和/或\n修改它。"
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor 桌面自选设置"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "配置文件生成"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "路径"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YAST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "genprof"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor 拒绝"

View File

@@ -1,43 +0,0 @@
# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: apparmorapplet\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2009-02-04 15:44\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/apparmor-applet.c:244
msgid "AppArmorApplet is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version."
msgstr "AppArmorApplet 是一個自由軟體,您可以在 GNU 通用公共授權\n(GNU General Public License) 條款規定之下任意散佈和/或進行修改。\nGNU 通用公共授權是由自由軟體基金會 (Free Software Foundation)\n發行您可以選擇第二版或 (自行選擇) 更新的版本。"
#: src/preferences_dialog.c:31
msgid "AppArmor Desktop Preferences"
msgstr "AppArmor 桌面優先設定"
#: src/preferences_dialog.c:46
msgid "Profile Generation"
msgstr "設定檔產生程序"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "路徑"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr "YaST"
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr "產生設定檔"
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr "AppArmor 拒絕項"

View File

@@ -1,54 +0,0 @@
# Copyright (C) 2007 SuSE Linux Products GmbH, Nuernberg
# This file is distributed under the same license as the package.
#
msgid ""
msgstr ""
"Project-Id-Version: installation\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-06 14:27-0800\n"
"PO-Revision-Date: 2006-11-03 14:26\n"
"Last-Translator: Novell Language <language@novell.com>\n"
"Language-Team: Novell Language <language@novell.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/apparmor-applet.c:244
#, fuzzy
msgid ""
"AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version."
msgstr ""
"Isilawuli Samandla siyi-software yamahhala; ungaphinda uyisakaze futhi/noma\n"
"ululungise ngaphansi kwemibandela ye-GNU General Public License\n"
" njengoba ishicilelwe yi-Free Software Foundation; kungaba uhlelo 2\n"
" lweLayisensi, noma (ngokukhetha kwakho) noma yiluphi uhlelo lwamuva."
#: src/preferences_dialog.c:31
#, fuzzy
msgid "AppArmor Desktop Preferences"
msgstr "Okukhethwa Kukho Kwesendlalelo"
#: src/preferences_dialog.c:46
#, fuzzy
msgid "Profile Generation"
msgstr "Amasethingi ephrofayili"
#: src/preferences_dialog.c:54
msgid "Path"
msgstr "Umgudu:"
#: src/preferences_dialog.c:76
msgid "YAST"
msgstr ""
#: src/preferences_dialog.c:77
msgid "genprof"
msgstr ""
#: src/reject_list.c:58
msgid "AppArmor Rejections"
msgstr ""

View File

@@ -1,25 +0,0 @@
## Process this file with automake to produce Makefile.in
INCLUDES = \
-DPACKAGE_DATA_DIR=\""$(datadir)"\" \
-DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DGNOMELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DDBUS_API_SUBJECT_TO_CHANGE \
`$(PKG_CONFIG) --cflags libpanelapplet-2.0` \
`$(PKG_CONFIG) --cflags dbus-1` \
@PACKAGE_CFLAGS@
LIBS = \
`$(PKG_CONFIG) --libs libpanelapplet-2.0` \
`$(PKG_CONFIG) --libs dbus-1` \
@PACKAGE_LIBS@
libexec_PROGRAMS = apparmorapplet
apparmorapplet_SOURCES = \
apparmor-applet.c apparmor-applet.h \
preferences_dialog.c preferences_dialog.h \
reject_list.c reject_list.h
apparmorapplet_LDADD = @PACKAGE_LIBS@ $(INTLLIBS)

View File

@@ -1,355 +0,0 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <glib.h>
#include <panel-applet.h>
#include <gtk/gtk.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
#include <regex.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n.h>
#include "preferences_dialog.h"
#include "reject_list.h"
#include "apparmor-applet.h"
struct _apparmor_applet *apparmor_applet = NULL;
static const BonoboUIVerb apparmor_menu_verbs[] = {
BONOBO_UI_UNSAFE_VERB("apparmor_applet_about", applet_about),
/* BONOBO_UI_UNSAFE_VERB("apparmor_applet_preferences", applet_prefs),*/
BONOBO_UI_VERB_END
};
// We don't really have any "preferences" to set yet.
// static const char Context_menu_xml [] =
// "<popup name=\"button3\">\n"
// " <menuitem name=\"About AppArmor Applet\" "
// " verb=\"apparmor_applet_about\" "
// " _label=\"_About...\"\n"
// " pixtype=\"stock\" "
// " pixname=\"gnome-stock-about\"/>\n"
// " <menuitem name=\"Preferences\" "
// " verb=\"apparmor_applet_preferences\" "
// " _label=\"_Preferences...\"\n"
// " pixtype=\"stock\" "
// " pixname=\"gtk-preferences\"/>\n"
// "</popup>\n";
static const char Context_menu_xml [] =
"<popup name=\"button3\">\n"
" <menuitem name=\"About AppArmor Applet\" "
" verb=\"apparmor_applet_about\" "
" _label=\"_About...\"\n"
" pixtype=\"stock\" "
" pixname=\"gnome-stock-about\"/>\n"
"</popup>\n";
void
insert_into_list(char *name)
{
GtkTreeIter iter, listIter;
gboolean exists, row_found;
row_found = FALSE;
exists = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(apparmor_applet->program_store), &iter);
/* Check to see if it exists already and increment the rejection count if it is */
while (exists)
{
gchar *str_data;
gint int_data;
gtk_tree_model_get (GTK_TREE_MODEL(apparmor_applet->program_store), &iter,
0, &str_data,
1, &int_data,
-1);
if (g_strcasecmp(str_data, name) == 0)
{
int_data++;
gtk_list_store_set (apparmor_applet->program_store, &iter, 0, str_data, 1, int_data, -1);
row_found = TRUE;
g_free (str_data);
break;
}
g_free (str_data);
exists = gtk_tree_model_iter_next (GTK_TREE_MODEL(apparmor_applet->program_store), &iter);
}
if (row_found == FALSE)
{
gtk_list_store_append (apparmor_applet->program_store, &listIter);
gtk_list_store_set (apparmor_applet->program_store, &listIter, 0, name, 1, 1, -1);
}
}
static DBusHandlerResult signal_filter
(DBusConnection *connection, DBusMessage *message, void *user_data)
{
GtkTreePath *path;
GtkTreeIter listIter;
DBusMessageIter iter, subIter;
char *program_name;
int arrayLen;
/* We are about to be kicked off */
if (dbus_message_is_signal
(message, DBUS_PATH_LOCAL, "Disconnected"))
{
return DBUS_HANDLER_RESULT_HANDLED;
}
else if (dbus_message_is_signal (message, "com.novell.apparmor", "REJECT"))
{
apparmor_applet->alert_count++;
apparmor_applet->uncleared_alerts = TRUE;
dbus_message_iter_init(message, &iter);
/*
* 1 - The full string - DBUS_TYPE_STRING
* 2 - The PID (record->pid) - DBUS_TYPE_INT64
* 3 - The task (record->task) - DBUS_TYPE_INT64
* 4 - The audit ID (record->audit_id) - DBUS_TYPE_STRING
* 5 - The operation (record->operation: "Exec" "ptrace" etc) - DBUS_TYPE_STRING
* 6 - The denied mask (record->denied_mask: "rwx" etc) - DBUS_TYPE_STRING
* 7 - The requested mask (record->requested_mask) - DBUS_TYPE_STRING
* 8 - The name of the profile (record->profile) - DBUS_TYPE_STRING
* 9 - The first name field (record->name) - DBUS_TYPE_STRING
* 10- The second name field (record->name2) - DBUS_TYPE_STRING
* 11- The attribute (record->attribute) - DBUS_TYPE_STRING
* 12- The parent task (record->parent) - DBUS_TYPE_STRING
* 13- The magic token (record->magic_token) - DBUS_TYPE_STRING
* 14- The info field (record->info) - DBUS_TYPE_STRING
* 15- The active hat (record->active_hat) - DBUS_TYPE_STRING
*/
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
dbus_message_iter_next(&iter);
// dbus_message_iter_get_basic(&iter, &program_name);
dbus_message_iter_recurse(&iter, &subIter);
dbus_message_iter_get_fixed_array(&subIter, &program_name, &arrayLen);
if (program_name == NULL)
{
return DBUS_HANDLER_RESULT_HANDLED;
}
insert_into_list(program_name);
set_tooltip();
set_appropriate_icon();
return DBUS_HANDLER_RESULT_HANDLED;
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
/* The applet display */
static gboolean apparmor_applet_fill(PanelApplet * applet,
const gchar * iid,
gpointer data)
{
if (strcmp(iid, "OAFIID:AppArmorApplet") != 0)
{
return FALSE;
}
GError *error = NULL;
DBusConnection *bus;
DBusError dbus_error;
apparmor_applet = g_new(struct _apparmor_applet, 1);
apparmor_applet->uncleared_alerts = FALSE;
apparmor_applet->reject_dialog = NULL;
apparmor_applet->alert_icon_displayed = FALSE;
apparmor_applet->alert_count = 0;
apparmor_applet->tooltips = gtk_tooltips_new();
apparmor_applet->program_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_UINT);
apparmor_applet->applet = GTK_WIDGET(applet);
gtk_widget_realize(apparmor_applet->applet);
/* Set up the icons */
apparmor_applet->icon =
gdk_pixbuf_new_from_file(
gnome_program_locate_file
(NULL, GNOME_FILE_DOMAIN_PIXMAP,
"apparmor_default.png", FALSE, NULL), &error);
apparmor_applet->icon_alert =
gdk_pixbuf_new_from_file(
gnome_program_locate_file
(NULL, GNOME_FILE_DOMAIN_PIXMAP,
"apparmor_alert.png", FALSE, NULL), &error);
/* Get the panel height in order to resize the icon */
apparmor_applet->panel_height =
panel_applet_get_size(PANEL_APPLET(apparmor_applet->applet));
apparmor_applet->icon_resized =
gdk_pixbuf_scale_simple(apparmor_applet->icon,
apparmor_applet->panel_height,
apparmor_applet->panel_height,
GDK_INTERP_BILINEAR);
apparmor_applet->icon_alert_resized =
gdk_pixbuf_scale_simple(apparmor_applet->icon_alert,
apparmor_applet->panel_height,
apparmor_applet->panel_height,
GDK_INTERP_BILINEAR);
apparmor_applet->panel_image = g_object_new(GTK_TYPE_IMAGE,
"pixbuf",
apparmor_applet->icon_resized,
"storage-type", GTK_IMAGE_PIXBUF,
NULL);
panel_applet_setup_menu (PANEL_APPLET (apparmor_applet->applet),
Context_menu_xml,
apparmor_menu_verbs,
NULL);
gtk_container_add(GTK_CONTAINER(apparmor_applet->applet),
apparmor_applet->panel_image);
g_signal_connect(G_OBJECT(apparmor_applet->applet),
"button-press-event", G_CALLBACK(on_button_press),
NULL);
gtk_widget_show_all(GTK_WIDGET(apparmor_applet->applet));
set_tooltip();
gtk_tooltips_enable(apparmor_applet->tooltips);
dbus_error_init (&dbus_error);
bus = dbus_bus_get (DBUS_BUS_SYSTEM, &dbus_error);
if (!bus)
{
dbus_error_free (&dbus_error);
return FALSE;
}
dbus_connection_setup_with_g_main (bus, NULL);
/* listening to messages from all objects as no path is specified */
dbus_bus_add_match (bus, "type='signal',interface='com.novell.apparmor'", &dbus_error);
dbus_connection_add_filter (bus, signal_filter, NULL, NULL);
return TRUE;
}
void set_tooltip (void)
{
GString *apparmor_tooltip = g_string_sized_new(255);
g_string_printf(apparmor_tooltip, "There are %i AppArmor alerts", apparmor_applet->alert_count);
gtk_tooltips_set_tip(apparmor_applet->tooltips,
apparmor_applet->applet,
apparmor_tooltip->str, NULL);
}
void set_appropriate_icon (void)
{
GdkPixbuf *pixbuf = NULL;
if ((apparmor_applet->uncleared_alerts == TRUE) && (apparmor_applet->alert_icon_displayed == FALSE))
{
pixbuf = gdk_pixbuf_copy(apparmor_applet->icon_alert_resized);
gtk_image_set_from_pixbuf(GTK_IMAGE(apparmor_applet->panel_image), pixbuf);
apparmor_applet->alert_icon_displayed = TRUE;
}
else if ((apparmor_applet->uncleared_alerts == FALSE) && (apparmor_applet->alert_icon_displayed == TRUE))
{
pixbuf = gdk_pixbuf_copy(apparmor_applet->icon_resized);
gtk_image_set_from_pixbuf(GTK_IMAGE(apparmor_applet->panel_image), pixbuf);
apparmor_applet->alert_icon_displayed = FALSE;
}
if (pixbuf != NULL)
g_object_unref(pixbuf);
}
void applet_about(BonoboUIComponent * uic)
{
const gchar *license =
_("AppArmorApplet is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License, version 2, as published by\n"
"the Free Software Foundation.");
const gchar *authors[] = {
"Matt Barringer <mbarringer@suse.de>",
NULL
};
GtkWidget *about_apparmor_applet=
g_object_new(GTK_TYPE_ABOUT_DIALOG,
"authors", authors,
"logo", GDK_PIXBUF(apparmor_applet->icon),
"copyright", ("Copyright (C) 2007 Novell"),
"name", ("AppArmor Alert Applet"),
"version", VERSION,
"license", license,
NULL);
g_signal_connect (about_apparmor_applet, "response",
G_CALLBACK (gtk_widget_destroy),
about_apparmor_applet);
g_signal_connect (about_apparmor_applet, "destroy",
G_CALLBACK (gtk_widget_destroyed),
NULL);
gtk_widget_show(about_apparmor_applet);
}
void applet_prefs (BonoboUIComponent *uic)
{
GtkWidget *prefs_dialog;
prefs_dialog = create_preferences_dialog();
gtk_widget_show(prefs_dialog);
}
gboolean on_button_press (GtkWidget *event_box,
GdkEventButton *event,
gpointer data)
{
if (event->button != 1)
return FALSE;
if (apparmor_applet->reject_dialog == NULL)
{
apparmor_applet->reject_dialog = create_reject_dialog(apparmor_applet->program_store);
gtk_widget_show(apparmor_applet->reject_dialog);
}
else
{
gtk_widget_show(apparmor_applet->reject_dialog);
}
return TRUE;
}
/* Decrement the event count and reset the icon/tooltip state if necessary */
void decrement_event_count(gint decrement)
{
apparmor_applet->alert_count = apparmor_applet->alert_count - decrement;
if (apparmor_applet->alert_count <= 0)
{
apparmor_applet->alert_count= 0;
apparmor_applet->uncleared_alerts = FALSE;
set_appropriate_icon();
set_tooltip();
}
}
PANEL_APPLET_BONOBO_FACTORY("OAFIID:AppArmorApplet_Factory",
PANEL_TYPE_APPLET, "AppArmor Desktop Alerts", "0",
apparmor_applet_fill, NULL);

View File

@@ -1,37 +0,0 @@
#ifndef __APPARMOR_APPLET_H
#define __APPARMOR_APPLET_H
#include <panel-applet.h>
#define CONF_PATH "/apps/AppArmor/apparmor-applet"
#define CONF_PROFILE_KEY "/apps/AppArmor/apparmor-applet/profiler"
#define CONF_PATH_KEY "/apps/AppArmor/apparmor-applet/path"
struct _apparmor_applet
{
GtkWidget *applet;
GtkWidget *reject_dialog;
gboolean uncleared_alerts;
gboolean alert_icon_displayed;
GtkWidget *panel_image;
GdkPixbuf *icon; /* Default icon */
GdkPixbuf *icon_resized; /* The resized default icon */
GdkPixbuf *icon_alert; /* Alert icon */
GdkPixbuf *icon_alert_resized; /* Resized alert icon */
gint panel_height;
gint alert_count;
GtkTooltips *tooltips;
GtkListStore *program_store;
};
void applet_about(BonoboUIComponent *uic);
void applet_prefs(BonoboUIComponent *uic);
void set_tooltip(void);
void set_appropriate_icon();
gboolean on_button_press (GtkWidget *event_box,
GdkEventButton *event,
gpointer data);
void insert_into_list(char *name);
void decrement_event_count(gint decrement);
#endif

View File

@@ -1,129 +0,0 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <gconf/gconf-client.h>
#include "preferences_dialog.h"
#include "apparmor-applet.h"
GtkWidget *profile_combobox;
GtkWidget*
create_preferences_dialog (void)
{
GtkWidget *preferences_dialog;
GtkWidget *preferences_vbox;
GtkWidget *layout_table;
GtkWidget *profile_label;
GtkWidget *path_label;
GtkWidget *preferences_buttonbox;
GtkWidget *cancel_button;
GtkWidget *ok_button;
GtkWidget *path_entry;
GConfClient *client;
int active_combo;
client = gconf_client_get_default();
active_combo = gconf_client_get_int(client, CONF_PROFILE_KEY, NULL);
preferences_dialog = gtk_dialog_new ();
gtk_widget_set_name (preferences_dialog, "preferences_dialog");
gtk_window_set_title (GTK_WINDOW (preferences_dialog), _("AppArmor Desktop Preferences"));
gtk_window_set_position (GTK_WINDOW (preferences_dialog), GTK_WIN_POS_CENTER);
gtk_window_set_modal (GTK_WINDOW (preferences_dialog), TRUE);
gtk_window_set_type_hint (GTK_WINDOW (preferences_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
preferences_vbox = GTK_DIALOG (preferences_dialog)->vbox;
gtk_widget_set_name (preferences_vbox, "preferences_vbox");
gtk_widget_show (preferences_vbox);
layout_table = gtk_table_new (2, 2, FALSE);
gtk_widget_set_name (layout_table, "layout_table");
gtk_widget_show (layout_table);
gtk_box_pack_start (GTK_BOX (preferences_vbox), layout_table, FALSE, TRUE, 0);
gtk_table_set_col_spacings (GTK_TABLE (layout_table), 10);
profile_label = gtk_label_new (_("Profile Generation"));
gtk_widget_set_name (profile_label, "profile_label");
gtk_widget_show (profile_label);
gtk_table_attach (GTK_TABLE (layout_table), profile_label, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (profile_label), 0, 0.5);
path_label = gtk_label_new (_("Path"));
gtk_widget_set_name (path_label, "path_label");
gtk_widget_show (path_label);
gtk_table_attach (GTK_TABLE (layout_table), path_label, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (path_label), 0, 0.5);
path_entry = gtk_entry_new ();
gtk_widget_set_name (path_entry, "path_entry");
gtk_widget_show (path_entry);
gtk_table_attach (GTK_TABLE (layout_table), path_entry, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_entry_set_invisible_char (GTK_ENTRY (path_entry), 9679);
profile_combobox = gtk_combo_box_new_text ();
gtk_widget_set_name (profile_combobox, "profile_combobox");
gtk_widget_show (profile_combobox);
gtk_table_attach (GTK_TABLE (layout_table), profile_combobox, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_combo_box_append_text (GTK_COMBO_BOX (profile_combobox), _("YAST"));
gtk_combo_box_append_text (GTK_COMBO_BOX (profile_combobox), _("genprof"));
gtk_combo_box_set_active(GTK_COMBO_BOX(profile_combobox), active_combo);
preferences_buttonbox = GTK_DIALOG (preferences_dialog)->action_area;
gtk_widget_set_name (preferences_buttonbox, "preferences_buttonbox");
gtk_widget_show (preferences_buttonbox);
gtk_button_box_set_layout (GTK_BUTTON_BOX (preferences_buttonbox), GTK_BUTTONBOX_END);
cancel_button = gtk_button_new_from_stock ("gtk-cancel");
gtk_widget_set_name (cancel_button, "cancel_button");
gtk_widget_show (cancel_button);
gtk_dialog_add_action_widget (GTK_DIALOG (preferences_dialog), cancel_button, GTK_RESPONSE_CANCEL);
GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);
ok_button = gtk_button_new_from_stock ("gtk-ok");
gtk_widget_set_name (ok_button, "ok_button");
gtk_widget_show (ok_button);
gtk_dialog_add_action_widget (GTK_DIALOG (preferences_dialog), ok_button, GTK_RESPONSE_OK);
GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
g_signal_connect(preferences_dialog, "response",
G_CALLBACK(button_press),
NULL);
return preferences_dialog;
}
void
button_press (GtkDialog * dialog, gint answer, gpointer data)
{
if (answer == GTK_RESPONSE_OK || answer == GTK_RESPONSE_CANCEL)
{
if (answer == GTK_RESPONSE_OK)
{
int active = gtk_combo_box_get_active (GTK_COMBO_BOX(profile_combobox));
if (active <= -1)
active = 0;
GConfClient *client;
client = gconf_client_get_default();
gconf_client_set_int(client, CONF_PROFILE_KEY, active, NULL);
}
gtk_widget_destroy(GTK_WIDGET(dialog));
}
}

View File

@@ -1,9 +0,0 @@
#ifndef PREFERENCES_DIALOG_H
#define PREFERENCES_DIALOG_H
GtkWidget* create_preferences_dialog (void);
void button_press (GtkDialog * dialog, gint answer, gpointer data);
#endif

View File

@@ -1,272 +0,0 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <gconf/gconf-client.h>
#include <stdio.h>
#include <panel-applet.h>
#include <libgnome/libgnome.h>
#include <glib/gi18n.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include "reject_list.h"
#include "apparmor-applet.h"
static void
add_columns (GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeModel *model = gtk_tree_view_get_model (treeview);
/* column for fixed toggles */
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("Profile Name",
renderer,
"text", 0,
NULL);
gtk_tree_view_column_set_sort_column_id (column, 0);
gtk_tree_view_append_column (treeview, column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("Rejection Count",
renderer,
"text", 1,
NULL);
gtk_tree_view_column_set_sort_column_id (column, 1);
gtk_tree_view_append_column (treeview, column);
}
GtkWidget*
create_reject_dialog (GtkListStore *store)
{
GtkWidget *reject_dialog;
GtkWidget *reject_vbox;
GtkWidget *reject_list_scrolledwindow;
GtkWidget *program_list;
GtkWidget *reject_button_area;
GtkWidget *cancel_button;
GtkWidget *ok_button;
GtkTreeIter listIter;
reject_dialog = gtk_dialog_new ();
gtk_widget_set_name (reject_dialog, "reject_dialog");
gtk_window_set_title (GTK_WINDOW (reject_dialog), _("AppArmor Rejections"));
gtk_window_set_type_hint (GTK_WINDOW (reject_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_modal(GTK_WINDOW(reject_dialog), TRUE);
reject_vbox = GTK_DIALOG (reject_dialog)->vbox;
gtk_widget_set_name (reject_vbox, "reject_vbox");
gtk_widget_show (reject_vbox);
reject_list_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_name (reject_list_scrolledwindow, "reject_list_scrolledwindow");
gtk_widget_show (reject_list_scrolledwindow);
gtk_box_pack_start (GTK_BOX (reject_vbox), reject_list_scrolledwindow, TRUE, TRUE, 0);
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (reject_list_scrolledwindow), GTK_SHADOW_IN);
program_list = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
gtk_widget_set_name (program_list, "program_list");
gtk_widget_show (program_list);
gtk_container_add (GTK_CONTAINER (reject_list_scrolledwindow), program_list);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (program_list), TRUE);
add_columns (GTK_TREE_VIEW (program_list));
reject_button_area = GTK_DIALOG (reject_dialog)->action_area;
gtk_widget_set_name (reject_button_area, "reject_button_area");
gtk_widget_show (reject_button_area);
gtk_button_box_set_layout (GTK_BUTTON_BOX (reject_button_area), GTK_BUTTONBOX_END);
cancel_button = gtk_button_new_from_stock ("gtk-cancel");
gtk_widget_set_name (cancel_button, "cancel_button");
gtk_widget_show (cancel_button);
gtk_dialog_add_action_widget (GTK_DIALOG (reject_dialog), cancel_button, GTK_RESPONSE_CANCEL);
GTK_WIDGET_SET_FLAGS (cancel_button, GTK_CAN_DEFAULT);
ok_button = gtk_button_new_from_stock ("gtk-ok");
gtk_widget_set_name (ok_button, "ok_button");
gtk_widget_show (ok_button);
gtk_dialog_add_action_widget (GTK_DIALOG (reject_dialog), ok_button, GTK_RESPONSE_OK);
GTK_WIDGET_SET_FLAGS (ok_button, GTK_CAN_DEFAULT);
g_signal_connect(reject_dialog,
"response",
G_CALLBACK(reject_button_press),
NULL);
g_signal_connect(reject_dialog,
"delete-event",
G_CALLBACK(reject_window_close),
NULL);
g_signal_connect(program_list,
"button-press-event",
G_CALLBACK(popup_button_pressed),
NULL);
g_signal_connect(program_list,
"popup-menu",
G_CALLBACK(view_on_popup_menu),
NULL);
gtk_widget_grab_focus (program_list);
gtk_window_set_default_size(GTK_WINDOW(reject_dialog), 500, 400);
return reject_dialog;
}
void reject_button_press (GtkDialog * dialog, gint answer, gpointer data)
{
if (answer == GTK_RESPONSE_OK || answer == GTK_RESPONSE_CANCEL)
{
gtk_widget_hide(GTK_WIDGET(dialog));
}
}
void reject_window_close (GtkDialog * dialog, gpointer data)
{
gtk_widget_hide(GTK_WIDGET(dialog));
}
void
handle_popup_profile (GtkWidget *menuitem, gpointer userdata)
{
GtkTreeView *treeview = GTK_TREE_VIEW(userdata);
GConfClient *client = gconf_client_get_default();
int profiler_type = gconf_client_get_int(client, CONF_PROFILE_KEY, NULL);
char *cmdline;
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
GtkTreeIter iter;
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
gchar *str_data = NULL;
if (gtk_tree_selection_get_selected(selection, &model, &iter) == TRUE)
{
gint int_data;
GtkListStore *store = GTK_LIST_STORE(model);
gtk_tree_model_get (model, &iter,
0, &str_data,
1, &int_data,
-1);
}
// 0 is YAST, 1 is genprof
if ((profiler_type == 0) && (str_data != NULL))
{
cmdline = "/opt/gnome/bin/gnomesu /sbin/yast2 LogProf";
gnome_execute_terminal_shell(NULL, cmdline);
}
else if ((profiler_type == 1) && (str_data != NULL))
{
/* /usr/sbin/genprof */
cmdline = (char *) malloc(41 + strlen(str_data));
strcpy(cmdline, "/opt/gnome/bin/gnomesu /usr/sbin/genprof ");
strcat(cmdline, str_data);
gnome_execute_terminal_shell(NULL, cmdline);
free(cmdline);
}
if (str_data != NULL)
g_free (str_data);
}
void
handle_popup_remove (GtkWidget *menuitem, gpointer userdata)
{
GtkTreeView *treeview = GTK_TREE_VIEW(userdata);
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
GtkTreeIter iter;
GtkTreeModel *model = gtk_tree_view_get_model(treeview);
if (gtk_tree_selection_get_selected(selection, &model, &iter) == TRUE)
{
gchar *str_data;
gint int_data;
GtkListStore *store = GTK_LIST_STORE(model);
gtk_tree_model_get (model, &iter,
0, &str_data,
1, &int_data,
-1);
g_free (str_data);
decrement_event_count(int_data);
gtk_list_store_remove(store, &iter);
}
}
void
display_popup_menu (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
{
GtkWidget *menu, *remove_item, *profile_item;
menu = gtk_menu_new();
profile_item = gtk_menu_item_new_with_label(_("Profile application"));
remove_item = gtk_menu_item_new_with_label(_("Remove from list"));
g_signal_connect(remove_item,
"activate",
G_CALLBACK(handle_popup_remove),
treeview);
g_signal_connect(profile_item,
"activate",
G_CALLBACK(handle_popup_profile),
treeview);
/* Disabled until we have an easier way of working with logprof */
/* gtk_menu_shell_append(GTK_MENU_SHELL(menu), profile_item);*/
gtk_menu_shell_append(GTK_MENU_SHELL(menu), remove_item);
gtk_widget_show_all(menu);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
(event != NULL) ? event->button : 0,
gdk_event_get_time((GdkEvent*)event));
}
gboolean
popup_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
{
if (event->type == GDK_BUTTON_PRESS && event->button == 3)
{
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
if (gtk_tree_selection_count_selected_rows(selection) <= 1)
{
GtkTreePath *path;
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview),
(gint) event->x,
(gint) event->y,
&path, NULL, NULL, NULL))
{
gtk_tree_selection_unselect_all(selection);
gtk_tree_selection_select_path(selection, path);
gtk_tree_path_free(path);
}
}
display_popup_menu(treeview, event, userdata);
return TRUE;
}
return FALSE;
}
gboolean
view_on_popup_menu (GtkWidget *treeview, gpointer userdata)
{
display_popup_menu(treeview, NULL, userdata);
return TRUE;
}

View File

@@ -1,13 +0,0 @@
#ifndef REJECT_LIST_H
#define REJECT_LIST_H
GtkWidget* create_reject_dialog (GtkListStore *store);
void reject_button_press (GtkDialog * dialog, gint answer, gpointer data);
void reject_window_close (GtkDialog * dialog, gpointer data);
void handle_popup_profile (GtkWidget *menuitem, gpointer userdata);
void handle_popup_remove (GtkWidget *menuitem, gpointer userdata);
void display_popup_menu (GtkWidget *treeview, GdkEventButton *event, gpointer userdata);
gboolean popup_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata);
gboolean view_on_popup_menu (GtkWidget *treeview, gpointer userdata);
#endif

View File

@@ -9,7 +9,6 @@
// Author: Robin Dunn
//
// Created: 13-Jan-2000
// RCS-ID: $Id$
// Copyright: (c) 2000 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////

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