/**********************************************************************
 * PTlink IRC Services is (C) CopyRight PTlink IRC Software 1999-2005 *
 *                     http://software.pt-link.net                    *
 * This program is distributed under GNU Public License               *
 * Please read the file COPYING for copyright information.            *
 **********************************************************************  

  Description: operserv global command
                                                                                
 *  $Id: os_global.c,v 1.5 2005/11/03 21:46:01 jpinto Exp $
*/
#include "module.h"
#include "ns_group.h"
#include "lang/os_global.lh"
#include "lang/common.lh"

SVS_Module mod_info =
/* module, version, description */
{ "os_global", "1.2", "operserv global/globalmsg command" };

/* Change Log
  1.2 - security fix
  1.1 - 0000285: os_globalmsg to send global with private message
*/
  
/* external functions we need */
ServiceUser* (*operserv_suser)(void);

MOD_REQUIRES 
  MOD_FUNC(operserv_suser)
  MOD_FUNC(is_soper)
MOD_END

/* internal functions */
       
/* available commands from module */
void os_global(IRC_User *s, IRC_User *u);
void os_globalmsg(IRC_User *s, IRC_User *u);

ServiceUser *osu;

int mod_load(void)
{
  osu = operserv_suser();
  suser_add_cmd(osu, "GLOBAL", os_global, GLOBAL_SUMMARY, GLOBAL_HELP);  
  suser_add_cmd(osu, "GLOBALMSG", os_globalmsg, GLOBALMSG_SUMMARY, GLOBALMSG_HELP);    
  return 0;
}

void mod_unload(void)
{
  suser_del_mod_cmds(osu, &mod_info);
}
 
/* s = service the command was sent to
   u = user the command was sent from */
void os_global(IRC_User *s, IRC_User *u)
{
  char *hostmask = strtok(NULL, " ");  
  char *msg = strtok(NULL, "");

  if (!is_soper(u->snid))
  {
    send_lang(u, s, PERMISSION_DENIED);
    return;
  }
  
  if(IsNull(hostmask) || *hostmask=='\0' || IsNull(msg)|| *msg=='\0')
      send_lang(u, s, GLOBAL_SYNTAX);      
  else 
      irc_GlobalNotice(s, hostmask, "%s", msg);
}

/* s = service the command was sent to
   u = user the command was sent from */
void os_globalmsg(IRC_User *s, IRC_User *u)
{
  char *hostmask = strtok(NULL, " ");  
  char *msg = strtok(NULL, "");

  if (!is_soper(u->snid))
  {
    send_lang(u, s, PERMISSION_DENIED);
    return;
  }

  
  if(IsNull(hostmask) || *hostmask=='\0' || IsNull(msg)|| *msg=='\0')
      send_lang(u, s, GLOBAL_SYNTAX);      
  else 
      irc_GlobalMessage(s, hostmask, "%s", msg);
}


syntax highlighted by Code2HTML, v. 0.9.1