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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:


      下面我将提供一个写好的模块,里面包含了对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:m2dcommands.c,v1.0.0.02007/03/02byOldHawk " ,
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 ,如需转载请自行联系原作者


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
MySQL 自定义变量并声明字符编码
MySQL 自定义变量并声明字符编码
276 1
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
73 0
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
199 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
985 2
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
122 4
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
118 3
Mysql 常用命令
Mysql 常用命令
46 0
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
287 28
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等