/* * Function will allow a user to change his handle */ void Chg_Handle() { char *Handle, *temp; Handle = calloc(81, sizeof(char)); temp = calloc(81, sizeof(char)); ReadExitinfo(); Syslog('+', "Old handle \"%s\"", exitinfo.sHandle); while (TRUE) { Enter(1); /* Enter a handle (Enter to Quit): */ pout(LIGHTBLUE, BLACK, (char *) Language(412)); colour(CFG.InputColourF, CFG.InputColourB); GetstrC(temp, 34); if ((strcmp(temp, "")) == 0) { free(Handle); free(temp); return; } strcpy(Handle, tlcap(temp)); if (CheckHandle(Handle) || CheckUnixNames(Handle)) { pout(LIGHTRED, BLACK, (char *)"\r\nThat handle is already been used\r\n"); } else if (CheckName(Handle)) { pout(LIGHTRED, BLACK, (char *)"\r\nThat name is already been used\r\n"); } else if((strcasecmp(Handle, "sysop")) == 0) { pout(LIGHTRED, BLACK, (char *)"\r\nYou cannot use Sysop as a handle\r\n"); } else if(strcmp(temp, "") != 0) { Setup(exitinfo.sHandle, temp); pout(LIGHTGREEN, BLACK, (char *)"\r\nHandle Changed!\r\n\r\n"); Syslog('+', "New handle \"%s\"", exitinfo.sHandle); break; } } WriteExitinfo(); free(temp); free(Handle); }
/* * Start a netmail to one of our nodes in the setup. * Return a file descriptor if success else NULL. * Later the pack routine will add these mails to the outbound. */ FILE *SendMgrMail(faddr *t, int Keep, int FileAttach, char *bymgr, char *subj, char *reply) { FILE *qp; time_t Now; fidoaddr Orig, Dest; faddr From; unsigned flags = M_PVT; char ext[4]; From = *bestaka_s(t); memset(&Orig, 0, sizeof(Orig)); Orig.zone = From.zone; Orig.net = From.net; Orig.node = From.node; Orig.point = From.point; snprintf(Orig.domain, 13, "%s", From.domain); memset(&Dest, 0, sizeof(Dest)); Dest.zone = t->zone; Dest.net = t->net; Dest.node = t->node; Dest.point = t->point; snprintf(Dest.domain, 13, "%s", t->domain); if (!SearchNode(Dest)) { Syslog('!', "SendMgrMail(): Can't find node %s", aka2str(Dest)); return NULL; } Syslog('m', " Netmail from %s to %s", aka2str(Orig), ascfnode(t, 0x1f)); Now = time(NULL) - (gmt_offset((time_t)0) * 60); flags |= (nodes.Crash) ? M_CRASH : 0; flags |= (FileAttach) ? M_FILE : 0; flags |= (nodes.Hold) ? M_HOLD : 0; /* * Increase counters, update record and reload. */ StatAdd(&nodes.MailSent, 1L); UpdateNode(); SearchNode(Dest); memset(&ext, 0, sizeof(ext)); if (nodes.PackNetmail) snprintf(ext, 4, (char *)"qqq"); else if (nodes.Crash) snprintf(ext, 4, (char *)"ccc"); else if (nodes.Hold) snprintf(ext, 4, (char *)"hhh"); else snprintf(ext, 4, (char *)"nnn"); if ((qp = OpenPkt(Orig, Dest, (char *)ext)) == NULL) return NULL; if (AddMsgHdr(qp, &From, t, flags, 0, Now, nodes.Sysop, tlcap(bymgr), subj)) { fclose(qp); return NULL; } if (Dest.point) fprintf(qp, "\001TOPT %d\r", Dest.point); if (Orig.point) fprintf(qp, "\001FMPT %d\r", Orig.point); fprintf(qp, "\001INTL %d:%d/%d %d:%d/%d\r", Dest.zone, Dest.net, Dest.node, Orig.zone, Orig.net, Orig.node); /* * Add MSGID, REPLY and PID */ fprintf(qp, "\001MSGID: %s %08x\r", aka2str(Orig), sequencer()); if (reply != NULL) fprintf(qp, "\001REPLY: %s\r", reply); fprintf(qp, "\001PID: MBSE-FIDO %s (%s-%s)\r", VERSION, OsName(), OsCPU()); fprintf(qp, "\001TZUTC: %s\r", gmtoffset(Now)); return qp; }