diff --git a/src/lua_glue.c b/src/lua_glue.c index 509128f..7100451 100644 --- a/src/lua_glue.c +++ b/src/lua_glue.c @@ -407,7 +407,9 @@ int l_postMessage(lua_State *L) { const char *subject = lua_tostring(L, 5); const char *body = lua_tostring(L, 6); int sem_fd; - + uuid_t mnet_msgid; + uuid_t qwk_msgid; + char qwkuuid[38]; char buffer[256]; s_JamBase *jb; @@ -464,47 +466,69 @@ int l_postMessage(lua_State *L) { jsf.Buffer = (char *)subject; JAM_PutSubfield(jsp, &jsf); - if (ma->type == TYPE_ECHOMAIL_AREA || ma->type == TYPE_NEWSGROUP_AREA) { - jmh.Attribute |= JAM_MSG_TYPEECHO; + if (mc->networked) { + if (mc->nettype == NETWORK_FIDO) { + if (ma->type == TYPE_ECHOMAIL_AREA || ma->type == TYPE_NEWSGROUP_AREA) { + jmh.Attribute |= JAM_MSG_TYPEECHO; - if (mc->fidoaddr->point) { - snprintf(buffer, sizeof buffer, "%d:%d/%d.%d", - mc->fidoaddr->zone, - mc->fidoaddr->net, - mc->fidoaddr->node, - mc->fidoaddr->point); - } else { - snprintf(buffer, sizeof buffer, "%d:%d/%d", - mc->fidoaddr->zone, - mc->fidoaddr->net, - mc->fidoaddr->node); + if (mc->fidoaddr->point) { + snprintf(buffer, sizeof buffer, "%d:%d/%d.%d", + mc->fidoaddr->zone, + mc->fidoaddr->net, + mc->fidoaddr->node, + mc->fidoaddr->point); + } else { + snprintf(buffer, sizeof buffer, "%d:%d/%d", + mc->fidoaddr->zone, + mc->fidoaddr->net, + mc->fidoaddr->node); + } + jsf.LoID = JAMSFLD_OADDRESS; + jsf.HiID = 0; + jsf.DatLen = strlen(buffer); + jsf.Buffer = (char *)buffer; + JAM_PutSubfield(jsp, &jsf); + + snprintf(buffer, sizeof buffer, "%d:%d/%d.%d %08lx", + mc->fidoaddr->zone, + mc->fidoaddr->net, + mc->fidoaddr->node, + mc->fidoaddr->point, + generate_msgid()); + + jsf.LoID = JAMSFLD_MSGID; + jsf.HiID = 0; + jsf.DatLen = strlen(buffer); + jsf.Buffer = (char *)buffer; + JAM_PutSubfield(jsp, &jsf); + jmh.MsgIdCRC = JAM_Crc32(buffer, strlen(buffer)); + } else if (ma->type == TYPE_NETMAIL_AREA) { + JAM_DelSubPacket(jsp); + JAM_CloseMB(jb); + free(jb); + return 0; + } + } else if (mc->nettype == NETWORK_MAGI) { + uuid_generate(mnet_msgid); + uuid_unparse_lower(mnet_msgid, buffer); + + jsf.LoID = JAMSFLD_MSGID; + jsf.HiID = 0; + jsf.DatLen = strlen(buffer); + jsf.Buffer = (char *)buffer; + JAM_PutSubfield(jsp, &jsf); + } else if (mc->nettype == NETWORK_QWK) { + uuid_generate(qwk_msgid); + uuid_unparse_lower(qwk_msgid, qwkuuid); + snprintf(buffer, sizeof buffer, "<%s@%s>", qwkuuid, conf.external_address); + + jsf.LoID = JAMSFLD_MSGID; + jsf.HiID = 0; + jsf.DatLen = strlen(buffer); + jsf.Buffer = (char *)buffer; + JAM_PutSubfield(jsp, &jsf); } - jsf.LoID = JAMSFLD_OADDRESS; - jsf.HiID = 0; - jsf.DatLen = strlen(buffer); - jsf.Buffer = (char *)buffer; - JAM_PutSubfield(jsp, &jsf); - - snprintf(buffer, sizeof buffer, "%d:%d/%d.%d %08lx", - mc->fidoaddr->zone, - mc->fidoaddr->net, - mc->fidoaddr->node, - mc->fidoaddr->point, - generate_msgid()); - - jsf.LoID = JAMSFLD_MSGID; - jsf.HiID = 0; - jsf.DatLen = strlen(buffer); - jsf.Buffer = (char *)buffer; - JAM_PutSubfield(jsp, &jsf); - jmh.MsgIdCRC = JAM_Crc32(buffer, strlen(buffer)); - } else if (ma->type == TYPE_NETMAIL_AREA) { - JAM_DelSubPacket(jsp); - JAM_CloseMB(jb); - free(jb); - return 0; } - while (1) { z = JAM_LockMB(jb, 100); if (z == 0) {