feat: add missing KF6 framework recipes
This commit is contained in:
@@ -0,0 +1,684 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language
|
||||
[
|
||||
<!ENTITY symbol "\w\[\]\.@\=/\*\-$%\+!\|&\^:~`#\{\}'<>\?,\\"> <!-- [].@=/*-_$%+!|&^:~`#{}'<>?,\ -->
|
||||
<!ENTITY identifier "[a-zA-Z][\w\-]*">
|
||||
<!ENTITY statementchar "[a-z_\-]">
|
||||
|
||||
<!ENTITY fullIdentifier "[a-zA-Z][\w\-]*(?:\.?[\w\-])*">
|
||||
<!ENTITY mlsLevel "&fullIdentifier;(?:\:&fullIdentifier;(?:\s*,\s*&fullIdentifier;)*)?">
|
||||
]>
|
||||
|
||||
<!--
|
||||
SELinux CIL (Common Interface Language) Policy Syntax Highlighting Definition
|
||||
===============================================================================
|
||||
|
||||
This file is part of the KDE's KSyntaxHighlighting framework.
|
||||
|
||||
SPDX-FileCopyrightText: 2018-2020 Nibaldo González S. <nibgonz@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
===============================================================================
|
||||
|
||||
Based on the Scheme syntax highlighting file (scheme.xml),
|
||||
created by Dominik Haumann (dhaumann@kde.org).
|
||||
|
||||
Last update: secilc 3.0
|
||||
More details about CIL:
|
||||
https://github.com/SELinuxProject/selinux/tree/master/secilc/docs
|
||||
|
||||
Change log:
|
||||
* Version 7 [30-Sep-2020]: Use include-keywods and other minor changes.
|
||||
* Version 6 [25-Aug-2020]: Update colors in brackets.
|
||||
* Version 5 [10-Dec-2019]: Add "glblub" keyword (defaultrange).
|
||||
* Version 4 [03-Oct-2019]: Replace unnecessary WordDetect rules.
|
||||
* Version 3 [02-Apr-2019]: Remove one indentation.
|
||||
* Version 2 [28-Aug-2018]:
|
||||
- Implement "selinux.xml": some rules and keywords are moved there. Improve RegExp
|
||||
highlighting, add Android permissions and BPF permissions, improve IPv6
|
||||
detection and others improvements.
|
||||
- Fix permissions list in "ioctl" kind and "call" statements.
|
||||
- Add "sctp" protocol keyword and policy capabilities keywords.
|
||||
* Version 1 [26-Jan-2018, by Nibaldo González]:
|
||||
- Initial version.
|
||||
-->
|
||||
|
||||
<language name="SELinux CIL Policy"
|
||||
version="10"
|
||||
kateversion="5.53"
|
||||
section="Sources"
|
||||
extensions="*.cil"
|
||||
priority="9"
|
||||
mimetype=""
|
||||
author="Nibaldo González (nibgonz@gmail.com)"
|
||||
license="MIT">
|
||||
|
||||
<highlighting>
|
||||
|
||||
<list name="expr_keys">
|
||||
<item>and</item>
|
||||
<item>or</item>
|
||||
<item>xor</item>
|
||||
<item>not</item>
|
||||
<item>all</item>
|
||||
<item>eq</item>
|
||||
<item>ne</item>
|
||||
<item>neq</item>
|
||||
<item>dom</item>
|
||||
<item>domby</item>
|
||||
<item>incomp</item>
|
||||
<item>range</item>
|
||||
</list>
|
||||
|
||||
<!-- Access Vector Rules -->
|
||||
<list name="access">
|
||||
<item>allow</item>
|
||||
<item>auditallow</item>
|
||||
<item>dontaudit</item>
|
||||
<item>neverallow</item>
|
||||
<item>auditdeny</item>
|
||||
<item>allowx</item>
|
||||
<item>auditallowx</item>
|
||||
<item>dontauditx</item>
|
||||
<item>neverallowx</item>
|
||||
</list>
|
||||
|
||||
<list name="booleans">
|
||||
<item>true</item>
|
||||
<item>false</item>
|
||||
</list>
|
||||
|
||||
<list name="file_types">
|
||||
<item>file</item>
|
||||
<item>dir</item>
|
||||
<item>char</item>
|
||||
<item>block</item>
|
||||
<item>socket</item>
|
||||
<item>pipe</item>
|
||||
<item>symlink</item>
|
||||
<item>any</item>
|
||||
</list>
|
||||
<list name="fs_types">
|
||||
<item>task</item>
|
||||
<item>trans</item>
|
||||
<item>xattr</item>
|
||||
</list>
|
||||
<list name="protocols">
|
||||
<item>tcp</item>
|
||||
<item>udp</item>
|
||||
<item>dccp</item>
|
||||
<item>sctp</item>
|
||||
</list>
|
||||
|
||||
<list name="special_keys">
|
||||
<item>self</item>
|
||||
</list>
|
||||
<list name="classorder_keys">
|
||||
<item>unordered</item>
|
||||
</list>
|
||||
<list name="handleunknown_keys">
|
||||
<item>allow</item>
|
||||
<item>deny</item>
|
||||
<item>reject</item>
|
||||
</list>
|
||||
|
||||
<list name="type_statements">
|
||||
<item>block</item>
|
||||
<item>optional</item>
|
||||
<item>common</item>
|
||||
<item>class</item>
|
||||
<item>classmap</item>
|
||||
<item>classmapping</item>
|
||||
<item>sid</item>
|
||||
<item>user</item>
|
||||
<item>role</item>
|
||||
<item>roleattribute</item>
|
||||
<item>type</item>
|
||||
<item>classpermission</item>
|
||||
<item>typeattribute</item>
|
||||
<item>typealias</item>
|
||||
<item>tunable</item>
|
||||
<item>sensitivity</item>
|
||||
<item>sensitivityalias</item>
|
||||
<item>category</item>
|
||||
<item>categoryalias</item>
|
||||
<item>categoryset</item>
|
||||
<item>level</item>
|
||||
<item>levelrange</item>
|
||||
<item>context</item>
|
||||
<item>ipaddr</item>
|
||||
<item>macro</item>
|
||||
<item>boolean</item>
|
||||
<!-- policycap, classpermissionset -->
|
||||
</list>
|
||||
<list name="policy_config_statements">
|
||||
<item>policycap</item>
|
||||
<item>mls</item>
|
||||
<item>handleunknown</item>
|
||||
</list>
|
||||
<list name="statements">
|
||||
<!-- Container Statements.
|
||||
Also: block, optional, macro -->
|
||||
<item>blockabstract</item>
|
||||
<item>blockinherit</item>
|
||||
<item>in</item>
|
||||
<item>call</item>
|
||||
|
||||
<!-- Default Object Statements -->
|
||||
<item>defaultuser</item>
|
||||
<item>defaultrole</item>
|
||||
<item>defaulttype</item>
|
||||
<item>defaultrange</item>
|
||||
|
||||
<!-- User Statements.
|
||||
Also: user -->
|
||||
<item>userrole</item>
|
||||
<item>userattribute</item>
|
||||
<item>userattributeset</item>
|
||||
<item>userlevel</item>
|
||||
<item>userrange</item>
|
||||
<item>userbounds</item>
|
||||
<item>userprefix</item>
|
||||
<item>selinuxuser</item>
|
||||
<item>selinuxuserdefault</item>
|
||||
|
||||
<!-- Role Statements.
|
||||
Also: role, roleattribute -->
|
||||
<item>roletype</item>
|
||||
<item>roleattributeset</item>
|
||||
<item>roleallow</item>
|
||||
<item>roletransition</item>
|
||||
<item>rolebounds</item>
|
||||
|
||||
<!-- Type Statements.
|
||||
Also: type, typeattribute, typealias -->
|
||||
<item>typealiasactual</item>
|
||||
<item>typeattributeset</item>
|
||||
<item>typebounds</item>
|
||||
<item>typechange</item>
|
||||
<item>typemember</item>
|
||||
<item>typetransition</item>
|
||||
<item>typepermissive</item>
|
||||
<item>attributetype</item>
|
||||
|
||||
<item>expandtypeattribute</item>
|
||||
<item>nametypetransition</item>
|
||||
|
||||
<!-- Class and Permission Statements.
|
||||
Also: common, class, classmap, classmapping, classpermission -->
|
||||
<item>classcommon</item>
|
||||
<item>classorder</item>
|
||||
<item>permission</item>
|
||||
<item>permissionset</item>
|
||||
<item>classpermissionset</item>
|
||||
<item>permissionx</item>
|
||||
|
||||
<!-- Conditional Statements.
|
||||
Also: tunable, boolean -->
|
||||
<item>booleanif</item>
|
||||
<item>tunableif</item>
|
||||
|
||||
<!-- Constraint Statements -->
|
||||
<item>constrain</item>
|
||||
<item>validatetrans</item>
|
||||
<item>mlsconstrain</item>
|
||||
<item>mlsvalidatetrans</item>
|
||||
|
||||
<!-- Multi-Level Security Labeling Statements.
|
||||
Also: sensitivity, sensitivityalias, category, categoryalias, categoryset, level, levelrange -->
|
||||
<item>sensitivityaliasactual</item>
|
||||
<item>sensitivityorder</item>
|
||||
<item>categoryaliasactual</item>
|
||||
<item>categoryorder</item>
|
||||
<item>sensitivitycategory</item>
|
||||
<item>rangetransition</item>
|
||||
<item>categoryrange</item>
|
||||
|
||||
<!-- Context Statement: context -->
|
||||
<!-- SID Statements.
|
||||
Also: sid -->
|
||||
<item>sidorder</item>
|
||||
<item>sidcontext</item>
|
||||
|
||||
<!-- File Labeling Statements -->
|
||||
<item>filecon</item>
|
||||
<item>fsuse</item>
|
||||
<item>genfscon</item>
|
||||
<item>fscon</item>
|
||||
<item>fsusexattr</item>
|
||||
<item>fsusetask</item>
|
||||
<item>fsusetrans</item>
|
||||
|
||||
<!-- Network Labeling Statements.
|
||||
Also: ipaddr -->
|
||||
<item>netifcon</item>
|
||||
<item>nodecon</item>
|
||||
<item>portcon</item>
|
||||
<!-- ipv4_addr, ipv6_addr -->
|
||||
|
||||
<!-- Xen Statements -->
|
||||
<item>iomemcon</item>
|
||||
<item>ioportcon</item>
|
||||
<item>pcidevicecon</item>
|
||||
<item>pirqcon</item>
|
||||
<item>devicetreecon</item>
|
||||
|
||||
<!-- Infiniband Statements -->
|
||||
<item>ibpkeycon</item>
|
||||
<item>ibendportcon</item>
|
||||
|
||||
<!-- Others -->
|
||||
<item>dominance</item>
|
||||
<item>allowxperm</item>
|
||||
<item>auditallowxperm</item>
|
||||
<item>dontauditxperm</item>
|
||||
<item>neverallowxperm</item>
|
||||
</list>
|
||||
|
||||
<list name="type_name">
|
||||
<item>string</item>
|
||||
<item>name</item>
|
||||
<item>ioctl</item> <!-- permissionx -->
|
||||
</list>
|
||||
|
||||
<list name="other_keywords">
|
||||
<item>source</item>
|
||||
<item>target</item>
|
||||
<item>glblub</item> <!-- defaultrange -->
|
||||
<item>low</item>
|
||||
<item>high</item>
|
||||
<item>low-high</item>
|
||||
|
||||
<item>perm</item>
|
||||
<item>object_r</item>
|
||||
<item>t1</item>
|
||||
<item>t2</item>
|
||||
<item>t3</item>
|
||||
<item>r1</item>
|
||||
<item>r2</item>
|
||||
<item>r3</item>
|
||||
<item>u1</item>
|
||||
<item>u2</item>
|
||||
<item>u3</item>
|
||||
<item>l1</item>
|
||||
<item>l2</item>
|
||||
<item>h1</item>
|
||||
<item>h2</item>
|
||||
</list>
|
||||
<list name="policy_capabilities">
|
||||
<include>policy_capabilities##SELinux Policy</include>
|
||||
</list>
|
||||
<list name="filesystem">
|
||||
<include>filesystem##SELinux Policy</include>
|
||||
</list>
|
||||
|
||||
<contexts>
|
||||
|
||||
<context name="_normal" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar context="_rule_bracket_level1" attribute="Brackets Level 1" char="("/>
|
||||
<DetectChar context="#stay" attribute="Error" char=")"/>
|
||||
<IncludeRules context="_common"/>
|
||||
<IncludeRules context="_identifiers"/>
|
||||
</context>
|
||||
<context name="_common" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar context="_comment" attribute="Comment" char=";"/>
|
||||
<DetectChar context="_quoted" attribute="Text Quoted" char="""/>
|
||||
<DetectChar context="_path_content" attribute="Path" char="/"/>
|
||||
|
||||
<!-- IP Address -->
|
||||
<IncludeRules context="_ip_addr##SELinux Policy"/>
|
||||
<!-- Special Characters -->
|
||||
<DetectChar context="#stay" attribute="Special Char" char="*"/>
|
||||
|
||||
<!-- File Contexts: user_u:role_r:type_t:s0:c0 -->
|
||||
<RegExpr context="_file_contexts" attribute="File Contexts" String="\b&fullIdentifier;(?:\:&fullIdentifier;){2}(?:\:&mlsLevel;(?:\s*\-\s*&mlsLevel;)?)?(?:[^&symbol;:]|\s|$)" lookAhead="true"/>
|
||||
<!-- Global Namespace (this avoids highlighting keywords) -->
|
||||
<RegExpr context="#stay" String="(?:\b&identifier;)?(?:\.&identifier;)+(?=\s|[^&symbol;]|$)"/>
|
||||
|
||||
<!-- Numbers -->
|
||||
<HlCHex context="#stay" attribute="Hexadecimal"/>
|
||||
<Float context="#stay" attribute="Number"/>
|
||||
<Int context="#stay" attribute="Number"/>
|
||||
</context>
|
||||
<context name="_identifiers" attribute="Normal Text" lineEndContext="#stay">
|
||||
<!-- Avoid highlighting numbers in identifiers.
|
||||
IMPORTANT: Do not put this rule before the keywords! -->
|
||||
<RegExpr context="#stay" String="&identifier;"/>
|
||||
</context>
|
||||
|
||||
<context name="_comment" attribute="Comment" lineEndContext="#pop">
|
||||
<DetectSpaces />
|
||||
<LineContinue context="#pop" attribute="Comment"/>
|
||||
<IncludeRules context="##Comments"/>
|
||||
<IncludeRules context="_default_comment##SELinux Policy"/>
|
||||
</context>
|
||||
|
||||
<context name="_quoted" attribute="Text Quoted" lineEndContext="#pop">
|
||||
<DetectChar context="#pop" attribute="Text Quoted" char="""/>
|
||||
<IncludeRules context="_regex_quoted##SELinux Policy"/> <!-- This does not support line breaks and line cont. escape -->
|
||||
<RegExpr context="#stay" attribute="Text Quoted Open" String="[^\s"\[\(\\](?=\s*$)"/>
|
||||
</context>
|
||||
|
||||
<context name="_path_content" attribute="Path" lineEndContext="#pop">
|
||||
<DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
|
||||
<RegExpr context="#pop" attribute="Normal Text" String="[^&symbol;]" lookAhead="true"/>
|
||||
|
||||
<IncludeRules context="_default_regex##SELinux Policy"/>
|
||||
<DetectChar context="_square_brackets_cil_path" attribute="RegExp Brackets (Paths)" char="["/>
|
||||
</context>
|
||||
<context name="_square_brackets_cil_path" attribute="RegExp Brackets (Paths)"
|
||||
lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_square_brackets_cil_path_content">
|
||||
<RegExpr context="#pop!_square_brackets_cil_path_content" attribute="Special Char of Brackets (Paths)" String="\^(?=[&symbol;])"/>
|
||||
</context>
|
||||
<context name="_square_brackets_cil_path_content" attribute="RegExp Brackets (Paths)" lineEndContext="#pop">
|
||||
<DetectChar context="#pop" attribute="RegExp Brackets (Paths)" char="]"/>
|
||||
<RegExpr context="#pop" String="[^&symbol;]" lookAhead="true"/>
|
||||
<RegExpr context="#stay" attribute="Open RegExp Brackets (Paths)" String="[^\s\[\]\\](?![&symbol;])"/>
|
||||
<DetectChar context="#stay" attribute="Error" char="["/>
|
||||
<IncludeRules context="_special_chars##SELinux Policy"/>
|
||||
</context>
|
||||
|
||||
<!-- RULES -->
|
||||
|
||||
<!-- Highlighting specific keywords in some rules -->
|
||||
<context name="_filecon_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<keyword context="#pop" attribute="Types" String="file_types"/>
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_portcon_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<keyword context="#pop" attribute="Types" String="protocols"/>
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_fsuse_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<keyword context="#pop" attribute="Types" String="fs_types"/>
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_handleunknown_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<keyword context="#pop" attribute="Access Keys" String="handleunknown_keys"/>
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_policycap_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<keyword context="#stay" attribute="Policy Capability" String="policy_capabilities"/>
|
||||
<IncludeRules context="_common"/>
|
||||
<IncludeRules context="_identifiers"/>
|
||||
</context>
|
||||
<context name="_av_permissions_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_end"/>
|
||||
<IncludeRules context="_av_permissions##SELinux Policy"/>
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_default_end" attribute="Normal Text" lineEndContext="#stay">
|
||||
<AnyChar context="#pop" attribute="Normal Text" String=")(" lookAhead="true"/>
|
||||
</context>
|
||||
|
||||
<context name="_find_ioctl_kind" attribute="Normal Text"
|
||||
lineEndContext="#pop!_av_permissions_statement" fallthrough="true" fallthroughContext="#pop!_av_permissions_statement">
|
||||
<!-- ioctl is a kind in permissionx/accessx statement:
|
||||
(permissionx permissionx_id (ioctl class_id (permission ... | expr ...))) -->
|
||||
<RegExpr context="#pop" attribute="Type Name Statements" String="ioctl(?=\s+[&symbol;]+\s*\()"/>
|
||||
<!-- ioctl can be a kind of permissionx or AV permission -->
|
||||
<RegExpr context="#pop!_av_permissions_statement" attribute="Type Name Statements" String="ioctl(?=\s+[&symbol;]+\s+\d|(?:\s+[&symbol;]+)?\s*(?:$|;))"/>
|
||||
</context>
|
||||
|
||||
<context name="_default_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<WordDetect context="_handleunknown_statement" attribute="Policy Config. Statements" String="handleunknown"/>
|
||||
<WordDetect context="_policycap_statement" attribute="Policy Config. Statements" String="policycap"/>
|
||||
<WordDetect context="_filecon_statement" attribute="Statements" String="filecon"/>
|
||||
<WordDetect context="_fsuse_statement" attribute="Statements" String="fsuse"/>
|
||||
<WordDetect context="_portcon_statement" attribute="Statements" String="portcon"/>
|
||||
<!-- Fix permissions list if the keywords "ioctl" or "call" are not statements,
|
||||
but a permissions (see "av_permissions" keyword list of "selinux.xml"). -->
|
||||
<RegExpr context="_av_permissions_statement" String="\b(?:call|ioctl)\s*\)" lookAhead="true"/>
|
||||
<WordDetect context="_find_ioctl_kind" String="ioctl" lookAhead="true"/>
|
||||
<WordDetect context="_av_permissions_statement" attribute="Statements" String="call"/>
|
||||
|
||||
<keyword context="#stay" attribute="Policy Config. Statements" String="policy_config_statements"/>
|
||||
<keyword context="#stay" attribute="Type Statements" String="type_statements"/>
|
||||
<keyword context="#stay" attribute="Statements" String="statements"/>
|
||||
<keyword context="#stay" attribute="Expression Keys" String="expr_keys"/>
|
||||
<keyword context="#stay" attribute="Access Keys" String="access"/>
|
||||
|
||||
<keyword context="#stay" attribute="Booleans" String="booleans"/>
|
||||
<keyword context="#stay" attribute="Type Name Statements" String="classorder_keys"/>
|
||||
<keyword context="#stay" attribute="Type Name Statements" String="type_name"/>
|
||||
</context>
|
||||
<context name="_default_rule" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_common"/>
|
||||
<keyword context="#stay" attribute="Booleans" String="booleans"/>
|
||||
<keyword context="#stay" attribute="Special Keys" String="special_keys"/>
|
||||
|
||||
<StringDetect context="#stay" attribute="Other Keywords" String="<root>"/>
|
||||
<StringDetect context="#stay" attribute="Other Keywords" String="<node>"/>
|
||||
<StringDetect context="#stay" attribute="Other Keywords" String="<src_info>"/>
|
||||
<StringDetect context="#stay" attribute="Other Keywords" String="<src_cil>"/>
|
||||
<StringDetect context="#stay" attribute="Other Keywords" String="<src_hll>"/>
|
||||
<keyword context="#stay" attribute="Other Keywords" String="other_keywords"/>
|
||||
<keyword context="#stay" attribute="Filesystem" String="filesystem"/>
|
||||
|
||||
<IncludeRules context="_identifiers"/>
|
||||
</context>
|
||||
<context name="_default_rule_without_statement" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_av_permissions##SELinux Policy"/>
|
||||
</context>
|
||||
<context name="_default_rule_bracket" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectSpaces context="#stay" attribute="Normal Text"/>
|
||||
<DetectChar context="_comment" attribute="Comment" char=";"/>
|
||||
</context>
|
||||
|
||||
<!-- Levels of rule brackets.
|
||||
Only the first word of a rule can be highlighted as a statement keyword. -->
|
||||
<context name="_rule_bracket_level1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level1" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/> <!-- Detect spaces & comments -->
|
||||
<!-- Detect first word -->
|
||||
<RegExpr context="#pop!_statement_level1" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level1" lineEndContext="#pop!_rule_level1">
|
||||
<!-- When writing a statement and then a delimiter (like a space), go to the context "_rule_level1" -->
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level1" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level1" attribute="Normal Text" lineEndContext="#stay"> <!-- Rule content -->
|
||||
<DetectChar attribute="Brackets Level 2" context="_rule_bracket_level2" char="("/>
|
||||
<DetectChar attribute="Brackets Level 1" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level1" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level1"/>
|
||||
</context>
|
||||
|
||||
<context name="_rule_bracket_level2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level2" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/>
|
||||
<RegExpr context="#pop!_statement_level2" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level2" lineEndContext="#pop!_rule_level2">
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level2" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level2" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Brackets Level 3" context="_rule_bracket_level3" char="("/>
|
||||
<DetectChar attribute="Brackets Level 2" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level2" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level2"/>
|
||||
</context>
|
||||
|
||||
<context name="_rule_bracket_level3" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level3" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/>
|
||||
<RegExpr context="#pop!_statement_level3" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level3" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level3" lineEndContext="#pop!_rule_level3">
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level3" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level3" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Brackets Level 4" context="_rule_bracket_level4" char="("/>
|
||||
<DetectChar attribute="Brackets Level 3" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level3" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level3"/>
|
||||
</context>
|
||||
|
||||
<context name="_rule_bracket_level4" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level4" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/>
|
||||
<RegExpr context="#pop!_statement_level4" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level4" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level4" lineEndContext="#pop!_rule_level4">
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level4" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level4" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Brackets Level 5" context="_rule_bracket_level5" char="("/>
|
||||
<DetectChar attribute="Brackets Level 4" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level4" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level4"/>
|
||||
</context>
|
||||
|
||||
<context name="_rule_bracket_level5" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level5" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/>
|
||||
<RegExpr context="#pop!_statement_level5" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level5" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level5" lineEndContext="#pop!_rule_level5">
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level5" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level5" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Brackets Level 6" context="_rule_bracket_level6" char="("/>
|
||||
<DetectChar attribute="Brackets Level 5" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level5" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level5"/>
|
||||
</context>
|
||||
|
||||
<context name="_rule_bracket_level6" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level6" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_bracket"/>
|
||||
<RegExpr context="#pop!_statement_level6" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_statement_level6" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level6" lineEndContext="#pop!_rule_level6">
|
||||
<IncludeRules context="_default_statement"/>
|
||||
<RegExpr context="#pop!_rule_without_statement_level6" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_rule_level6" attribute="Normal Text" lineEndContext="#stay">
|
||||
<DetectChar attribute="Brackets Level 1" context="_rule_bracket_level1" char="("/>
|
||||
<DetectChar attribute="Brackets Level 6" context="#pop" char=")" />
|
||||
<IncludeRules context="_default_rule"/>
|
||||
</context>
|
||||
<context name="_rule_without_statement_level6" attribute="Normal Text" lineEndContext="#stay">
|
||||
<IncludeRules context="_default_rule_without_statement"/>
|
||||
<IncludeRules context="_rule_level6"/>
|
||||
</context>
|
||||
|
||||
<!-- File Contexts -->
|
||||
<!-- user:role:type -->
|
||||
<context name="_file_contexts" attribute="File Contexts" lineEndContext="#pop">
|
||||
<DetectChar context="#pop!_fc_role" attribute="Normal Text" char=":"/>
|
||||
<DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_fc_role" attribute="File Contexts" lineEndContext="#pop">
|
||||
<DetectChar context="#pop!_fc_type" attribute="Normal Text" char=":"/>
|
||||
<DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
|
||||
</context>
|
||||
<context name="_fc_type" attribute="File Contexts (Type Enforcement)" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<RegExpr context="#pop!_fc_mls" attribute="File Contexts (Type Enforcement)" String="&fullIdentifier;(?=\:&mlsLevel;)"/> <!-- Find Level/Range -->
|
||||
<RegExpr context="#pop" attribute="File Contexts (Type Enforcement)" String="&fullIdentifier;"/>
|
||||
</context>
|
||||
<!-- (MLS/MCS) user:role:type:level -->
|
||||
<context name="_fc_mls" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<DetectChar context="#pop!_fc_level_range_sen" attribute="Normal Text" char=":"/>
|
||||
</context>
|
||||
<context name="_fc_level_range_sen" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<RegExpr context="#pop!_fc_level_range_cat" attribute="Normal Text" String=":(?=&identifier;)"/> <!-- Find Category -->
|
||||
<RegExpr context="#pop!_fc_level_sen" attribute="Normal Text" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
|
||||
<RegExpr context="#stay" attribute="Normal Text" String="\.(?=&identifier;)"/>
|
||||
<IncludeRules context="_default_fc_level"/>
|
||||
</context>
|
||||
<context name="_fc_level_range_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<RegExpr context="#pop!_fc_level_sen" attribute="Normal Text" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
|
||||
<RegExpr context="#stay" attribute="Normal Text" String="(?:\.|\s*,\s*)(?=&identifier;)"/>
|
||||
<IncludeRules context="_default_fc_level"/>
|
||||
</context>
|
||||
<!-- (MLS/MCS) user:role:type:level-level -->
|
||||
<context name="_fc_level_sen" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<RegExpr context="#pop!_fc_level_cat" attribute="Normal Text" String=":(?=&identifier;)"/> <!-- Find Category -->
|
||||
<RegExpr context="#stay" attribute="Normal Text" String="\.(?=&identifier;)"/>
|
||||
<IncludeRules context="_default_fc_level"/>
|
||||
</context>
|
||||
<context name="_fc_level_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<RegExpr context="#stay" attribute="Normal Text" String="(?:\.|\s*,\s*)(?=&identifier;)"/>
|
||||
<IncludeRules context="_default_fc_level"/>
|
||||
</context>
|
||||
<context name="_default_fc_level" attribute="File Contexts" lineEndContext="#pop">
|
||||
<RegExpr context="#stay" attribute="File Contexts" String="\w+"/>
|
||||
<DetectChar context="#stay" attribute="File Contexts" char="-"/>
|
||||
</context>
|
||||
|
||||
</contexts>
|
||||
|
||||
<itemDatas>
|
||||
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
|
||||
<itemData name="Comment" defStyleNum="dsComment"/>
|
||||
<itemData name="Text Quoted" defStyleNum="dsString" spellChecking="false"/>
|
||||
<itemData name="Path" defStyleNum="dsNormal" spellChecking="false"/>
|
||||
|
||||
<itemData name="Statements" defStyleNum="dsKeyword" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Type Statements" defStyleNum="dsFunction" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Policy Config. Statements" defStyleNum="dsPreprocessor" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Access Keys" defStyleNum="dsWarning" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Expression Keys" defStyleNum="dsVariable" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Type Name Statements" defStyleNum="dsDataType" bold="1" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Booleans" defStyleNum="dsExtension" bold="1" spellChecking="false"/>
|
||||
|
||||
<itemData name="Types" defStyleNum="dsDataType" bold="0" spellChecking="false"/>
|
||||
<itemData name="Special Keys" defStyleNum="dsOthers" spellChecking="false"/>
|
||||
<itemData name="File Contexts" defStyleNum="dsSpecialString" bold="0" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="File Contexts (Type Enforcement)" defStyleNum="dsInformation" bold="0" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Policy Capability" defStyleNum="dsPreprocessor" bold="0" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="Filesystem" defStyleNum="dsNormal" italic="1" spellChecking="false"/>
|
||||
<itemData name="Other Keywords" defStyleNum="dsNormal" italic="1" spellChecking="false"/>
|
||||
|
||||
<itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
|
||||
<itemData name="Hexadecimal" defStyleNum="dsBaseN" spellChecking="false"/>
|
||||
|
||||
<!-- Obtained from "scheme.xml" -->
|
||||
<itemData name="Brackets Level 1" defStyleNum="dsNormal" color="#c6262e" bold="1" spellChecking="false"/>
|
||||
<itemData name="Brackets Level 2" defStyleNum="dsNormal" color="#ff8800" bold="1" spellChecking="false"/>
|
||||
<itemData name="Brackets Level 3" defStyleNum="dsNormal" color="#888800" bold="1" spellChecking="false"/>
|
||||
<itemData name="Brackets Level 4" defStyleNum="dsNormal" color="#009400" bold="1" spellChecking="false"/>
|
||||
<itemData name="Brackets Level 5" defStyleNum="dsNormal" color="#3689e6" bold="1" spellChecking="false"/>
|
||||
<itemData name="Brackets Level 6" defStyleNum="dsNormal" color="#a56de2" bold="1" spellChecking="false"/>
|
||||
|
||||
<itemData name="Special Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
|
||||
<itemData name="Special Char of Brackets (Paths)" defStyleNum="dsAnnotation" bold="0" italic="0" underline="0" spellChecking="false"/>
|
||||
<itemData name="RegExp Brackets (Paths)" defStyleNum="dsSpecialString" spellChecking="false"/>
|
||||
<itemData name="Open RegExp Brackets (Paths)" defStyleNum="dsSpecialString" underline="1" spellChecking="false"/>
|
||||
<itemData name="Text Quoted Open" defStyleNum="dsString" underline="1" spellChecking="false"/>
|
||||
|
||||
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
|
||||
</itemDatas>
|
||||
|
||||
</highlighting>
|
||||
|
||||
<general>
|
||||
<keywords casesensitive="true" additionalDeliminator=""'`" weakDeliminator="-"/>
|
||||
<comments>
|
||||
<comment name="singleLine" start=";"/>
|
||||
</comments>
|
||||
</general>
|
||||
|
||||
</language>
|
||||
<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->
|
||||
Reference in New Issue
Block a user