北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 8318|回复: 7

FluffOS 的 MySQL 问题求帮忙@@

[复制链接]
发表于 2011-12-5 17:28:57 | 显示全部楼层 |阅读模式
本帖最后由 fanzeyi 于 2011-12-5 05:51 PM 编辑

嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照 http://wiki.desolation.org/MUD_D ... _to_MudOS.2FFluffOS 这里.. 嗯

然后在这里 http://lpmuds.net/smf/index.php?topic=634.0 找到了一个样例程序.. 然后随便下了个lima的 lib 写了个mysql命令.. 调用 db_connect 嗯..

先是一直出 Database security violation attempted 错误.. 然后查源码查到 packages/db.c 的 valid_database 函数..

  1.     if (ret && (ret == (svalue_t *)-1 || (ret->type == T_STRING || (ret->type == T_NUMBER && ret->u.number))))
  2.         return ret;

  3.    error("Database security violation attempted\n");  // 这一行
  4. }
复制代码

嗯.. 不太熟悉 MySQL 的 C @.@ 求解..

还有个问题就是, 在 db.c 文件中的 f_db_connect 的定义是 void f_db_connect (void), 但是在LPC中调用的时候是 db_connect(server, db, username)

通过 grep 找到:

  1. [fanzeyi@muddy driver]$ grep -lr "db_connect" .
  2. ./ChangeLog.alpha
  3. ./efun_defs.c
  4. ./obj/interpret.o
  5. ./obj/db.o
  6. ./obj/lex.o
  7. ./driver
  8. ./efunctions.h
  9. ./packages/db.c
  10. ./packages/packages.a
  11. ./packages/db_spec.c
  12. ./driver.old
  13. ./opc.h
  14. ./efun_protos.h
  15. ./func_spec.cpp
复制代码



这些文件都看了下.. 应该是一个从LPC函数向C函数映射的东西.. 但是纠结于参数表..

还有就是用gdb调试的时候找到一个变量 sp .. 没有找到定义的地方.. @@ 这几个问题 求解

  1.     switch (st_num_arg) {
  2.         case 4: type     = (sp - (args++))->u.number;
  3.         case 3: user     = (sp - (args++))->u.string;
  4.         case 2: database = (sp - (args++))->u.string;
  5.         case 1: host     = (sp - (args++))->u.string;
  6.     }
复制代码


以及就是 没有找到哪里是用来提供密码的 ..
=========================================

update:

  1. (gdb) p st_num_arg
  2. $6 = 3
  3. (gdb) p user
  4. $7 = 0x8149554 ""
  5. (gdb) p host
  6. $8 = 0x8149554 ""
  7. (gdb) p database
  8. $9 = 0x8149554 ""
复制代码


刚刚发贴的时候感觉这个 sp 就是LPC调用时候的参数表。。 st_num_arg 表示调用时的参数数量.. 很奇怪在gdb里面发现我传进去的参数全都变成 空字符串 了.. 继续研究
=========================

继续 update ...

好吧我明白为什么我的参数表都是 "" 了.. 我调用错函数了... 函数名太像不能怪我 TAT.. 还是在纠结 password .. 准备自己改下 db_connect 这个函数..
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-12-5 17:35:45 | 显示全部楼层
是饭团吗? 我是roth, 最近超级忙,很久没有上gtalk了.

在钻研FluffOS啊,有空我看看呵,先mark一下.
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-12-5 17:36:40 | 显示全部楼层
回复 2# rothsdad


    是啊@@ 我只是无聊玩玩 不算钻研...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-12-5 17:41:44 | 显示全部楼层
回复 4# huacuoh


    @@ 我的目标是当 wiz 不是机器人@@
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-12-5 17:42:12 | 显示全部楼层
嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照  这里.. 嗯

然后在这里  找到了一 ...
fanzeyi 发表于 2011-12-5 05:28 PM



    你的lib里是否实现valid_database这个函数了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-12-5 17:45:42 | 显示全部楼层
回复 6# jason


    这个是使用 FluffOS 里面的 valid_database 函数吧.. 我给 error 那一行注释掉之后就能向后执行了不过后面就是段错误了.. @@
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-12-5 18:05:32 | 显示全部楼层
valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数负责返回用户名和密码,也负责做权限检查。比如只有admin才可以用数据库。
不实现这个函数,mysql是不能用的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-12-5 18:08:00 | 显示全部楼层
valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数 ...
jason 发表于 2011-12-5 06:05 PM



    明白了!! 我去实现一个去.. 感谢~
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-3-29 07:33 PM , Processed in 0.011059 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表