...
 
Commits (3)
  • Rob Swindell's avatar
    A little more ctype (isdigit isalnum) cleanup · f204efa8
    Rob Swindell authored
    A couple of stragglers here, the isalnum() call caught by an MSVC exception.
    f204efa8
  • Rob Swindell's avatar
    Comment block update. No code change. · 438f8540
    Rob Swindell authored
    438f8540
  • Rob Swindell's avatar
    Remove dynamic HTML index support from FTP server · 0d01544d
    Rob Swindell authored
    The days of browsers rendering HTML served-up via FTP are over, so remove this feature. This also removes all JavaScript support from the FTP server and that is a bit odd as it was one of the first Synchronet components for which I added JS support.
    
    Removing this feature was pretty painless; much easier than adding it was. The main motivation was less cruft to port to the file base in the works. There should be no more references to 00index.html anywhere at this point. Bye bye cool feature, we'll miss you.
    0d01544d
......@@ -235,8 +235,6 @@ Options = ALLOW_POP3 | USE_SUBMISSION_PORT | TLS_SUBMISSION | TLS_POP3
; Dynamically generated index files
IndexFileName = 00index
HtmlIndexFile = 00index.html
HtmlIndexScript = ftp-html.js
; Supported options (separated with |):
; DEBUG_RX
; DEBUG_DATA
......@@ -246,13 +244,11 @@ Options = ALLOW_POP3 | USE_SUBMISSION_PORT | TLS_SUBMISSION | TLS_POP3
; NO_LOCAL_FSYS
; DIR_FILES
; KEEP_TEMP_FILES
; HTML_INDEX_FILE
; LOOKUP_PASV_IP
; NO_HOST_LOOKUP
; NO_RECYCLE
; NO_JAVASCRIPT
; MUTE
Options = INDEX_FILE | HTML_INDEX_FILE | ALLOW_QWK
Options = INDEX_FILE | ALLOW_QWK
[Web] Web (HTTP) Server
AutoStart = true
......
This diff is collapsed.
This diff is collapsed.
/* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
/* $Id: FtpCfgDlgUnit.cpp,v 1.13 2016/05/27 08:55:02 rswindell Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
* *
* Copyright Rob Swindell - http://www.synchro.net/copyright.html *
* Copyright Rob Swindell - http://www.synchro.net/copyright.html *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
......@@ -15,21 +13,9 @@
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
......@@ -85,8 +71,6 @@ void __fastcall TFtpCfgDlg::FormShow(TObject *Sender)
PasvPortHighEdit->Text=AnsiString((int)MainForm->ftp_startup.pasv_port_high);
IndexFileNameEdit->Text=AnsiString(MainForm->ftp_startup.index_file_name);
HtmlFileNameEdit->Text=AnsiString(MainForm->ftp_startup.html_index_file);
HtmlJavaScriptEdit->Text=AnsiString(MainForm->ftp_startup.html_index_script);
AnswerSoundEdit->Text=AnsiString(MainForm->ftp_startup.answer_sound);
HangupSoundEdit->Text=AnsiString(MainForm->ftp_startup.hangup_sound);
HackAttemptSoundEdit->Text=AnsiString(MainForm->ftp_startup.hack_sound);
......@@ -102,9 +86,6 @@ void __fastcall TFtpCfgDlg::FormShow(TObject *Sender)
=!(MainForm->ftp_startup.options&FTP_OPT_NO_HOST_LOOKUP);
AutoIndexCheckBox->Checked=MainForm->ftp_startup.options&FTP_OPT_INDEX_FILE;
AutoIndexCheckBoxClick(Sender);
HtmlIndexCheckBox->Checked
=MainForm->ftp_startup.options&FTP_OPT_HTML_INDEX_FILE;
HtmlIndexCheckBoxClick(Sender);
PasvIpLookupCheckBoxClick(Sender);
PageControl->ActivePage=GeneralTabSheet;
......@@ -149,10 +130,6 @@ void __fastcall TFtpCfgDlg::OKBtnClick(TObject *Sender)
SAFECOPY(MainForm->ftp_startup.index_file_name
,IndexFileNameEdit->Text.c_str());
SAFECOPY(MainForm->ftp_startup.html_index_file
,HtmlFileNameEdit->Text.c_str());
SAFECOPY(MainForm->ftp_startup.html_index_script
,HtmlJavaScriptEdit->Text.c_str());
SAFECOPY(MainForm->ftp_startup.answer_sound
,AnswerSoundEdit->Text.c_str());
......@@ -193,10 +170,6 @@ void __fastcall TFtpCfgDlg::OKBtnClick(TObject *Sender)
MainForm->ftp_startup.options|=FTP_OPT_INDEX_FILE;
else
MainForm->ftp_startup.options&=~FTP_OPT_INDEX_FILE;
if(HtmlIndexCheckBox->Checked==true)
MainForm->ftp_startup.options|=FTP_OPT_HTML_INDEX_FILE;
else
MainForm->ftp_startup.options&=~FTP_OPT_HTML_INDEX_FILE;
if(PasvIpLookupCheckBox->Checked==true)
MainForm->ftp_startup.options|=FTP_OPT_LOOKUP_PASV_IP;
else
......@@ -241,24 +214,6 @@ void __fastcall TFtpCfgDlg::AutoIndexCheckBoxClick(TObject *Sender)
}
//---------------------------------------------------------------------------
void __fastcall TFtpCfgDlg::HtmlJavaScriptButtonClick(TObject *Sender)
{
OpenDialog->FileName=HtmlJavaScriptEdit->Text;
if(OpenDialog->Execute()==true) {
HtmlJavaScriptEdit->Text=OpenDialog->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TFtpCfgDlg::HtmlIndexCheckBoxClick(TObject *Sender)
{
HtmlFileNameEdit->Enabled=HtmlIndexCheckBox->Checked;
HtmlJavaScriptEdit->Enabled=HtmlIndexCheckBox->Checked;
HtmlJavaScriptLabel->Enabled=HtmlIndexCheckBox->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TFtpCfgDlg::PasvIpLookupCheckBoxClick(TObject *Sender)
{
PasvIPv4AddrEdit->Enabled = !PasvIpLookupCheckBox->Checked;
......
......@@ -255,14 +255,6 @@ object FtpCfgDlg: TFtpCfgDlg
object IndexTabSheet: TTabSheet
Caption = 'Index'
ImageIndex = 3
object HtmlJavaScriptLabel: TLabel
Left = 7
Top = 62
Width = 65
Height = 20
AutoSize = False
Caption = 'JavaScript'
end
object AutoIndexCheckBox: TCheckBox
Left = 7
Top = 10
......@@ -285,38 +277,6 @@ object FtpCfgDlg: TFtpCfgDlg
ShowHint = True
TabOrder = 1
end
object HtmlIndexCheckBox: TCheckBox
Left = 7
Top = 36
Width = 78
Height = 19
Hint = 'Automatically generate HTML index files for file descriptions'
Caption = 'HTML'
ParentShowHint = False
ShowHint = True
TabOrder = 2
OnClick = HtmlIndexCheckBoxClick
end
object HtmlFileNameEdit: TEdit
Left = 85
Top = 36
Width = 156
Height = 21
Hint = 'Name of HTML index file (default=00index.html)'
ParentShowHint = False
ShowHint = True
TabOrder = 3
end
object HtmlJavaScriptEdit: TEdit
Left = 85
Top = 62
Width = 156
Height = 21
Hint = 'JavaScript filename to execute to generate HTML index file'
ParentShowHint = False
ShowHint = True
TabOrder = 4
end
end
object LogTabSheet: TTabSheet
Caption = 'Log'
......
/* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
/* $Id: FtpCfgDlgUnit.h,v 1.8 2018/07/24 01:11:28 rswindell Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
......@@ -15,21 +13,9 @@
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
......@@ -87,10 +73,6 @@ __published:
TTabSheet *IndexTabSheet;
TCheckBox *AutoIndexCheckBox;
TEdit *IndexFileNameEdit;
TCheckBox *HtmlIndexCheckBox;
TEdit *HtmlFileNameEdit;
TLabel *HtmlJavaScriptLabel;
TEdit *HtmlJavaScriptEdit;
TLabel *QwkTimeoutLabel;
TEdit *QwkTimeoutEdit;
TLabel *HackAttemptSoundLabel;
......@@ -109,8 +91,6 @@ __published:
void __fastcall AnswerSoundButtonClick(TObject *Sender);
void __fastcall HangupSoundButtonClick(TObject *Sender);
void __fastcall AutoIndexCheckBoxClick(TObject *Sender);
void __fastcall HtmlJavaScriptButtonClick(TObject *Sender);
void __fastcall HtmlIndexCheckBoxClick(TObject *Sender);
void __fastcall HackAttemptSoundButtonClick(TObject *Sender);
void __fastcall PasvIpLookupCheckBoxClick(TObject *Sender);
private:
......
......@@ -866,11 +866,9 @@ __fastcall TMainForm::TMainForm(TComponent* Owner)
ftp_startup.client_on=client_on;
ftp_startup.socket_open=socket_open;
ftp_startup.options
=FTP_OPT_INDEX_FILE|FTP_OPT_HTML_INDEX_FILE|FTP_OPT_ALLOW_QWK;
=FTP_OPT_INDEX_FILE | FTP_OPT_ALLOW_QWK;
ftp_startup.max_clients=10;
strcpy(ftp_startup.index_file_name,"00index");
strcpy(ftp_startup.html_index_file,"00index.html");
strcpy(ftp_startup.html_index_script,"ftp-html.js");
ftp_startup.login_attempt_list=&login_attempt_list;
memset(&web_startup,0,sizeof(web_startup));
......@@ -3038,7 +3036,6 @@ void __fastcall TMainForm::PropertiesExecute(TObject *Sender)
/* Copy global settings, if appropriate (not unique) */
if(memcmp(&bbs_startup.js,&js,sizeof(js))==0) bbs_startup.js=global.js;
if(memcmp(&ftp_startup.js,&js,sizeof(js))==0) ftp_startup.js=global.js;
if(memcmp(&web_startup.js,&js,sizeof(js))==0) web_startup.js=global.js;
if(memcmp(&mail_startup.js,&js,sizeof(js))==0) mail_startup.js=global.js;
if(memcmp(&services_startup.js,&js,sizeof(js))==0) services_startup.js=global.js;
......
This diff is collapsed.
/* Synchronet FTP server */
/* $Id: ftpsrvr.h,v 1.58 2019/03/22 21:28:27 rswindell Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
......@@ -15,21 +13,9 @@
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
......@@ -79,8 +65,6 @@ typedef struct {
/* Paths */
char ctrl_dir[128];
char index_file_name[64];
char html_index_file[64];
char html_index_script[64];
char temp_dir[128];
char answer_sound[128];
char hangup_sound[128];
......@@ -95,9 +79,6 @@ typedef struct {
uint bind_retry_count; /* Number of times to retry bind() calls */
uint bind_retry_delay; /* Time to wait between each bind() retry */
/* JavaScript operating parameters */
js_startup_t js;
/* Login Attempt parameters */
struct login_attempt_settings login_attempt;
link_list_t* login_attempt_list;
......@@ -123,11 +104,9 @@ static struct init_field ftp_init_fields[] = {
#define FTP_OPT_NO_LOCAL_FSYS (1<<5)
#define FTP_OPT_DIR_FILES (1<<6) /* Allow access to files in dir but not in database */
#define FTP_OPT_KEEP_TEMP_FILES (1<<7) /* Don't delete temp files (for debugging) */
#define FTP_OPT_HTML_INDEX_FILE (1<<8) /* Auto-generate HTML index files */
#define FTP_OPT_LOOKUP_PASV_IP (1<<9) /* resolve public IP address for PASV response */
#define FTP_OPT_NO_HOST_LOOKUP (1<<11)
#define FTP_OPT_NO_RECYCLE (1<<27) /* Disable recycling of server */
#define FTP_OPT_NO_JAVASCRIPT (1<<29) /* JavaScript disabled */
#define FTP_OPT_MUTE (1<<31)
/* ftp_startup_t.options bits that require re-init/recycle when changed */
......@@ -144,11 +123,9 @@ static ini_bitdesc_t ftp_options[] = {
{ FTP_OPT_NO_LOCAL_FSYS ,"NO_LOCAL_FSYS" },
{ FTP_OPT_DIR_FILES ,"DIR_FILES" },
{ FTP_OPT_KEEP_TEMP_FILES ,"KEEP_TEMP_FILES" },
{ FTP_OPT_HTML_INDEX_FILE ,"HTML_INDEX_FILE" },
{ FTP_OPT_LOOKUP_PASV_IP ,"LOOKUP_PASV_IP" },
{ FTP_OPT_NO_HOST_LOOKUP ,"NO_HOST_LOOKUP" },
{ FTP_OPT_NO_RECYCLE ,"NO_RECYCLE" },
{ FTP_OPT_NO_JAVASCRIPT ,"NO_JAVASCRIPT" },
{ FTP_OPT_MUTE ,"MUTE" },
/* terminator */
{ 0 ,NULL }
......
......@@ -434,19 +434,11 @@ void sbbs_read_ini(
ftp->pasv_port_high
=iniGetShortInt(list,section,"PasvPortHigh",0xffff);
/* JavaScript Operating Parameters */
sbbs_get_js_settings(list, section, &ftp->js, &global->js);
SAFECOPY(ftp->host_name
,iniGetString(list,section,strHostName,global->host_name,value));
SAFECOPY(ftp->index_file_name
,iniGetString(list,section,"IndexFileName","00index",value));
SAFECOPY(ftp->html_index_file
,iniGetString(list,section,"HtmlIndexFile","00index.html",value));
SAFECOPY(ftp->html_index_script
,iniGetString(list,section,"HtmlIndexScript","ftp-html.js",value));
SAFECOPY(ftp->answer_sound
,iniGetString(list,section,strAnswerSound,nulstr,value));
......@@ -462,7 +454,7 @@ void sbbs_read_ini(
=iniGetLogLevel(list,section,strLogLevel,global->log_level);
ftp->options
=iniGetBitField(list,section,strOptions,ftp_options
,FTP_OPT_INDEX_FILE|FTP_OPT_HTML_INDEX_FILE|FTP_OPT_ALLOW_QWK);
,FTP_OPT_INDEX_FILE | FTP_OPT_ALLOW_QWK);
ftp->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count);
ftp->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay);
......@@ -921,10 +913,6 @@ BOOL sbbs_write_ini(
else if(!iniSetLogLevel(lp,section,strLogLevel,ftp->log_level,&style))
break;
/* JavaScript Operating Parameters */
if(!sbbs_set_js_settings(lp,section,&ftp->js,&global->js,&style))
break;
if(strcmp(ftp->host_name,global->host_name)==0
|| (bbs != NULL && strcmp(bbs->host_name,cfg->sys_inetaddr)==0))
iniRemoveKey(lp,section,strHostName);
......@@ -938,10 +926,6 @@ BOOL sbbs_write_ini(
if(!iniSetString(lp,section,"IndexFileName",ftp->index_file_name,&style))
break;
if(!iniSetString(lp,section,"HtmlIndexFile",ftp->html_index_file,&style))
break;
if(!iniSetString(lp,section,"HtmlIndexScript",ftp->html_index_script,&style))
break;
if(!iniSetString(lp,section,strAnswerSound,ftp->answer_sound,&style))
break;
......
......@@ -27,7 +27,6 @@
#include <stdio.h>
#include <stdlib.h> /* malloc */
#include <string.h>
#include <ctype.h> /* isdigit */
#include <sys/types.h>
#include <sys/stat.h> /* must come after sys/types.h */
......
/* Synchronet message base (SMB) library routines returning strings */
/* $Id: smbstr.c,v 1.38 2020/05/25 19:17:06 rswindell Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
......@@ -15,25 +13,12 @@
* See the GNU Lesser General Public License for more details: lgpl.txt or *
* http://www.fsf.org/copyleft/lesser.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
#include <ctype.h> /* is*() */
#include <string.h> /* strcpy, strcat, memset, strchr */
#include <genwrap.h> /* stricmp */
#include "smblib.h"
......@@ -428,7 +413,7 @@ enum smb_net_type SMBCALL smb_get_net_type_by_addr(const char* addr)
}
if(at == NULL && IS_DIGIT(*p) && *tp == '\0' && IS_DIGIT(last))
return NET_FIDO;
if(slash == NULL && (isalnum(*p) || p == colon))
if(slash == NULL && (IS_ALPHANUMERIC(*p) || p == colon))
return NET_INTERNET;
return NET_UNKNOWN;
......
/* Directory-related system-call wrappers */
// vi: tabstop=4
/* $Id: dirwrap.c,v 1.113 2020/05/25 22:15:09 rswindell Exp $ */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
......@@ -16,21 +13,9 @@
* See the GNU Lesser General Public License for more details: lgpl.txt or *
* http://www.fsf.org/copyleft/lesser.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
......
/* Functions to create and parse .ini files */
/* $Id: ini_file.c,v 1.175 2020/08/08 23:26:38 rswindell Exp $ */
// vi: tabstop=4
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
......@@ -16,28 +13,15 @@
* See the GNU Lesser General Public License for more details: lgpl.txt or *
* http://www.fsf.org/copyleft/lesser.html *
* *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
#include "ini_file.h"
#include <stdlib.h> /* strtol */
#include <string.h> /* strlen */
#include <ctype.h> /* isdigit */
#include <math.h> /* fmod */
#include "xpdatetime.h" /* isoDateTime_t */
#include "datewrap.h" /* ctime_r */
......
......@@ -19,7 +19,6 @@
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
#include <ctype.h> /* isdigit */
#include <stdlib.h> /* alloca/free on FreeBSD */
#include <string.h> /* bzero (for FD_ZERO) on FreeBSD */
#include <errno.h> /* ENOMEM */
......@@ -144,7 +143,7 @@ int getSocketOptionByName(const char* name, int* level)
return(socket_options[i].value);
}
}
if(!isdigit(*name)) /* unknown option name */
if(!IS_DIGIT(*name)) /* unknown option name */
return(-1);
return(strtol(name,NULL,0));
}
......
......@@ -16,7 +16,7 @@
template.ftp_url += host;
if(ftp_port!=21)
template.ftp_url += ftp_port;
template.ftpidx ="/00index.html?$" + new Date().valueOf().toString(36);
template.ftpidx ="/";
template.ftpqwk = "/" + system.qwk_id.toLowerCase() + ".qwk";
}
......