|
|
|
//
|
|
|
|
// File : libkvistr.cpp
|
|
|
|
// Creation date : Thu Dec 27 2001 17:13:12 GMT by Szymon Stefanek
|
|
|
|
//
|
|
|
|
// This str is part of the KVirc irc client distribution
|
|
|
|
// Copyright (C) 2001 Szymon Stefanek (pragma at kvirc dot net)
|
|
|
|
//
|
|
|
|
// 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 opinion) 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.
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "kvi_module.h"
|
|
|
|
|
|
|
|
#include "kvi_locale.h"
|
|
|
|
#include "kvi_string.h"
|
|
|
|
#include "kvi_ircmask.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
@doc: mask.match
|
|
|
|
@type:
|
|
|
|
function
|
|
|
|
@title:
|
|
|
|
$mask.match
|
|
|
|
@short:
|
|
|
|
Matches a mask agains a wildcarded one
|
|
|
|
@syntax:
|
|
|
|
<boolean> $mask.match(<wildcard_mask:string>,<fixed_mask:string>)
|
|
|
|
@description:
|
|
|
|
Returns 1 if the <wildcard_mask> matches <fixed_mask> and 0 otherwise.
|
|
|
|
<wildcard_mask> can obviously contain wildcards ('*' and '?').
|
|
|
|
@example:
|
|
|
|
[example]
|
|
|
|
[cmd]if[/cmd]($mask.match(*!*@*.linux.it,$0))
|
|
|
|
[cmd]op[/cmd] [fnc]$mask.nick[/fnc]($0)
|
|
|
|
[/example]
|
|
|
|
*/
|
|
|
|
|
|
|
|
static bool mask_kvs_fnc_match(KviKvsModuleFunctionCall * c)
|
|
|
|
{
|
|
|
|
|
|
|
|
TQString wildmask,fixedmask;
|
|
|
|
KVSM_PARAMETERS_BEGIN(c)
|
|
|
|
KVSM_PARAMETER("wildcard mask",KVS_PT_STRING,0,wildmask)
|
|
|
|
KVSM_PARAMETER("fixed mask",KVS_PT_STRING,0,fixedmask)
|
|
|
|
KVSM_PARAMETERS_END(c)
|
|
|
|
KviIrcMask mk1(wildmask);
|
|
|
|
KviIrcMask mk2(fixedmask);
|
|
|
|
c->returnValue()->setBoolean(mk1.matchesFixed(mk2.nick(),mk2.user(),mk2.host()));
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@doc: mask.nick
|
|
|
|
@type:
|
|
|
|
function
|
|
|
|
@title:
|
|
|
|
$mask.nick
|
|
|
|
@short:
|
|
|
|
Returns the nick part of an IRC mask
|
|
|
|
@syntax:
|
|
|
|
<string> $mask.nick(<mask:string>)
|
|
|
|
@description:
|
|
|
|
Returns the nickname part of an IRC mask.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static bool mask_kvs_fnc_nick(KviKvsModuleFunctionCall * c)
|
|
|
|
{
|
|
|
|
|
|
|
|
TQString mask;
|
|
|
|
KVSM_PARAMETERS_BEGIN(c)
|
|
|
|
KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
|
|
|
|
KVSM_PARAMETERS_END(c)
|
|
|
|
KviIrcMask mk(mask);
|
|
|
|
c->returnValue()->setString(mk.nick());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
@doc: mask.user
|
|
|
|
@type:
|
|
|
|
function
|
|
|
|
@title:
|
|
|
|
$mask.user
|
|
|
|
@short:
|
|
|
|
Returns the username part of an IRC mask
|
|
|
|
@syntax:
|
|
|
|
<string> $mask.user(<mask:string>)
|
|
|
|
@description:
|
|
|
|
Returns the username part of an IRC mask.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static bool mask_kvs_fnc_user(KviKvsModuleFunctionCall * c)
|
|
|
|
{
|
|
|
|
|
|
|
|
TQString mask;
|
|
|
|
KVSM_PARAMETERS_BEGIN(c)
|
|
|
|
KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
|
|
|
|
KVSM_PARAMETERS_END(c)
|
|
|
|
KviIrcMask mk(mask);
|
|
|
|
c->returnValue()->setString(mk.user());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@doc: mask.host
|
|
|
|
@type:
|
|
|
|
function
|
|
|
|
@title:
|
|
|
|
$mask.host
|
|
|
|
@short:
|
|
|
|
Returns the hostname part of an IRC mask
|
|
|
|
@syntax:
|
|
|
|
<string> $mask.host(<mask:string>)
|
|
|
|
@description:
|
|
|
|
Returns the hostname part of an IRC mask.
|
|
|
|
*/
|
|
|
|
|
|
|
|
static bool mask_kvs_fnc_host(KviKvsModuleFunctionCall * c)
|
|
|
|
{
|
|
|
|
TQString mask;
|
|
|
|
KVSM_PARAMETERS_BEGIN(c)
|
|
|
|
KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
|
|
|
|
KVSM_PARAMETERS_END(c)
|
|
|
|
KviIrcMask mk(mask);
|
|
|
|
c->returnValue()->setString(mk.host());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@doc: mask.hasnumerichost
|
|
|
|
@type:
|
|
|
|
function
|
|
|
|
@title:
|
|
|
|
$mask.hasNumericHost
|
|
|
|
@short:
|
|
|
|
Checks if a host part of a mask is numeric
|
|
|
|
@syntax:
|
|
|
|
<boolean> $mask.hasNumericHost(<mask: string>)
|
|
|
|
@description:
|
|
|
|
Returns 1 if the hostname part of the mask is numeric (e.g : unresolved IPV4 or IPV6 address)
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
static bool mask_kvs_fnc_hasnumerichost(KviKvsModuleFunctionCall * c)
|
|
|
|
{
|
|
|
|
TQString mask;
|
|
|
|
KVSM_PARAMETERS_BEGIN(c)
|
|
|
|
KVSM_PARAMETER("mask",KVS_PT_STRING,0,mask)
|
|
|
|
KVSM_PARAMETERS_END(c)
|
|
|
|
KviIrcMask mk(mask);
|
|
|
|
c->returnValue()->setBoolean(mk.hasNumericHost());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************************/
|
|
|
|
// Module stuff
|
|
|
|
/********************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static bool mask_module_init(KviModule * m)
|
|
|
|
{
|
|
|
|
KVSM_REGISTER_FUNCTION(m,"match",mask_kvs_fnc_match);
|
|
|
|
KVSM_REGISTER_FUNCTION(m,"nick",mask_kvs_fnc_nick);
|
|
|
|
KVSM_REGISTER_FUNCTION(m,"user",mask_kvs_fnc_user);
|
|
|
|
KVSM_REGISTER_FUNCTION(m,"host",mask_kvs_fnc_host);
|
|
|
|
KVSM_REGISTER_FUNCTION(m,"hasnumerichost",mask_kvs_fnc_hasnumerichost);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
static bool mask_module_cleanup(KviModule *m)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
KVIRC_MODULE(
|
|
|
|
"File", // module name
|
|
|
|
"1.0.0", // module version
|
|
|
|
"Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)",
|
|
|
|
"Mask manipulation functions",
|
|
|
|
mask_module_init,
|
|
|
|
0,
|
|
|
|
0,
|
|
|
|
mask_module_cleanup
|
|
|
|
)
|