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
|
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:
|
examples:
|
||||||
Added German menus and textfiles, written by Niels Haedecke.
|
Added German menus and textfiles, written by Niels Haedecke.
|
||||||
|
|
||||||
|
@ -1290,6 +1290,7 @@ struct sysconfig {
|
|||||||
|
|
||||||
char nntpuser[32]; /* NNTP username */
|
char nntpuser[32]; /* NNTP username */
|
||||||
char nntppass[32]; /* NNTP password */
|
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;
|
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_loc, 0, sizeof(struct sockaddr_in));
|
||||||
memset(&nntp_rem, 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;
|
nntp_rem.sin_addr.s_addr = ((struct in_addr *)(nhp->h_addr))->s_addr;
|
||||||
|
nntp_rem.sin_port = htons(CFG.nntpport);
|
||||||
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;
|
|
||||||
|
|
||||||
if ((nntpsock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
|
if ((nntpsock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
|
||||||
WriteError("$NNTP: unable to create tcp socket");
|
WriteError("$NNTP: unable to create tcp socket");
|
||||||
@ -221,7 +216,7 @@ int nntp_close(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Send NNTP command, check response code.
|
* 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)
|
int nntp_cmd(char *cmd, int resp)
|
||||||
{
|
{
|
||||||
|
@ -878,34 +878,37 @@ void s_intmailcfg(void)
|
|||||||
switch (CFG.newsfeed) {
|
switch (CFG.newsfeed) {
|
||||||
case FEEDINN: mbse_mvprintw(10, 2, "4. N/A");
|
case FEEDINN: mbse_mvprintw(10, 2, "4. N/A");
|
||||||
mbse_mvprintw(11, 2, "5. NNTP node");
|
mbse_mvprintw(11, 2, "5. NNTP node");
|
||||||
mbse_mvprintw(12, 2, "6. NNTP m.r.");
|
mbse_mvprintw(12, 2, "6. NNTP port");
|
||||||
mbse_mvprintw(13, 2, "7. NNTP user");
|
mbse_mvprintw(13, 2, "7. NNTP m.r.");
|
||||||
mbse_mvprintw(14, 2, "8. NNTP pass");
|
mbse_mvprintw(14, 2, "8. NNTP user");
|
||||||
|
mbse_mvprintw(15, 2, "9. NNTP pass");
|
||||||
break;
|
break;
|
||||||
case FEEDRNEWS: mbse_mvprintw(10, 2, "4. Path rnews");
|
case FEEDRNEWS: mbse_mvprintw(10, 2, "4. Path rnews");
|
||||||
mbse_mvprintw(11, 2, "5. N/A");
|
mbse_mvprintw(11, 2, "5. N/A");
|
||||||
mbse_mvprintw(12, 2, "6. 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(14, 2, "8. N/A");
|
||||||
|
mbse_mvprintw(15, 2, "9. N/A");
|
||||||
break;
|
break;
|
||||||
case FEEDUUCP: mbse_mvprintw(10, 2, "4. UUCP path");
|
case FEEDUUCP: mbse_mvprintw(10, 2, "4. UUCP path");
|
||||||
mbse_mvprintw(11, 2, "5. UUCP node");
|
mbse_mvprintw(11, 2, "5. UUCP node");
|
||||||
mbse_mvprintw(12, 2, "6. 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(14, 2, "8. N/A");
|
||||||
|
mbse_mvprintw(15, 2, "9. N/A");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mbse_mvprintw(15, 2, "9. News dupes");
|
mbse_mvprintw(16, 1, "10. News dupes");
|
||||||
mbse_mvprintw(16, 1, "10. Email aka");
|
mbse_mvprintw(17, 1, "11. Email aka");
|
||||||
mbse_mvprintw(17, 1, "11. UUCP aka");
|
mbse_mvprintw(18, 1, "12. UUCP aka");
|
||||||
mbse_mvprintw(18, 1, "12. Emailmode");
|
mbse_mvprintw(19, 1, "13. Emailmode");
|
||||||
|
|
||||||
mbse_mvprintw(13,48, "13. Articles");
|
mbse_mvprintw(14,48, "14. Articles");
|
||||||
mbse_mvprintw(14,48, "14. News mode");
|
mbse_mvprintw(15,48, "15. News mode");
|
||||||
mbse_mvprintw(15,48, "15. Split at");
|
mbse_mvprintw(16,48, "16. Split at");
|
||||||
mbse_mvprintw(16,48, "16. Force at");
|
mbse_mvprintw(17,48, "17. Force at");
|
||||||
mbse_mvprintw(17,48, "17. Control ok");
|
mbse_mvprintw(18,48, "18. Control ok");
|
||||||
mbse_mvprintw(18,48, "18. No regate");
|
mbse_mvprintw(19,48, "19. No regate");
|
||||||
|
|
||||||
set_color(WHITE, BLACK);
|
set_color(WHITE, BLACK);
|
||||||
show_str( 7,16,64, CFG.popnode);
|
show_str( 7,16,64, CFG.popnode);
|
||||||
@ -913,9 +916,10 @@ void s_intmailcfg(void)
|
|||||||
show_str( 9,16,64, CFG.smtpnode);
|
show_str( 9,16,64, CFG.smtpnode);
|
||||||
switch (CFG.newsfeed) {
|
switch (CFG.newsfeed) {
|
||||||
case FEEDINN: show_str(11,16,64, CFG.nntpnode);
|
case FEEDINN: show_str(11,16,64, CFG.nntpnode);
|
||||||
show_bool(12,16, CFG.modereader);
|
show_int(12,16, CFG.nntpport);
|
||||||
show_str(13,16,31, CFG.nntpuser);
|
show_bool(13,16, CFG.modereader);
|
||||||
show_str(14,16,31, (char *)"*******************************");
|
show_str(14,16,31, CFG.nntpuser);
|
||||||
|
show_str(15,16,31, (char *)"*******************************");
|
||||||
break;
|
break;
|
||||||
case FEEDRNEWS: show_str(10,16,64, CFG.rnewspath);
|
case FEEDRNEWS: show_str(10,16,64, CFG.rnewspath);
|
||||||
break;
|
break;
|
||||||
@ -924,17 +928,17 @@ void s_intmailcfg(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
show_int(15,16, CFG.nntpdupes);
|
show_int(16,16, CFG.nntpdupes);
|
||||||
show_aka(16,16, CFG.EmailFidoAka);
|
show_aka(17,16, CFG.EmailFidoAka);
|
||||||
show_aka(17,16, CFG.UUCPgate);
|
show_aka(18,16, CFG.UUCPgate);
|
||||||
show_emailmode(18,16, CFG.EmailMode);
|
show_emailmode(19,16, CFG.EmailMode);
|
||||||
|
|
||||||
show_int( 13,65, CFG.maxarticles);
|
show_int( 14,65, CFG.maxarticles);
|
||||||
show_newsmode(14,65, CFG.newsfeed);
|
show_newsmode(15,65, CFG.newsfeed);
|
||||||
show_int( 15,65, CFG.new_split);
|
show_int( 16,65, CFG.new_split);
|
||||||
show_int( 16,65, CFG.new_force);
|
show_int( 17,65, CFG.new_force);
|
||||||
show_bool(17,65, CFG.allowcontrol);
|
show_bool(18,65, CFG.allowcontrol);
|
||||||
show_bool(18,65, CFG.dontregate);
|
show_bool(19,65, CFG.dontregate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -980,53 +984,65 @@ void e_uucp(void)
|
|||||||
|
|
||||||
void e_intmailcfg(void)
|
void e_intmailcfg(void)
|
||||||
{
|
{
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
s_intmailcfg();
|
s_intmailcfg();
|
||||||
for (;;) {
|
for (;;) {
|
||||||
switch(select_menu(18)) {
|
switch(select_menu(19)) {
|
||||||
case 0: return;
|
case 0: return;
|
||||||
case 1: E_STR( 7,16,64, CFG.popnode, "The ^FQDN^ of the node where the ^POP3^ server runs.")
|
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 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 3: E_STR( 9,16,64, CFG.smtpnode, "The ^FQDN^ of the node where the ^SMTP^ server runs.")
|
||||||
case 4: if (CFG.newsfeed == FEEDRNEWS)
|
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));
|
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path and filename to the ^rnews^ command.", 0775));
|
||||||
if (CFG.newsfeed == FEEDUUCP)
|
if (CFG.newsfeed == FEEDUUCP)
|
||||||
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path to the ^uucppublic^ directory.", 0775));
|
strcpy(CFG.rnewspath, edit_pth(10,16,64, CFG.rnewspath, (char *)"The path to the ^uucppublic^ directory.", 0775));
|
||||||
break;
|
break;
|
||||||
case 5: if (CFG.newsfeed == FEEDINN)
|
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."));
|
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)
|
if (CFG.newsfeed == FEEDUUCP)
|
||||||
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^UUCP^ nodename of the remote UUCP system"));
|
strcpy(CFG.nntpnode, edit_str(11,16,64, CFG.nntpnode, (char *)"The ^UUCP^ nodename of the remote UUCP system"));
|
||||||
break;
|
break;
|
||||||
case 6: E_BOOL(12,16, CFG.modereader, "Does the NNTP server needs the ^Mode Reader^ command.")
|
case 6: if (CFG.newsfeed == FEEDINN)
|
||||||
case 7: E_STR( 13,16,31, CFG.nntpuser, "The ^Username^ for the NNTP server if needed.")
|
CFG.nntpport = edit_int(12,16, CFG.nntpport, (char *)"The NNTP ^port^ number to connect to");
|
||||||
case 8: strcpy(CFG.nntppass, edit_str(14,16,31, CFG.nntppass, (char *)"The ^Password^ for the NNTP server if needed."));
|
if (CFG.nntpport == 0) {
|
||||||
|
CFG.nntpport = 119;
|
||||||
s_intmailcfg();
|
s_intmailcfg();
|
||||||
break;
|
}
|
||||||
case 9: E_INT( 15,16, CFG.nntpdupes, "The number of ^dupes^ to store in the news articles dupes database.")
|
break;
|
||||||
case 10:tmp = PickAka((char *)"1.12.10", FALSE);
|
case 7: if (CFG.newsfeed == FEEDINN)
|
||||||
if (tmp != -1)
|
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];
|
CFG.EmailFidoAka = CFG.aka[tmp];
|
||||||
s_intmailcfg();
|
s_intmailcfg();
|
||||||
break;
|
break;
|
||||||
case 11:e_uucp();
|
case 12:e_uucp();
|
||||||
s_intmailcfg();
|
s_intmailcfg();
|
||||||
break;
|
break;
|
||||||
case 12:CFG.EmailMode = edit_emailmode(18,16, CFG.EmailMode);
|
case 13:CFG.EmailMode = edit_emailmode(19,16, CFG.EmailMode);
|
||||||
s_intmailcfg();
|
s_intmailcfg();
|
||||||
break;
|
break;
|
||||||
|
case 14:E_INT( 14,65, CFG.maxarticles, "Default maximum ^news articles^ to fetch")
|
||||||
case 13:E_INT( 13,65, CFG.maxarticles, "Default maximum ^news articles^ to fetch")
|
case 15:CFG.newsfeed = edit_newsmode(15,65, CFG.newsfeed);
|
||||||
case 14:CFG.newsfeed = edit_newsmode(14,65, CFG.newsfeed);
|
s_intmailcfg();
|
||||||
s_intmailcfg();
|
break;
|
||||||
break;
|
case 16:E_IRC( 16,65, CFG.new_split, 12, 60, "Gently ^split^ messages after n kilobytes (12..60).")
|
||||||
case 15:E_IRC( 15,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 16:E_IRC( 16,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 17:E_BOOL(17,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.")
|
||||||
case 19:E_BOOL(18,65, CFG.dontregate, "Don't ^regate^ already gated messages.")
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1518,6 +1534,11 @@ void global_menu(void)
|
|||||||
memset(&CFG.xnntppass, 0, sizeof(CFG.xnntppass));
|
memset(&CFG.xnntppass, 0, sizeof(CFG.xnntppass));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! CFG.nntpport) {
|
||||||
|
Syslog('+', "Main config, set default nntp port 119");
|
||||||
|
CFG.nntpport = 119;
|
||||||
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
clr_index();
|
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, " SMTP host %s\n", CFG.smtpnode);
|
||||||
fprintf(fp, " News transfermode %s\n", getnewsmode(CFG.newsfeed));
|
fprintf(fp, " News transfermode %s\n", getnewsmode(CFG.newsfeed));
|
||||||
switch (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 mode reader %s\n", getboolean(CFG.modereader));
|
||||||
fprintf(fp, " NNTP username %s\n", CFG.nntpuser);
|
fprintf(fp, " NNTP username %s\n", CFG.nntpuser);
|
||||||
fprintf(fp, " NNTP password %s\n", getboolean(strlen(CFG.nntppass)));
|
fprintf(fp, " NNTP password %s\n", getboolean(strlen(CFG.nntppass)));
|
||||||
add_webtable(wp, (char *)"NNTP host", CFG.nntpnode);
|
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 mode reader", getboolean(CFG.modereader));
|
||||||
add_webtable(wp, (char *)"NNTP username", CFG.nntpuser);
|
add_webtable(wp, (char *)"NNTP username", CFG.nntpuser);
|
||||||
add_webtable(wp, (char *)"NNTP password", CFG.nntppass);
|
add_webtable(wp, (char *)"NNTP password", CFG.nntppass);
|
||||||
|
Reference in New Issue
Block a user