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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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: 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 ,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
Mysql忘记密码操作
Mysql忘记密码操作
13 1
|
2天前
|
SQL 关系型数据库 MySQL
DQL操作MySql
DQL操作MySql
11 0
|
2天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
2天前
|
SQL 关系型数据库 MySQL
mysql命令语句大全
mysql命令语句大全
9 0
|
2天前
|
关系型数据库 MySQL 数据库
MySQL集群 双主架构(配置命令)
MySQL集群 双主架构(配置命令)
|
2天前
|
Oracle 关系型数据库 MySQL
mysql相关命令
使用`mysql -u [username] -p`登录MySQL,例如`mysql -u root -p`,随后输入密码。连接成功后,显示MySQL欢迎信息、版本号和版权详情。要查看所有数据库,运行`SHOW DATABASES;`,列出包括`catbase`, `information_schema`, `mysql`, `performance_schema`, `publiccms`和`sys`在内的8个数据库。
18 1
|
2天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除
|
2天前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
2天前
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
|
2天前
|
关系型数据库 MySQL Java
使用shardingjdbc执行MySQL游标操作时报错
使用shardingjdbc执行MySQL游标操作时报错

推荐镜像

更多