Authentication 在windows上设置MOSQUITO身份验证插件

Authentication 在windows上设置MOSQUITO身份验证插件,authentication,plugins,mqtt,mosquitto,Authentication,Plugins,Mqtt,Mosquitto,我目前正在尝试在windows上构建mosquitto auth插件,但我不确定使用哪个make进程。医生说要编辑我已经做过的config.mk文件,然后“制作”auth plug-这是我震惊的地方,我曾尝试使用GnWin和MinGW制作,但都不起作用。是否有办法在windows上构建make库,或者我可以在Linux中制作并将auth plug.o复制到我的windows机器上?我不知道有人试图在windows上构建mosquitto auth plug,如果这真的奏效,我会非常惊讶;作为插件

我目前正在尝试在windows上构建mosquitto auth插件,但我不确定使用哪个make进程。医生说要编辑我已经做过的config.mk文件,然后“制作”auth plug-这是我震惊的地方,我曾尝试使用GnWin和MinGW制作,但都不起作用。是否有办法在windows上构建make库,或者我可以在Linux中制作并将auth plug.o复制到我的windows机器上?

我不知道有人试图在windows上构建mosquitto auth plug,如果这真的奏效,我会非常惊讶;作为插件的作者,我没有注意Un*x之外的可移植性,为了不引起希望,我不会:-


也就是说,您不能在Windows上运行在Linux上构建的加载共享对象。也许有可能,但我已经多年没有做过类似的事情了,那就是使用适当的工具链进行交叉编译。

我不知道有人试图在Windows上构建MOSQUITO auth插件,如果真的成功了,我会非常惊讶;作为插件的作者,我没有注意Un*x之外的可移植性,为了不引起希望,我不会:-


也就是说,您不能在Windows上运行在Linux上构建的加载共享对象。可能的情况是,我已经多年没有做过类似的事情了,那就是使用适当的工具链进行交叉编译。

我只使用HTTP和JWT后端为Windows构建它

必须修复:

将DeclSpecdLexPort放入MOSQUITO\u auth\u Xyz。。。auth plug.c中的函数。 在auth plug.c中添加了FNMATCH A、b和STREP的替代代码,请参见下文。 在log.c中,由于从libmosquitto导入函数失败,我转而使用log=\uu log而不是log=mosquitto\u log\u printf。 使用Visual Studio 2017 Express编译,并设置预处理器定义“CRT\U NONSDC\U NO\U DEPRECATE”和“CRT\U SECURE\U NO\U”警告。 代码运行良好

对于auth plug.c中的fnmacha、b和strep,将include更改为:

#ifdef _WIN32
#include <windows.h>
#include <shlwapi.h>
#define fnmatch(a, b, c) PathMatchSpecA(a, b)
extern char* strsep(char** stringp, const char* delim)
{
    char* start = *stringp;
    char* p;

    p = (start != NULL) ? strpbrk(start, delim) : NULL;

    if (p == NULL)
    {
        *stringp = NULL;
    }
    else
    {
        *p = '\0';
        *stringp = p + 1;
    }

    return start;
}
#else
#include <fnmatch.h>
#endif

我为Windows构建它,只使用HTTP和JWT后端

必须修复:

将DeclSpecdLexPort放入MOSQUITO\u auth\u Xyz。。。auth plug.c中的函数。 在auth plug.c中添加了FNMATCH A、b和STREP的替代代码,请参见下文。 在log.c中,由于从libmosquitto导入函数失败,我转而使用log=\uu log而不是log=mosquitto\u log\u printf。 使用Visual Studio 2017 Express编译,并设置预处理器定义“CRT\U NONSDC\U NO\U DEPRECATE”和“CRT\U SECURE\U NO\U”警告。 代码运行良好

对于auth plug.c中的fnmacha、b和strep,将include更改为:

#ifdef _WIN32
#include <windows.h>
#include <shlwapi.h>
#define fnmatch(a, b, c) PathMatchSpecA(a, b)
extern char* strsep(char** stringp, const char* delim)
{
    char* start = *stringp;
    char* p;

    p = (start != NULL) ? strpbrk(start, delim) : NULL;

    if (p == NULL)
    {
        *stringp = NULL;
    }
    else
    {
        *p = '\0';
        *stringp = p + 1;
    }

    return start;
}
#else
#include <fnmatch.h>
#endif

感谢您的回复-但为了澄清一点,如果我的mosquitto代理运行在windows机器上,我可以使用此插件吗?简单的回答是,没有人尝试在windows上使用此插件。因此,我会说不,如果你想在Windows上运行你的代理,你目前不能使用它。答案是,目前,是一个明确的不,你不能在Windows上的Mosquetto代理上使用插件,正如@hardlib所说的。我能想到的唯一选择是,在Windows上的虚拟机上运行Linux,并在其中运行Mosquitto,但这可能不是您想要的。感谢您的回复-但要明确的是,如果我的Mosquitto代理在Windows机器上运行,我可以使用此插件吗?简短的回答是,从来没有人尝试在Windows上使用此插件。因此,我会说不,如果你想在Windows上运行你的代理,你目前不能使用它。答案是,目前,是一个明确的不,你不能在Windows上的Mosquetto代理上使用插件,正如@hardlib所说的。我能想到的唯一替代方法是在Windows上的虚拟机上运行Linux并在其中运行Mosquito,但这可能不是您想要的。