2025-04-27 07:49:33 -04:00

125 lines
6.2 KiB
Makefile

/*
@doc NNTPSDK
@topic IMsg Properties | The IMsg object passed into the <om INNTPFilter.OnPost>
and <om INNTPFilterOnPostFinal.OnPostFinal> methods supports the following
properties:
@imsgprops | | | |
@imsgprops header-* | String | Read | NNTP_ON_POST, NNTP_ON_POST_FINAL |
Any property name that starts with "header-" can be used to read
up an article's header. For instance the property "header-from"
would get the contents of the From: header, and "header-subject"
would get the contents of the Subject: header.
@imsgprops | | | |
@imsgprops feedid | Numeric | Read-Only | NNTP_ON_POST, NNTP_ON_POST_FINAL |
Returns the feed id that this message was generated from. It will
return -1 if the message is coming from a client, or -2 if the
message is was picked up from the pickup directory.
@imsgprops | | | |
@imsgprops message stream | Interface | Read-Only | NNTP_ON_POST, NNTP_ON_POST_FINAL |
Returns a read-only IStream pointer with the contents of the message.
@imsgprops | | | |
@imsgprops newsgroups | String | Read/Write | NNTP_ON_POST, NNTP_ON_POST_FINAL |
This returns a comma-delimited list of newsgroups that the message
will be stored in (which may be different then what is in the
Newsgroups header). This is read only during the NNTP_ON_POST_FINAL
event.
@imsgprops post | Numeric | Read/Write | NNTP_ON_POST |
If this is 0 then the post will be failed, any other number will
cause the message to be posted.
@imsgprops | | | |
@imsgprops process control | Numeric | Read/Write | NNTP_ON_POST |
If this is 0 then the server will disable its control message
logic for this message. Any other number will cause the server to
run the control message logic normally.
@imsgprops | | | |
@imsgprops process moderator| Numeric | Read/Write | NNTP_ON_POST |
If this is 0 then the server will disable its moderated posting
logic for this message. Any other number will cause the server to
run the moderated posting logic normally.
@topic Rule Engine Behavior | The NNTP server looks for two properties
under the SourceProperties property bag for each event binding before calling
a sink object. The first is "Rule", which allows headers and metaheaders
values to be examined. The second is "NewsgroupList", which is an explicit
list of newsgroups to act upon.
@head1 Rule property | The rule property is built up from clauses in the
format "header=value1,value2". There can be any number of values, each
separated by commas. If any of the values matches then the clause passes.
The values can include wildcards. If there are no values supplied then just
having the header exist in the message will cause the rule to pass.
@normal There can be many of these clauses in one rule. They
should be separated by semi-colons. All of the clauses must
pass for the rule to pass.
@normal There are two special pseudo-headers called ":newsgroups" and
":feedid". The ":newsgroups" pseudo-header contains the list of newsgroups
that the message will be stored in (note that this may be different then the
Newsgroups header, eg. control messages). With the :newsgroups header each
value is checked against newsgroup that the message will be stored in.
@normal The ":feedid" pseudo-header contains the feed ID which this message
originated from. There are two special feed IDs, -1 and -2. A feed ID of -1
means that the message came from a client posting. A feed ID of -2 means
that the message was picked up through directory pickup. You can use the
:feedid pseudo-header to cause sinks to be called based on where messages
originated from.
@normal By default all string comparisons are case-insensitive. To
change this behavior the clause "case-sensitive" can be used to turn
on case-sensitivity. The clause "case-insensitive" can be used to
turn off case-sensitivity as well. These can be mixed in one rule. The
rule is processed left-to-right.
@exs This example checks for messages with the header X-testhdr with the
contents test: | X-testhdr=test
@exs This example checks for messages with the header X-testhdr with the
contents one or two: | X-testhdr=one,two
@exs This example checks to see if the message contains a control header: |
control=
@exs This example checks for messages with the header from containing the
string "user@company.com" and the header subject containing the string
"forsale": | from=*user@company.com*,forsale
@exs This example checks for all messages which are being stored in the
the alt hierarchy: | :newsgroups=alt.*
@exs This example checks to see if the from header contains the string "test"
in any case and the subject header contains the string "test" in any case: |
case-sensitive;from=TEST;case-insensitive;subject=test
@exs This example checks to see if the from header contains the string "TEST"
in all upper case and the subject header contains the string "test" in any
case: | case-sensitive;from=TEST;case-insensitive;subject=test
@exs This example checks to see if the message originated from a client
posting or from a file picked up through directory pickup: | :feedid=-1,-2
@exs This example checks to see if the message originated from the feeds
with IDs 1, 2, or 7: | :feedid=1,2,7
@head1 NewsgroupList property | The NewsgroupList property contains a
comma delimited list of newsgroups names. These newsgroup names can not
contain any wildcards. If the message is being stored in any of these
newsgroups then the rule will trigger. For a large number of newsgroups
this is faster then using the ":newsgroups" pseudo-header with the "Rule"
property. If no groups are listed supplied then this rule will always fail.
@exs This example checks for messages going to group1 | group1
@exs This example checks for messages going to group1 or group2 | group1,group2
@head1 Mixing Rule Properties | You can use both the Rule and NewsgroupList
property in one event. If both properties are present then they both need to
pass for the sink object to be called. If neither property is present
then the sink object will always be called.
*/