为Unrealircd添加一个配置项

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
      前面在为unrealircd增加mysql连接中涉及到要为unrealircd添加配置项,下面一步一步说明如何操作:

      一、打开unraelircd.conf,在最后面加上如下内容:
1  set  {
2       /*  Mysql connect config  */
3      mysql - host     " localhost " ;
4      mysql - user     " root " ;
5      mysql - pass     " 123456 " ;
6      mysql - database     " iuircd " ;
7  };

      上面的内容你可以加在文件尾部,也可以找到原来的set项,把这四个变量值加进去。

      二、打开unrealircd/include/dynconf.h,在150行左右,修改如下代码:

 

 1     int timesynch_timeout;
 2     char *timesynch_server;
 3     int pingpong_warning;
 4     aNetwork network;
  5     //add by oldhawk
 6     char *mysql_host;
 7     char *mysql_user;
 8     char *mysql_pass;
 9     char *mysql_database;
10     //add end
11 

       在270行左右,修改如下代码:

#define TIMESYNCH    iConf.timesynch_enabled
#define TIMESYNCH_TIMEOUT    iConf.timesynch_timeout
#define TIMESYNCH_SERVER    iConf.timesynch_server

#define PINGPONG_WARNING    iConf.pingpong_warning

//add by oldhawk
#define MYSQL_HOST                iConf.mysql_host
#define MYSQL_USER                iConf.mysql_user
#define MYSQL_PASS                iConf.mysql_pass
#define MYSQL_DATABASE            iConf.mysql_database
//add end

      在380行左右,修改如下代码:
    unsigned has_options_allow_part_if_shunned:1;
    int cgiirc_type; /* cheat :( */
    unsigned has_cgiirc_hosts:1;
    unsigned has_cgiirc_webpass:1;

     //add by oldhawk
    unsigned has_mysql_host:1;
    unsigned has_mysql_user:1;
    unsigned has_mysql_pass:1;
    unsigned has_mysql_database:1;
    //add end

      三、打开unrealircd/src/s_conf.c,在1500行左右,修改如下代码:
 1     ircfree(i->network.x_prefix_quit);
 2     ircfree(i->network.x_helpchan);
 3     ircfree(i->network.x_stats_server);
 4     ircfree(i->spamfilter_ban_reason);
 5     ircfree(i->spamfilter_virus_help_channel);
 6     ircfree(i->spamexcept_line);
  7     //add by oldhawk
 8     ircfree(i->mysql_host);
 9     ircfree(i->mysql_user);
10     ircfree(i->mysql_pass);
11     ircfree(i->mysql_database);
12     //add end
13 
     上面的修改,如果你配置的值是数字型的就免了吧,不用free,如果是字符串型的,则不能少。
      在2430行左右,修改如下代码:
    if (!settings.has_help_channel)
        Error("set::help-channel is missing");
    if (!settings.has_hiddenhost_prefix)
        Error("set::hiddenhost-prefix is missing");

     //add by oldhawk
    if (!settings.has_mysql_host)
        Error("set::mysql-host is missing");
    if (!settings.has_mysql_user)
        Error("set::mysql-user is missing");
    if (!settings.has_mysql_pass)
        Error("set::mysql-pass is missing");
    if (!settings.has_mysql_database)
        Error("set::mysql-database is missing");
    //add end
      继续往下,在7041行左右,修改如下代码:
#endif
        }
        //add by oldhawk
        else if (!strcmp(cep->ce_varname, "mysql-host")) {
            ircstrdup(tempiConf.mysql_host, cep->ce_vardata);
        }
        else if (!strcmp(cep->ce_varname, "mysql-user")) {
            ircstrdup(tempiConf.mysql_user, cep->ce_vardata);
        }
        else if (!strcmp(cep->ce_varname, "mysql-pass")) {
            ircstrdup(tempiConf.mysql_pass, cep->ce_vardata);
        }
        else if (!strcmp(cep->ce_varname, "mysql-database")) {
            ircstrdup(tempiConf.mysql_database, cep->ce_vardata);
        }
        //add end
        else 
      再继续,马上就要结束了,在7959行左右,修改如下代码:
#endif
        }
         //add by oldhawk
        else if (!strcmp(cep->ce_varname, "mysql-host")) {
            CheckNull(cep);
            CheckDuplicate(cep, mysql_host, "mysql-host");
        }
        else if (!strcmp(cep->ce_varname, "mysql-user")) {
            CheckNull(cep);
            CheckDuplicate(cep, mysql_user, "mysql-user");
        }
        else if (!strcmp(cep->ce_varname, "mysql-pass")) {
            CheckNull(cep);
            CheckDuplicate(cep, mysql_pass, "mysql-pass");
        }
        else if (!strcmp(cep->ce_varname, "mysql-database")) {
            CheckNull(cep);
            CheckDuplicate(cep, mysql_database, "mysql-database");
        }
        //add end
        else
      
      好了,虽然修改的地方比较多,但还是很容易,如果以后想自已增加更多的配置项的时候,就按照这个步骤来吧,其实你可以参照原来的代码,比如对配置项的值做一些处理,像数值太大或大小,或小于0,等等。多看原来的代码,相信你会很快熟悉起来的。

      现在编译后,你就可以在代码中使用这样的配置变量了。



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




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
网络虚拟化
VLANIF配置
VLANIF配置
17 0
|
23天前
|
存储 算法 Linux
VDO卷的配置
在CentOS 7环境下,VDO通过重删和压缩技术节省磁盘空间,使1T磁盘可存储1.5T数据,降低成本。创建VDO步骤包括:添加64GB新硬盘,安装vdo和kmod-kvdo软件,使用`vdo create`命令创建VDO卷,如`vdo create --name=myvdo --device=/dev/sdb --vdoLogicalSize=200G`。之后,可通过`vdo list`、`vdo status`和`vdostats`检查状态和空间使用。最后,格式化VDO卷,创建挂载点并挂载,完成设置。
24 0
|
23天前
|
Python
默认的模板配置
默认的模板配置。
13 1
|
23天前
|
缓存 API
FreeMarker - 配置参数用法说明
FreeMarker - 配置参数用法说明
86 0
|
Shell Linux 程序员
vs2015配置vcpkg
vs2015配置vcpkg
326 0
|
Ubuntu Java Linux
|
编解码 NoSQL Java
|
编解码 NoSQL 关系型数据库
|
SQL 存储 关系型数据库

热门文章

最新文章