From 674c868b225f0c2c0a8f7879dbaa322a8c539bec Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 15 Apr 2005 19:31:08 +0000 Subject: New docs for API: int Module::OnRawMode(userrec* user, char mode, std::string param, bool adding, int pcnt); int Module::OnCheckInvite(userrec* user, chanrec* chan); int Module::OnCheckKey(userrec* user, chanrec* chan, std::string keygiven); int Module::OnCheckLimit(userrec* user, chanrec* chan); int Module::OnCheckBan(userrec* user, chanrec* chan); void Module::OnStats(char symbol); int Module::OnChangeLocalUserHost(userrec* user, std::string newhost); int Module::OnChangeLocalUserGECOS(userrec* user, std::string newhost); int Module::OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic); git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1106 e03df62e-2008-0410-955e-edbf42e46eb7 --- docs/module-doc/modules_8cpp-source.html | 1105 +++++++++++++++--------------- 1 file changed, 557 insertions(+), 548 deletions(-) (limited to 'docs/module-doc/modules_8cpp-source.html') diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index f22eeaa4d..4260924fe 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -344,575 +344,584 @@ 00337 void Module::OnUserRegister(userrec* user) { }; 00338 int Module::OnUserPreKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { return 0; }; 00339 void Module::OnUserKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { }; -00340 -00341 // server is a wrapper class that provides methods to all of the C-style -00342 // exports in the core -00343 // -00344 -00345 Server::Server() -00346 { -00347 } -00348 -00349 Server::~Server() -00350 { -00351 } -00352 -00353 void Server::SendOpers(std::string s) -00354 { -00355 WriteOpers("%s",s.c_str()); +00340 int Module::OnRawMode(userrec* user, char mode, std::string param, bool adding, int pcnt) { return 0; }; +00341 int Module::OnCheckInvite(userrec* user, chanrec* chan) { return 0; }; +00342 int Module::OnCheckKey(userrec* user, chanrec* chan, std::string keygiven) { return 0; }; +00343 int Module::OnCheckLimit(userrec* user, chanrec* chan) { return 0; }; +00344 int Module::OnCheckBan(userrec* user, chanrec* chan) { return 0; }; +00345 void Module::OnStats(char symbol) { }; +00346 int Module::OnChangeLocalUserHost(userrec* user, std::string newhost) { return 0; }; +00347 int Module::OnChangeLocalUserGECOS(userrec* user, std::string newhost) { return 0; }; +00348 int Module::OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { return 0; }; +00349 +00350 // server is a wrapper class that provides methods to all of the C-style +00351 // exports in the core +00352 // +00353 +00354 Server::Server() +00355 { 00356 } 00357 -00358 bool Server::MatchText(std::string sliteral, std::string spattern) +00358 Server::~Server() 00359 { -00360 char literal[MAXBUF],pattern[MAXBUF]; -00361 strlcpy(literal,sliteral.c_str(),MAXBUF); -00362 strlcpy(pattern,spattern.c_str(),MAXBUF); -00363 return match(literal,pattern); -00364 } -00365 -00366 void Server::SendToModeMask(std::string modes, int flags, std::string text) -00367 { -00368 WriteMode(modes.c_str(),flags,"%s",text.c_str()); -00369 } -00370 -00371 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) -00372 { -00373 return add_channel(user,cname.c_str(),key.c_str(),true); -00374 } -00375 -00376 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) -00377 { -00378 return del_channel(user,cname.c_str(),reason.c_str(),false); -00379 } -00380 -00381 chanuserlist Server::GetUsers(chanrec* chan) -00382 { -00383 chanuserlist userl; -00384 userl.clear(); -00385 for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) -00386 { -00387 if (i->second) -00388 { -00389 if (has_channel(i->second,chan)) -00390 { -00391 if (isnick(i->second->nick)) -00392 { -00393 userl.push_back(i->second); -00394 } -00395 } -00396 } -00397 } -00398 return userl; -00399 } -00400 void Server::ChangeUserNick(userrec* user, std::string nickname) -00401 { -00402 force_nickchange(user,nickname.c_str()); -00403 } -00404 -00405 void Server::QuitUser(userrec* user, std::string reason) -00406 { -00407 send_network_quit(user->nick,reason.c_str()); -00408 kill_link(user,reason.c_str()); -00409 } -00410 -00411 bool Server::IsUlined(std::string server) -00412 { -00413 return is_uline(server.c_str()); -00414 } -00415 -00416 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) -00417 { -00418 call_handler(commandname.c_str(),parameters,pcnt,user); -00419 } -00420 -00421 void Server::Log(int level, std::string s) -00422 { -00423 log(level,"%s",s.c_str()); -00424 } -00425 -00426 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams, char* source) -00427 { -00428 createcommand(cmd,f,flags,minparams,source); -00429 } -00430 -00431 void Server::SendMode(char **parameters, int pcnt, userrec *user) -00432 { -00433 server_mode(parameters,pcnt,user); -00434 } -00435 -00436 void Server::Send(int Socket, std::string s) -00437 { -00438 Write(Socket,"%s",s.c_str()); -00439 } -00440 -00441 void Server::SendServ(int Socket, std::string s) -00442 { -00443 WriteServ(Socket,"%s",s.c_str()); -00444 } -00445 -00446 void Server::SendFrom(int Socket, userrec* User, std::string s) -00447 { -00448 WriteFrom(Socket,User,"%s",s.c_str()); -00449 } -00450 -00451 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) -00452 { -00453 if (!Source) -00454 { -00455 // if source is NULL, then the message originates from the local server -00456 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); -00457 } -00458 else -00459 { -00460 // otherwise it comes from the user specified -00461 WriteTo(Source,Dest,"%s",s.c_str()); -00462 } -00463 } -00464 -00465 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) -00466 { -00467 if (IncludeSender) +00360 } +00361 +00362 void Server::SendOpers(std::string s) +00363 { +00364 WriteOpers("%s",s.c_str()); +00365 } +00366 +00367 bool Server::MatchText(std::string sliteral, std::string spattern) +00368 { +00369 char literal[MAXBUF],pattern[MAXBUF]; +00370 strlcpy(literal,sliteral.c_str(),MAXBUF); +00371 strlcpy(pattern,spattern.c_str(),MAXBUF); +00372 return match(literal,pattern); +00373 } +00374 +00375 void Server::SendToModeMask(std::string modes, int flags, std::string text) +00376 { +00377 WriteMode(modes.c_str(),flags,"%s",text.c_str()); +00378 } +00379 +00380 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) +00381 { +00382 return add_channel(user,cname.c_str(),key.c_str(),true); +00383 } +00384 +00385 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) +00386 { +00387 return del_channel(user,cname.c_str(),reason.c_str(),false); +00388 } +00389 +00390 chanuserlist Server::GetUsers(chanrec* chan) +00391 { +00392 chanuserlist userl; +00393 userl.clear(); +00394 for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) +00395 { +00396 if (i->second) +00397 { +00398 if (has_channel(i->second,chan)) +00399 { +00400 if (isnick(i->second->nick)) +00401 { +00402 userl.push_back(i->second); +00403 } +00404 } +00405 } +00406 } +00407 return userl; +00408 } +00409 void Server::ChangeUserNick(userrec* user, std::string nickname) +00410 { +00411 force_nickchange(user,nickname.c_str()); +00412 } +00413 +00414 void Server::QuitUser(userrec* user, std::string reason) +00415 { +00416 send_network_quit(user->nick,reason.c_str()); +00417 kill_link(user,reason.c_str()); +00418 } +00419 +00420 bool Server::IsUlined(std::string server) +00421 { +00422 return is_uline(server.c_str()); +00423 } +00424 +00425 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) +00426 { +00427 call_handler(commandname.c_str(),parameters,pcnt,user); +00428 } +00429 +00430 void Server::Log(int level, std::string s) +00431 { +00432 log(level,"%s",s.c_str()); +00433 } +00434 +00435 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams, char* source) +00436 { +00437 createcommand(cmd,f,flags,minparams,source); +00438 } +00439 +00440 void Server::SendMode(char **parameters, int pcnt, userrec *user) +00441 { +00442 server_mode(parameters,pcnt,user); +00443 } +00444 +00445 void Server::Send(int Socket, std::string s) +00446 { +00447 Write(Socket,"%s",s.c_str()); +00448 } +00449 +00450 void Server::SendServ(int Socket, std::string s) +00451 { +00452 WriteServ(Socket,"%s",s.c_str()); +00453 } +00454 +00455 void Server::SendFrom(int Socket, userrec* User, std::string s) +00456 { +00457 WriteFrom(Socket,User,"%s",s.c_str()); +00458 } +00459 +00460 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) +00461 { +00462 if (!Source) +00463 { +00464 // if source is NULL, then the message originates from the local server +00465 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); +00466 } +00467 else 00468 { -00469 WriteChannel(Channel,User,"%s",s.c_str()); -00470 } -00471 else -00472 { -00473 ChanExceptSender(Channel,User,"%s",s.c_str()); -00474 } -00475 } -00476 -00477 bool Server::CommonChannels(userrec* u1, userrec* u2) -00478 { -00479 return (common_channels(u1,u2) != 0); -00480 } -00481 -00482 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) -00483 { -00484 if (IncludeSender) -00485 { -00486 WriteCommon(User,"%s",text.c_str()); -00487 } -00488 else -00489 { -00490 WriteCommonExcept(User,"%s",text.c_str()); -00491 } -00492 } -00493 -00494 void Server::SendWallops(userrec* User, std::string text) -00495 { -00496 WriteWallOps(User,false,"%s",text.c_str()); -00497 } -00498 -00499 void Server::ChangeHost(userrec* user, std::string host) -00500 { -00501 ChangeDisplayedHost(user,host.c_str()); -00502 } -00503 -00504 void Server::ChangeGECOS(userrec* user, std::string gecos) -00505 { -00506 ChangeName(user,gecos.c_str()); -00507 } -00508 -00509 bool Server::IsNick(std::string nick) -00510 { -00511 return (isnick(nick.c_str()) != 0); -00512 } -00513 -00514 userrec* Server::FindNick(std::string nick) -00515 { -00516 return Find(nick); -00517 } -00518 -00519 chanrec* Server::FindChannel(std::string channel) -00520 { -00521 return FindChan(channel.c_str()); -00522 } -00523 -00524 std::string Server::ChanMode(userrec* User, chanrec* Chan) -00525 { -00526 return cmode(User,Chan); -00527 } -00528 -00529 bool Server::IsOnChannel(userrec* User, chanrec* Chan) -00530 { -00531 return has_channel(User,Chan); -00532 } -00533 -00534 std::string Server::GetServerName() -00535 { -00536 return getservername(); -00537 } -00538 -00539 std::string Server::GetNetworkName() -00540 { -00541 return getnetworkname(); -00542 } -00543 -00544 Admin Server::GetAdmin() -00545 { -00546 return Admin(getadminname(),getadminemail(),getadminnick()); -00547 } -00548 -00549 -00550 -00551 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) -00552 { -00553 if (type == MT_SERVER) -00554 { -00555 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); -00556 return false; -00557 } -00558 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) -00559 { -00560 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); -00561 return false; -00562 } -00563 if ((params_when_on>1) || (params_when_off>1)) -00564 { -00565 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); -00566 return false; -00567 } -00568 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); -00569 } -00570 -00571 bool Server::AddExtendedListMode(char modechar) -00572 { -00573 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); -00574 if (res) -00575 ModeMakeList(modechar); -00576 return res; -00577 } -00578 -00579 int Server::CountUsers(chanrec* c) -00580 { -00581 return usercount(c); -00582 } -00583 -00584 -00585 bool Server::UserToPseudo(userrec* user,std::string message) -00586 { -00587 unsigned int old_fd = user->fd; -00588 user->fd = FD_MAGIC_NUMBER; -00589 Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str()); -00590 close(old_fd); -00591 shutdown (old_fd,2); -00592 } +00469 // otherwise it comes from the user specified +00470 WriteTo(Source,Dest,"%s",s.c_str()); +00471 } +00472 } +00473 +00474 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) +00475 { +00476 if (IncludeSender) +00477 { +00478 WriteChannel(Channel,User,"%s",s.c_str()); +00479 } +00480 else +00481 { +00482 ChanExceptSender(Channel,User,"%s",s.c_str()); +00483 } +00484 } +00485 +00486 bool Server::CommonChannels(userrec* u1, userrec* u2) +00487 { +00488 return (common_channels(u1,u2) != 0); +00489 } +00490 +00491 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) +00492 { +00493 if (IncludeSender) +00494 { +00495 WriteCommon(User,"%s",text.c_str()); +00496 } +00497 else +00498 { +00499 WriteCommonExcept(User,"%s",text.c_str()); +00500 } +00501 } +00502 +00503 void Server::SendWallops(userrec* User, std::string text) +00504 { +00505 WriteWallOps(User,false,"%s",text.c_str()); +00506 } +00507 +00508 void Server::ChangeHost(userrec* user, std::string host) +00509 { +00510 ChangeDisplayedHost(user,host.c_str()); +00511 } +00512 +00513 void Server::ChangeGECOS(userrec* user, std::string gecos) +00514 { +00515 ChangeName(user,gecos.c_str()); +00516 } +00517 +00518 bool Server::IsNick(std::string nick) +00519 { +00520 return (isnick(nick.c_str()) != 0); +00521 } +00522 +00523 userrec* Server::FindNick(std::string nick) +00524 { +00525 return Find(nick); +00526 } +00527 +00528 chanrec* Server::FindChannel(std::string channel) +00529 { +00530 return FindChan(channel.c_str()); +00531 } +00532 +00533 std::string Server::ChanMode(userrec* User, chanrec* Chan) +00534 { +00535 return cmode(User,Chan); +00536 } +00537 +00538 bool Server::IsOnChannel(userrec* User, chanrec* Chan) +00539 { +00540 return has_channel(User,Chan); +00541 } +00542 +00543 std::string Server::GetServerName() +00544 { +00545 return getservername(); +00546 } +00547 +00548 std::string Server::GetNetworkName() +00549 { +00550 return getnetworkname(); +00551 } +00552 +00553 Admin Server::GetAdmin() +00554 { +00555 return Admin(getadminname(),getadminemail(),getadminnick()); +00556 } +00557 +00558 +00559 +00560 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) +00561 { +00562 if (type == MT_SERVER) +00563 { +00564 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); +00565 return false; +00566 } +00567 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) +00568 { +00569 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); +00570 return false; +00571 } +00572 if ((params_when_on>1) || (params_when_off>1)) +00573 { +00574 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); +00575 return false; +00576 } +00577 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); +00578 } +00579 +00580 bool Server::AddExtendedListMode(char modechar) +00581 { +00582 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); +00583 if (res) +00584 ModeMakeList(modechar); +00585 return res; +00586 } +00587 +00588 int Server::CountUsers(chanrec* c) +00589 { +00590 return usercount(c); +00591 } +00592 00593 -00594 bool Server::PseudoToUser(userrec* alive,userrec* zombie,std::string message) +00594 bool Server::UserToPseudo(userrec* user,std::string message) 00595 { -00596 zombie->fd = alive->fd; -00597 alive->fd = FD_MAGIC_NUMBER; -00598 Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick); -00599 kill_link(alive,message.c_str()); -00600 for (int i = 0; i != MAXCHANS; i++) -00601 { -00602 if (zombie->chans[i].channel != NULL) -00603 { -00604 if (zombie->chans[i].channel->name) -00605 { -00606 chanrec* Ptr = zombie->chans[i].channel; -00607 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name); -00608 if (Ptr->topicset) -00609 { -00610 WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic); -00611 WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); -00612 } -00613 userlist(zombie,Ptr); -00614 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name); -00615 WriteServ(zombie->fd,"324 %s %s +%s",zombie->nick, Ptr->name,chanmodes(Ptr)); -00616 WriteServ(zombie->fd,"329 %s %s %d", zombie->nick, Ptr->name, Ptr->created); -00617 -00618 } -00619 } -00620 } -00621 -00622 } -00623 -00624 void Server::AddGLine(long duration, std::string source, std::string reason, std::string hostmask) -00625 { -00626 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00627 } -00628 -00629 void Server::AddQLine(long duration, std::string source, std::string reason, std::string nickname) -00630 { -00631 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); -00632 } -00633 -00634 void Server::AddZLine(long duration, std::string source, std::string reason, std::string ipaddr) -00635 { -00636 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); -00637 } -00638 -00639 void Server::AddKLine(long duration, std::string source, std::string reason, std::string hostmask) -00640 { -00641 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00642 } -00643 -00644 void Server::AddELine(long duration, std::string source, std::string reason, std::string hostmask) -00645 { -00646 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00647 } -00648 -00649 bool Server::DelGLine(std::string hostmask) -00650 { -00651 del_gline(hostmask.c_str()); -00652 } -00653 -00654 bool Server::DelQLine(std::string nickname) -00655 { -00656 del_qline(nickname.c_str()); -00657 } -00658 -00659 bool Server::DelZLine(std::string ipaddr) -00660 { -00661 del_zline(ipaddr.c_str()); -00662 } -00663 -00664 bool Server::DelKLine(std::string hostmask) -00665 { -00666 del_kline(hostmask.c_str()); -00667 } -00668 -00669 bool Server::DelELine(std::string hostmask) -00670 { -00671 del_eline(hostmask.c_str()); -00672 } -00673 -00674 long Server::CalcDuration(std::string delta) -00675 { -00676 return duration(delta.c_str()); -00677 } -00678 -00679 bool Server::IsValidMask(std::string mask) -00680 { -00681 const char* dest = mask.c_str(); -00682 if (strchr(dest,'!')==0) -00683 return false; -00684 if (strchr(dest,'@')==0) -00685 return false; -00686 for (int i = 0; i < strlen(dest); i++) -00687 if (dest[i] < 32) -00688 return false; -00689 for (int i = 0; i < strlen(dest); i++) -00690 if (dest[i] > 126) -00691 return false; -00692 int c = 0; -00693 for (int i = 0; i < strlen(dest); i++) -00694 if (dest[i] == '!') -00695 c++; -00696 if (c>1) -00697 return false; -00698 c = 0; -00699 for (int i = 0; i < strlen(dest); i++) -00700 if (dest[i] == '@') -00701 c++; -00702 if (c>1) -00703 return false; -00704 -00705 return true; -00706 } -00707 -00708 ConfigReader::ConfigReader() -00709 { -00710 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00711 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00712 this->readerror = LoadConf(CONFIG_FILE,this->cache,this->errorlog); -00713 if (!this->readerror) -00714 this->error = CONF_FILE_NOT_FOUND; +00596 unsigned int old_fd = user->fd; +00597 user->fd = FD_MAGIC_NUMBER; +00598 Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str()); +00599 close(old_fd); +00600 shutdown (old_fd,2); +00601 } +00602 +00603 bool Server::PseudoToUser(userrec* alive,userrec* zombie,std::string message) +00604 { +00605 zombie->fd = alive->fd; +00606 alive->fd = FD_MAGIC_NUMBER; +00607 Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick); +00608 kill_link(alive,message.c_str()); +00609 for (int i = 0; i != MAXCHANS; i++) +00610 { +00611 if (zombie->chans[i].channel != NULL) +00612 { +00613 if (zombie->chans[i].channel->name) +00614 { +00615 chanrec* Ptr = zombie->chans[i].channel; +00616 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name); +00617 if (Ptr->topicset) +00618 { +00619 WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic); +00620 WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); +00621 } +00622 userlist(zombie,Ptr); +00623 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name); +00624 WriteServ(zombie->fd,"324 %s %s +%s",zombie->nick, Ptr->name,chanmodes(Ptr)); +00625 WriteServ(zombie->fd,"329 %s %s %d", zombie->nick, Ptr->name, Ptr->created); +00626 +00627 } +00628 } +00629 } +00630 +00631 } +00632 +00633 void Server::AddGLine(long duration, std::string source, std::string reason, std::string hostmask) +00634 { +00635 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00636 } +00637 +00638 void Server::AddQLine(long duration, std::string source, std::string reason, std::string nickname) +00639 { +00640 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); +00641 } +00642 +00643 void Server::AddZLine(long duration, std::string source, std::string reason, std::string ipaddr) +00644 { +00645 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); +00646 } +00647 +00648 void Server::AddKLine(long duration, std::string source, std::string reason, std::string hostmask) +00649 { +00650 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00651 } +00652 +00653 void Server::AddELine(long duration, std::string source, std::string reason, std::string hostmask) +00654 { +00655 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00656 } +00657 +00658 bool Server::DelGLine(std::string hostmask) +00659 { +00660 del_gline(hostmask.c_str()); +00661 } +00662 +00663 bool Server::DelQLine(std::string nickname) +00664 { +00665 del_qline(nickname.c_str()); +00666 } +00667 +00668 bool Server::DelZLine(std::string ipaddr) +00669 { +00670 del_zline(ipaddr.c_str()); +00671 } +00672 +00673 bool Server::DelKLine(std::string hostmask) +00674 { +00675 del_kline(hostmask.c_str()); +00676 } +00677 +00678 bool Server::DelELine(std::string hostmask) +00679 { +00680 del_eline(hostmask.c_str()); +00681 } +00682 +00683 long Server::CalcDuration(std::string delta) +00684 { +00685 return duration(delta.c_str()); +00686 } +00687 +00688 bool Server::IsValidMask(std::string mask) +00689 { +00690 const char* dest = mask.c_str(); +00691 if (strchr(dest,'!')==0) +00692 return false; +00693 if (strchr(dest,'@')==0) +00694 return false; +00695 for (int i = 0; i < strlen(dest); i++) +00696 if (dest[i] < 32) +00697 return false; +00698 for (int i = 0; i < strlen(dest); i++) +00699 if (dest[i] > 126) +00700 return false; +00701 int c = 0; +00702 for (int i = 0; i < strlen(dest); i++) +00703 if (dest[i] == '!') +00704 c++; +00705 if (c>1) +00706 return false; +00707 c = 0; +00708 for (int i = 0; i < strlen(dest); i++) +00709 if (dest[i] == '@') +00710 c++; +00711 if (c>1) +00712 return false; +00713 +00714 return true; 00715 } 00716 -00717 -00718 ConfigReader::~ConfigReader() -00719 { -00720 if (this->cache) -00721 delete this->cache; -00722 if (this->errorlog) -00723 delete this->errorlog; +00717 ConfigReader::ConfigReader() +00718 { +00719 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00720 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00721 this->readerror = LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00722 if (!this->readerror) +00723 this->error = CONF_FILE_NOT_FOUND; 00724 } 00725 00726 -00727 ConfigReader::ConfigReader(std::string filename) +00727 ConfigReader::~ConfigReader() 00728 { -00729 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00730 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00731 this->readerror = LoadConf(filename.c_str(),this->cache,this->errorlog); -00732 if (!this->readerror) -00733 this->error = CONF_FILE_NOT_FOUND; -00734 }; +00729 if (this->cache) +00730 delete this->cache; +00731 if (this->errorlog) +00732 delete this->errorlog; +00733 } +00734 00735 -00736 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) +00736 ConfigReader::ConfigReader(std::string filename) 00737 { -00738 char val[MAXBUF]; -00739 char t[MAXBUF]; -00740 char n[MAXBUF]; -00741 strlcpy(t,tag.c_str(),MAXBUF); -00742 strlcpy(n,name.c_str(),MAXBUF); -00743 int res = ReadConf(cache,t,n,index,val); -00744 if (!res) -00745 { -00746 this->error = CONF_VALUE_NOT_FOUND; -00747 return ""; -00748 } -00749 return std::string(val); -00750 } -00751 -00752 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) -00753 { -00754 char val[MAXBUF]; -00755 char t[MAXBUF]; -00756 char n[MAXBUF]; -00757 strlcpy(t,tag.c_str(),MAXBUF); -00758 strlcpy(n,name.c_str(),MAXBUF); -00759 int res = ReadConf(cache,t,n,index,val); -00760 if (!res) -00761 { -00762 this->error = CONF_VALUE_NOT_FOUND; -00763 return false; -00764 } -00765 std::string s = val; -00766 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); -00767 } -00768 -00769 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) -00770 { -00771 char val[MAXBUF]; -00772 char t[MAXBUF]; -00773 char n[MAXBUF]; -00774 strlcpy(t,tag.c_str(),MAXBUF); -00775 strlcpy(n,name.c_str(),MAXBUF); -00776 int res = ReadConf(cache,t,n,index,val); -00777 if (!res) -00778 { -00779 this->error = CONF_VALUE_NOT_FOUND; -00780 return 0; -00781 } -00782 for (int i = 0; i < strlen(val); i++) -00783 { -00784 if (!isdigit(val[i])) -00785 { -00786 this->error = CONF_NOT_A_NUMBER; -00787 return 0; -00788 } -00789 } -00790 if ((needs_unsigned) && (atoi(val)<0)) -00791 { -00792 this->error = CONF_NOT_UNSIGNED; -00793 return 0; -00794 } -00795 return atoi(val); -00796 } -00797 -00798 long ConfigReader::GetError() -00799 { -00800 long olderr = this->error; -00801 this->error = 0; -00802 return olderr; -00803 } -00804 -00805 void ConfigReader::DumpErrors(bool bail, userrec* user) -00806 { -00807 if (bail) -00808 { -00809 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); -00810 exit(0); -00811 } -00812 else -00813 { -00814 char dataline[1024]; -00815 if (user) -00816 { -00817 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); -00818 while (!errorlog->eof()) -00819 { -00820 errorlog->getline(dataline,1024); -00821 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); -00822 } -00823 } -00824 else +00738 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00739 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00740 this->readerror = LoadConf(filename.c_str(),this->cache,this->errorlog); +00741 if (!this->readerror) +00742 this->error = CONF_FILE_NOT_FOUND; +00743 }; +00744 +00745 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) +00746 { +00747 char val[MAXBUF]; +00748 char t[MAXBUF]; +00749 char n[MAXBUF]; +00750 strlcpy(t,tag.c_str(),MAXBUF); +00751 strlcpy(n,name.c_str(),MAXBUF); +00752 int res = ReadConf(cache,t,n,index,val); +00753 if (!res) +00754 { +00755 this->error = CONF_VALUE_NOT_FOUND; +00756 return ""; +00757 } +00758 return std::string(val); +00759 } +00760 +00761 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) +00762 { +00763 char val[MAXBUF]; +00764 char t[MAXBUF]; +00765 char n[MAXBUF]; +00766 strlcpy(t,tag.c_str(),MAXBUF); +00767 strlcpy(n,name.c_str(),MAXBUF); +00768 int res = ReadConf(cache,t,n,index,val); +00769 if (!res) +00770 { +00771 this->error = CONF_VALUE_NOT_FOUND; +00772 return false; +00773 } +00774 std::string s = val; +00775 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); +00776 } +00777 +00778 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) +00779 { +00780 char val[MAXBUF]; +00781 char t[MAXBUF]; +00782 char n[MAXBUF]; +00783 strlcpy(t,tag.c_str(),MAXBUF); +00784 strlcpy(n,name.c_str(),MAXBUF); +00785 int res = ReadConf(cache,t,n,index,val); +00786 if (!res) +00787 { +00788 this->error = CONF_VALUE_NOT_FOUND; +00789 return 0; +00790 } +00791 for (int i = 0; i < strlen(val); i++) +00792 { +00793 if (!isdigit(val[i])) +00794 { +00795 this->error = CONF_NOT_A_NUMBER; +00796 return 0; +00797 } +00798 } +00799 if ((needs_unsigned) && (atoi(val)<0)) +00800 { +00801 this->error = CONF_NOT_UNSIGNED; +00802 return 0; +00803 } +00804 return atoi(val); +00805 } +00806 +00807 long ConfigReader::GetError() +00808 { +00809 long olderr = this->error; +00810 this->error = 0; +00811 return olderr; +00812 } +00813 +00814 void ConfigReader::DumpErrors(bool bail, userrec* user) +00815 { +00816 if (bail) +00817 { +00818 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); +00819 exit(0); +00820 } +00821 else +00822 { +00823 char dataline[1024]; +00824 if (user) 00825 { -00826 WriteOpers("There were errors in the configuration file:",user->nick); +00826 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); 00827 while (!errorlog->eof()) 00828 { 00829 errorlog->getline(dataline,1024); -00830 WriteOpers(dataline); +00830 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); 00831 } 00832 } -00833 return; -00834 } -00835 } -00836 -00837 -00838 int ConfigReader::Enumerate(std::string tag) -00839 { -00840 return EnumConf(cache,tag.c_str()); -00841 } -00842 -00843 int ConfigReader::EnumerateValues(std::string tag, int index) -00844 { -00845 return EnumValues(cache, tag.c_str(), index); -00846 } -00847 -00848 bool ConfigReader::Verify() -00849 { -00850 return this->readerror; -00851 } -00852 -00853 -00854 FileReader::FileReader(std::string filename) -00855 { -00856 file_cache c; -00857 readfile(c,filename.c_str()); -00858 this->fc = c; -00859 } -00860 -00861 FileReader::FileReader() -00862 { -00863 } -00864 -00865 void FileReader::LoadFile(std::string filename) -00866 { -00867 file_cache c; -00868 readfile(c,filename.c_str()); -00869 this->fc = c; -00870 } -00871 -00872 -00873 FileReader::~FileReader() -00874 { -00875 } -00876 -00877 bool FileReader::Exists() -00878 { -00879 if (fc.size() == 0) -00880 { -00881 return(false); -00882 } -00883 else -00884 { -00885 return(true); -00886 } -00887 } -00888 -00889 std::string FileReader::GetLine(int x) -00890 { -00891 if ((x<0) || (x>fc.size())) -00892 return ""; -00893 return fc[x]; -00894 } -00895 -00896 int FileReader::FileSize() -00897 { -00898 return fc.size(); -00899 } -00900 -00901 -00902 std::vector<Module*> modules(255); -00903 std::vector<ircd_module*> factory(255); +00833 else +00834 { +00835 WriteOpers("There were errors in the configuration file:",user->nick); +00836 while (!errorlog->eof()) +00837 { +00838 errorlog->getline(dataline,1024); +00839 WriteOpers(dataline); +00840 } +00841 } +00842 return; +00843 } +00844 } +00845 +00846 +00847 int ConfigReader::Enumerate(std::string tag) +00848 { +00849 return EnumConf(cache,tag.c_str()); +00850 } +00851 +00852 int ConfigReader::EnumerateValues(std::string tag, int index) +00853 { +00854 return EnumValues(cache, tag.c_str(), index); +00855 } +00856 +00857 bool ConfigReader::Verify() +00858 { +00859 return this->readerror; +00860 } +00861 +00862 +00863 FileReader::FileReader(std::string filename) +00864 { +00865 file_cache c; +00866 readfile(c,filename.c_str()); +00867 this->fc = c; +00868 } +00869 +00870 FileReader::FileReader() +00871 { +00872 } +00873 +00874 void FileReader::LoadFile(std::string filename) +00875 { +00876 file_cache c; +00877 readfile(c,filename.c_str()); +00878 this->fc = c; +00879 } +00880 +00881 +00882 FileReader::~FileReader() +00883 { +00884 } +00885 +00886 bool FileReader::Exists() +00887 { +00888 if (fc.size() == 0) +00889 { +00890 return(false); +00891 } +00892 else +00893 { +00894 return(true); +00895 } +00896 } +00897 +00898 std::string FileReader::GetLine(int x) +00899 { +00900 if ((x<0) || (x>fc.size())) +00901 return ""; +00902 return fc[x]; +00903 } 00904 -00905 int MODCOUNT = -1; -00906 -00907 -
1.3.3
--
cgit v1.3.1-10-gc9f91