为Unrealircd添加一个model,并加入自定义命令,且操作你的mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:


      下面我将提供一个写好的模块,里面包含了对mysql的操作,你可以直接编译,但直得注意的是,因为你新增了文件,所以还需要修改Makefile来编译它。

      一、m2d_commands.c,存于unrealircd/src/models下,模块文件源码
 1 
 2  #include  " config.h "
 3  #include  " struct.h "
 4  #include  " common.h "
 5  #include  " sys.h "
 6  #include  " numeric.h "
 7  #include  " msg.h "
 8  #include  " proto.h "
 9  #include  " channel.h "
10  #include  < time.h >
11  #include  < sys / stat.h >
12  #include  < stdio.h >
13  #include  < stdlib.h >
14  #include  < string .h >
15  #ifdef _WIN32
16  #include  < io.h >
17  #endif
18  #include  < fcntl.h >
19  #include  " h.h "
20  #ifdef STRIPBADWORDS
21  #include  " badwords.h "
22  #endif
23  #ifdef _WIN32
24  #include  " version.h "
25  #endif
26 
27  DLLFUNC CMD_FUNC(m2d_testcmd);
28 
29  #define  MSG_TESTCMD         "TESTCMD"    
30  #define  TOK_TESTCMD         "2d_a"    
31 
32  ModuleHeader MOD_HEADER(m2d_testcmd)
33     =  {
34       " m2d_commands " ,
35       " $Id: m2d_commands.c,v 1.0.0.0 2007/03/02 by OldHawk $ " ,
36       " Wrapper library for m2d_ commands " ,
37       " 3.2-b8-1 " ,
38      NULL
39      };
40 
41  DLLFUNC  int  MOD_INIT(m2d_testcmd)(ModuleInfo  * modinfo)
42  {
43      CommandAdd(modinfo -> handle, MSG_TESTCMD,        TOK_TESTCMD,        m2d_testcmd,        MAXPARA, M_USER | M_SERVER);
44 
45      MARK_AS_OFFICIAL_MODULE(modinfo);
46       return  MOD_SUCCESS;
47  }
48 
49  DLLFUNC  int  MOD_LOAD(m2d_testcmd)( int  module_load)
50  {
51       return  MOD_SUCCESS;
52  }
53 
54  DLLFUNC  int  MOD_UNLOAD(m2d_testcmd)( int  module_unload)
55  {
56       return  MOD_SUCCESS;
57  }
58 
59  DLLFUNC CMD_FUNC(m2d_testcmd)
60  {
61       if  (parc < 2 ){
62          sendto_one (sptr, err_str (ERR_NEEDMOREPARAMS),    me.name, parv[ 0 ],  " TESTCMD " );
63           return   0 ;
64      }
65      
66       if (my_conn){
67           char  querymsg[BUFSIZE];
68          MYSQL_RES  * res;
69          MYSQL_ROW row;
70           int  rowcount,i;
71          snprintf(querymsg,  sizeof (querymsg),  " select id,question from questions " );
72          res = my_mysql_select(my_conn, querymsg);
73           if (res){
74              rowcount  =  mysql_num_rows(res);
75              i = 0 ;
76               while ((row = mysql_fetch_row(res))){
77                  ircd_log (LOG_SERVER,  " questions %d/%d: [%s]%s " , i, rowcount, row[ 0 ], row[ 1 ]);
78                  i ++ ;
79              }
80          }        
81           if (res) mysql_free_result(res);    
82      }
83      sendto_one (sptr,  " u input testcmd: %s %d " , parv[ 1 ], max_connection_count);
84       return   0 ;
85  }
86 
87 

      二、编译,打开unrealircd/src/models/Makefile,做如下修改
R_MODULES =  \
         m_sethost.so m_chghost.so m_chgident.so m_setname.so \
         m_setident.so m_sdesc.so m_svsmode.so m_swhois.so\
         m_svsmotd.so m_svsnline.so m_who.so m_mkpasswd.so \
         m_away.so m_svsnoop.so m_svso.so m_svsnick.so \
         m_adminchat.so m_akill.so m_chgname.so m_guest.so m_htm.so m_kill.so \
         m_lag.so m_message.so m_nachat.so m_oper.so m_pingpong.so \
         m_quit.so m_rakill.so m_rping.so m_sendumode.so m_sqline.so \
         m_tsctl.so m_unkline.so m_unsqline.so m_unzline.so m_whois.so \
         m_tkl.so m_vhost.so m_cycle.so m_svsjoin.so m_svspart.so \
         m_svswatch.so m_svssilence.so m_sendsno.so m_svssno.so \
         m_sajoin.so m_sapart.so m_samode.so m_kick.so m_topic.so \
         m_invite.so m_list.so m_time.so m_svskill.so m_sjoin.so \
         m_pass.so m_userhost.so m_ison.so m_silence.so m_knock.so \
         m_umode2.so m_squit.so m_protoctl.so m_addline.so m_addomotd.so \
         m_wallops.so m_admin.so m_globops.so m_locops.so m_chatops.so \
         m_trace.so m_netinfo.so m_links.so m_help.so m_rules.so \
         m_close.so m_map.so m_eos.so m_server.so m_stats.so \
         m_svsfline.so m_dccdeny.so m_undccdeny.so m_whowas.so \
         m_connect.so m_dccallow.so m_userip.so m_nick.so m_user.so \
         m_mode.so m_watch.so m_part.so m_join.so m_motd.so m_opermotd.so \
         m_botmotd.so m_lusers.so m_names.so m2d_commands.so
      在文件最后,做如下修改:
cloak.so: cloak.c $(INCLUDES)
        $(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
                -o cloak.so cloak.c

m2d_commands.so: m2d_commands.c $(INCLUDES)
        $(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
                -o m2d_commands.so m2d_commands.c

clean:
        $(RM) -f *.o *.so *~ core
      然后重新make,就会生成m2d_command.so了(win32下是m2d_command.dll)。

      三、修改unrealircd.conf配置文件,找到include部分,修改以下内容:
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";
loadmodule "src/modules/m2d_commands.so";





    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/04/15/713949.html ,如需转载请自行联系原作者


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
11月前
|
存储 自然语言处理 关系型数据库
MySQL 自定义变量并声明字符编码
MySQL 自定义变量并声明字符编码
362 1
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
110 0
|
9月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
11月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
11月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
356 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
11月前
|
存储 SQL 关系型数据库
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
1427 2
|
12月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
165 4
|
12月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
265 3
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
416 28
|
11月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
98 0

推荐镜像

更多