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