Added port setup for nntp servers
This commit is contained in:
parent
9fb734f2cc
commit
8dfd86130b
@ -2,6 +2,13 @@ $Id$
|
||||
|
||||
v0.95.5 29-Nov-2008
|
||||
|
||||
mbselib:
|
||||
Newsservers can be connected with a port number from the
|
||||
setup.
|
||||
|
||||
mbsetup:
|
||||
In screen 1.12 a nntp port number can be set.
|
||||
|
||||
examples:
|
||||
Added German menus and textfiles, written by Niels Haedecke.
|
||||
|
||||
|
@ -1290,6 +1290,7 @@ struct sysconfig {
|
||||
|
||||
char nntpuser[32]; /* NNTP username */
|
||||
char nntppass[32]; /* NNTP password */
|
||||
unsigned int nntpport; /* NNTP port if not 119 */
|
||||
};
|
||||
|
||||
|
||||
|
11
lib/nntp.c
11
lib/nntp.c
@ -55,7 +55,7 @@ int nntp_connect(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
Syslog('+', "NNTP: connecting host: %s", CFG.nntpnode);
|
||||
Syslog('+', "NNTP: connecting host: %s:%d", CFG.nntpnode, CFG.nntpport);
|
||||
memset(&nntp_loc, 0, sizeof(struct sockaddr_in));
|
||||
memset(&nntp_rem, 0, sizeof(struct sockaddr_in));
|
||||
|
||||
@ -67,12 +67,7 @@ int nntp_connect(void)
|
||||
}
|
||||
|
||||
nntp_rem.sin_addr.s_addr = ((struct in_addr *)(nhp->h_addr))->s_addr;
|
||||
|
||||
if ((nsp = getservbyname("nntp", "tcp")) == NULL) {
|
||||
WriteError("NNTP: can't find service port for nntp/tcp");
|
||||
return -1;
|
||||
}
|
||||
nntp_rem.sin_port = nsp->s_port;
|
||||
nntp_rem.sin_port = htons(CFG.nntpport);
|
||||
|
||||
if ((nntpsock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
|
||||
WriteError("$NNTP: unable to create tcp socket");
|
||||
@ -221,7 +216,7 @@ int nntp_close(void)
|
||||
|
||||
/*
|
||||
* Send NNTP command, check response code.
|
||||
* If the code not matches, the value is returned, else zer.
|
||||
* If the code doesn't match, the value is returned, else zero.
|
||||
*/
|
||||
int nntp_cmd(char *cmd, int resp)
|
||||
{
|
||||
|
@ -878,34 +878,37 @@ void s_intmailcfg(void)
|
||||
switch (CFG.newsfeed) {
|
||||
case FEEDINN: mbse_mvprintw(10, 2, "4. N/A");
|
||||
mbse_mvprintw(11, 2, "5. NNTP node");
|
||||
mbse_mvprintw(12, 2, "6. NNTP m.r.");
|
||||
mbse_mvprintw(13, 2, "7. NNTP user");
|
||||
mbse_mvprintw(14, 2, "8. NNTP pass");
|
||||
mbse_mvprintw(12, 2, "6. NNTP port");
|
||||
mbse_mvprintw(13, 2, "7. NNTP m.r.");
|
||||
mbse_mvprintw(14, 2, "8. NNTP user");
|
||||
mbse_mvprintw(15, 2, "9. NNTP pass");
|
||||
break;
|
||||
case FEEDRNEWS: mbse_mvprintw(10, 2, "4. Path rnews");
|
||||
mbse_mvprintw(11, 2, "5. N/A");
|
||||
mbse_mvprintw(12, 2, "6. N/A");
|
||||
mbse_mvprintw(13, 2, "7. N/A");
|
||||
mbse_mvprintw(13, 2, "7. N/A");
|
||||
mbse_mvprintw(14, 2, "8. N/A");
|
||||
mbse_mvprintw(15, 2, "9. N/A");
|
||||
break;
|
||||
case FEEDUUCP: mbse_mvprintw(10, 2, "4. UUCP path");
|
||||
mbse_mvprintw(11, 2, "5. UUCP node");
|
||||
mbse_mvprintw(12, 2, "6. N/A");
|
||||
mbse_mvprintw(13, 2, "7. N/A");
|
||||
mbse_mvprintw(13, 2, "7. N/A");
|
||||
mbse_mvprintw(14, 2, "8. N/A");
|
||||
mbse_mvprintw(15, 2, "9. N/A");
|
||||
break;
|
||||
}
|
||||
mbse_mvprintw(15, 2, "9. News dupes");
|
||||
mbse_mvprintw(16, 1, "10. Email aka");
|
||||
mbse_mvprintw(17, 1, "11. UUCP aka");
|
||||
mbse_mvprintw(18, 1, "12. Emailmode");
|
||||
mbse_mvprintw(16, 1, "10. News dupes");
|
||||
mbse_mvprintw(17, 1, "11. Email aka");
|
||||
mbse_mvprintw(18, 1, "12. UUCP aka");
|
||||
mbse_mvprintw(19, 1, "13. Emailmode");
|
||||
|
||||
mbse_mvprintw(13,48, "13. Articles");
|
||||
mbse_mvprintw(14,48, "14. News mode");
|
||||
mbse_mvprintw(15,48, "15. Split at");
|
||||
mbse_mvprintw(16,48, "16. Force at");
|
||||
mbse_mvprintw(17,48, "17. Control ok");
|
||||
mbse_mvprintw(18,48, "18. No regate");
|
||||
mbse_mvprintw(14,48, "14. Articles");
|
||||
mbse_mvprintw(15,48, "15. News mode");
|
||||
mbse_mvprintw(16,48, "16. Split at");
|
||||
mbse_mvprintw(17,48, "17. Force at");
|
||||
mbse_mvprintw(18,48, "18. Control ok");
|
||||
mbse_mvprintw(19,48, "19. No regate");
|
||||
|
||||
set_color(WHITE, BLACK);
|
||||
show_str( 7,16,64, CFG.popnode);
|
||||
@ -913,9 +916,10 @@ void s_intmailcfg(void)
|
||||
show_str( 9,16,64, CFG.smtpnode);
|
||||
switch (CFG.newsfeed) {
|
||||
case FEEDINN: show_str(11,16,64, CFG.nntpnode);
|
||||
show_bool(12,16, CFG.modereader);
|
||||
show_str(13,16,31, CFG.nntpuser);
|
||||
show_str(14,16,31, (char *)"*******************************");
|
||||
show_int(12,16, CFG.nntpport);
|
||||
show_bool(13,16, CFG.modereader);
|
||||
show_str(14,16,31, CFG.nntpuser);
|
||||
show_str(15,16,31, (char *)"*******************************");
|
||||
break;
|
||||
case FEEDRNEWS: show_str(10,16,64, CFG.rnewspath);
|
||||
break;
|
||||
@ -924,17 +928,17 @@ void s_intmailcfg(void)
|
||||
break;
|
||||
}
|
||||
|
||||
show_int(15,16, CFG.nntpdupes);
|
||||
show_aka(16,16, CFG.EmailFidoAka);
|
||||
show_aka(17,16, CFG.UUCPgate);
|
||||
show_emailmode(18,16, CFG.EmailMode);
|
||||
show_int(16,16, CFG.nntpdupes);
|
||||
show_aka(17,16, CFG.EmailFidoAka);
|
||||
show_aka(18,16, CFG.UUCPgate);
|
||||
show_emailmode(19,16, CFG.EmailMode);
|
||||
|
||||
show_int( 13,65, CFG.maxarticles);
|
||||
show_newsmode(14,65, CFG.newsfeed);
|
||||
show_int( 15,65, CFG.new_split);
|
||||
show_int( 16,65, CFG.new_force);
|
||||
show_bool(17,65, CFG.allowcontrol);
|
||||
show_bool(18,65, CFG.dontregate);
|
||||
show_int( 14,65, CFG.maxarticles);
|
||||
show_newsmode(15,65, CFG.newsfeed);
|
||||
show_int( 16,65, CFG.new_split);
|
||||
show_int( 17,65, CFG.new_force);
|
||||
show_bool(18,65, CFG.allowcontrol);
|
||||
show_bool(19,65, CFG.dontregate);
|
||||
}
|
||||
|
||||
|
||||
@ -980,53 +984,65 @@ void e_uucp(void)
|
||||
|
||||
void e_intmailcfg(void)
|
||||
{
|
||||
int tmp;
|
||||
int tmp;
|
||||
|
||||
s_intmailcfg();
|
||||
for (;;) {
|
||||
switch(select_menu(18)) {
|
||||
case 0: return;
|
||||
case 1: E_STR( 7,16,64, CFG.popnode, "The ^FQDN^ of the node where the ^POP3^ server runs.")
|
||||
case 2: E_BOOL( 8,16, CFG.UsePopDomain, "Use ^user@maildomain^ to login the POP3 server.")
|
||||
case 3: E_STR( 9,16,64, CFG.smtpnode, "The ^FQDN^ of the node where the ^SMTP^ server runs.")
|
||||
case 4: if (CFG.newsfeed == FEEDRNEWS)
|
||||
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path and filename to the ^rnews^ command.", 0775));
|
||||
if (CFG.newsfeed == FEEDUUCP)
|
||||
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path to the ^uucppublic^ directory.", 0775));
|
||||
break;
|
||||
case 5: if (CFG.newsfeed == FEEDINN)
|
||||
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^FQDN^ of the node where the ^NNTP^ server runs."));
|
||||
if (CFG.newsfeed == FEEDUUCP)
|
||||
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^UUCP^ nodename of the remote UUCP system"));
|
||||
break;
|
||||
case 6: E_BOOL(12,16, CFG.modereader, "Does the NNTP server needs the ^Mode Reader^ command.")
|
||||
case 7: E_STR( 13,16,31, CFG.nntpuser, "The ^Username^ for the NNTP server if needed.")
|
||||
case 8: strcpy(CFG.nntppass, edit_str(14,16,31, CFG.nntppass, (char *)"The ^Password^ for the NNTP server if needed."));
|
||||
s_intmailcfg();
|
||||
for (;;) {
|
||||
switch(select_menu(19)) {
|
||||
case 0: return;
|
||||
case 1: E_STR( 7,16,64, CFG.popnode, "The ^FQDN^ of the node where the ^POP3^ server runs.")
|
||||
case 2: E_BOOL( 8,16, CFG.UsePopDomain, "Use ^user@maildomain^ to login the POP3 server.")
|
||||
case 3: E_STR( 9,16,64, CFG.smtpnode, "The ^FQDN^ of the node where the ^SMTP^ server runs.")
|
||||
case 4: if (CFG.newsfeed == FEEDRNEWS)
|
||||
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path and filename to the ^rnews^ command.", 0775));
|
||||
if (CFG.newsfeed == FEEDUUCP)
|
||||
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path to the ^uucppublic^ directory.", 0775));
|
||||
break;
|
||||
case 5: if (CFG.newsfeed == FEEDINN)
|
||||
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^FQDN^ of the node where the ^NNTP^ server runs."));
|
||||
if (CFG.newsfeed == FEEDUUCP)
|
||||
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^UUCP^ nodename of the remote UUCP system"));
|
||||
break;
|
||||
case 6: if (CFG.newsfeed == FEEDINN)
|
||||
CFG.nntpport = edit_int(12,16, CFG.nntpport, (char *)"The NNTP ^port^ number to connect to");
|
||||
if (CFG.nntpport == 0) {
|
||||
CFG.nntpport = 119;
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 9: E_INT( 15,16, CFG.nntpdupes, "The number of ^dupes^ to store in the news articles dupes database.")
|
||||
case 10:tmp = PickAka((char *)"1.12.10", FALSE);
|
||||
if (tmp != -1)
|
||||
}
|
||||
break;
|
||||
case 7: if (CFG.newsfeed == FEEDINN)
|
||||
CFG.modereader = edit_bool(13,16, CFG.modereader, (char *)"Does the NNTP server needs the ^Mode Reader^ command.");
|
||||
break;
|
||||
case 8: if (CFG.newsfeed == FEEDINN)
|
||||
strcpy(CFG.nntpuser, edit_str( 14,16,31, CFG.nntpuser, (char *)"The ^Username^ for the NNTP server if needed."));
|
||||
break;
|
||||
case 9: if (CFG.newsfeed == FEEDINN) {
|
||||
strcpy(CFG.nntppass, edit_str(15,16,31, CFG.nntppass, (char *)"The ^Password^ for the NNTP server if needed."));
|
||||
s_intmailcfg();
|
||||
}
|
||||
break;
|
||||
case 10:E_INT( 16,16, CFG.nntpdupes, "The number of ^dupes^ to store in the news articles dupes database.")
|
||||
case 11:tmp = PickAka((char *)"1.12.11", FALSE);
|
||||
if (tmp != -1)
|
||||
CFG.EmailFidoAka = CFG.aka[tmp];
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 11:e_uucp();
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 12:CFG.EmailMode = edit_emailmode(18,16, CFG.EmailMode);
|
||||
s_intmailcfg();
|
||||
break;
|
||||
|
||||
case 13:E_INT( 13,65, CFG.maxarticles, "Default maximum ^news articles^ to fetch")
|
||||
case 14:CFG.newsfeed = edit_newsmode(14,65, CFG.newsfeed);
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 15:E_IRC( 15,65, CFG.new_split, 12, 60, "Gently ^split^ messages after n kilobytes (12..60).")
|
||||
case 16:E_IRC( 16,65, CFG.new_force, 16, 64, "Force ^split^ of messages after n kilobytes (16..64).")
|
||||
case 17:E_BOOL(17,65, CFG.allowcontrol, "^Allow control^ messages for news to be gated.")
|
||||
case 19:E_BOOL(18,65, CFG.dontregate, "Don't ^regate^ already gated messages.")
|
||||
}
|
||||
};
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 12:e_uucp();
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 13:CFG.EmailMode = edit_emailmode(19,16, CFG.EmailMode);
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 14:E_INT( 14,65, CFG.maxarticles, "Default maximum ^news articles^ to fetch")
|
||||
case 15:CFG.newsfeed = edit_newsmode(15,65, CFG.newsfeed);
|
||||
s_intmailcfg();
|
||||
break;
|
||||
case 16:E_IRC( 16,65, CFG.new_split, 12, 60, "Gently ^split^ messages after n kilobytes (12..60).")
|
||||
case 17:E_IRC( 17,65, CFG.new_force, 16, 64, "Force ^split^ of messages after n kilobytes (16..64).")
|
||||
case 18:E_BOOL(18,65, CFG.allowcontrol, "^Allow control^ messages for news to be gated.")
|
||||
case 19:E_BOOL(19,65, CFG.dontregate, "Don't ^regate^ already gated messages.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1518,6 +1534,11 @@ void global_menu(void)
|
||||
memset(&CFG.xnntppass, 0, sizeof(CFG.xnntppass));
|
||||
}
|
||||
|
||||
if (! CFG.nntpport) {
|
||||
Syslog('+', "Main config, set default nntp port 119");
|
||||
CFG.nntpport = 119;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
|
||||
clr_index();
|
||||
@ -2175,11 +2196,12 @@ int global_doc(FILE *fp, FILE *toc, int page)
|
||||
fprintf(fp, " SMTP host %s\n", CFG.smtpnode);
|
||||
fprintf(fp, " News transfermode %s\n", getnewsmode(CFG.newsfeed));
|
||||
switch (CFG.newsfeed) {
|
||||
case FEEDINN: fprintf(fp, " NNTP host %s\n", CFG.nntpnode);
|
||||
case FEEDINN: fprintf(fp, " NNTP host %s:%d\n", CFG.nntpnode, CFG.nntpport);
|
||||
fprintf(fp, " NNTP mode reader %s\n", getboolean(CFG.modereader));
|
||||
fprintf(fp, " NNTP username %s\n", CFG.nntpuser);
|
||||
fprintf(fp, " NNTP password %s\n", getboolean(strlen(CFG.nntppass)));
|
||||
add_webtable(wp, (char *)"NNTP host", CFG.nntpnode);
|
||||
add_webdigit(wp, (char *)"NNTP port", CFG.nntpport);
|
||||
add_webtable(wp, (char *)"NNTP mode reader", getboolean(CFG.modereader));
|
||||
add_webtable(wp, (char *)"NNTP username", CFG.nntpuser);
|
||||
add_webtable(wp, (char *)"NNTP password", CFG.nntppass);
|
||||
|
Reference in New Issue
Block a user