User Controls
Virtual Fax Machine Software
-
2023-09-01 at 4:34 AM UTC
-
2023-09-01 at 4:45 AM UTCfags maggine
-
2023-09-01 at 5:16 AM UTC
To use Caselli’s machine, the fax sender wrote a message or drew an image on a sheet of tin in non-conductive ink. The sheet was then placed on a plate where a transmitting stylus, in a circuit with it, scanned across it in a series of parallel passes. On the receiving end, another stylus, connected by telegraph lines, moved in synchronicity across a chemically-treated piece of paper.
As it scanned, the transmitter would conduct an electrical signal when the stylus ran over the blank parts of the tin sheet and cut the current when the stylus hit the ink. The spatial pattern of the original message, translated into the starts and stops of the current, went over the wire to the synced receiver, and the chemical paper changed color where the current went through. The result: a perfect copy of the original.
https://hackaday.com/2016/02/17/faxing-in-1843/ -
2023-09-01 at 7:05 AM UTC
Originally posted by totse2118 https://hackaday.com/2016/02/17/faxing-in-1843/
That's a photocopier. -
2023-09-01 at 1:43 PM UTCphotocopiers cant interact with the mojo wire
-
2023-09-02 at 11:54 AM UTC
i found a company that sells phone numbers and doesn't force you to buy 100 of them in a bundle
https://www.numberbarn.com/number-parking
idk if this will work if its not assigned to a line but you can port the numbers , fuck this shit how do I make my own numbers -
2023-09-03 at 12:12 PM UTC
SourceForge logo
[r2715]: / trunk / sendfax / sendfax.c++ Maximize History
/* $Id: sendfax.c++ 1176 2013-07-24 05:20:02Z faxguy $ */
/*
* Copyright (c) 1990-1996 Sam Leffler
* Copyright (c) 1991-1996 Silicon Graphics, Inc.
* HylaFAX is a trademark of Silicon Graphics
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "config.h" //for BR_14400 definition
#include "class2.h" //for BR_14400 definition
#include "SendFaxClient.h"
#include "FaxDB.h"
#include "Sys.h"
#include "config.h"
#include <ctype.h> // isspace()
#if HAS_LOCALE
extern "C" {
#include <locale.h>
}
#endif
class sendFaxApp : public SendFaxClient {
private:
fxStr appName; // for error messages
fxStr stdinTemp; // temp file for collecting from pipe
FaxDB* db;
static fxStr dbName;
void addDestination(const char* cp);
void addDestinationsFromFile(const char* filename);
void copyToTemporary(int fin, fxStr& tmpl);
void fatal(const char* fmt ...);
void usage();
public:
sendFaxApp();
~sendFaxApp();
int run(int argc, char** argv);
};
fxStr sendFaxApp::dbName("~/.faxdb");
sendFaxApp::sendFaxApp()
{
db = NULL;
}
sendFaxApp::~sendFaxApp()
{
if (stdinTemp != "") Sys::unlink(stdinTemp);
delete db;
}
int
sendFaxApp::run(int argc, char** argv)
{
extern int optind;
extern char* optarg;
int c;
char *owner = NULL;
char *pass = NULL;
bool optionsUsed = true;
appName = argv[0];
u_int l = appName.length();
appName = appName.tokenR(l, '/');
resetConfig();
readConfig(FAX_SYSCONF);
readConfig(FAX_LIBDATA "/sendfax.conf");
readConfig(FAX_USERCONF);
bool waitForJob = false;
int verbose = 0;
SendFaxJob& proto = getProtoJob();
db = new FaxDB(tildeExpand(dbName));
while ((c = Sys::getopt(argc, argv, "a:b:B:c:C:d:e:f:F:h:i:I:k:M:o:O:P:r:s:S:t:T:u:U:V:W:x:X:y:Y:z:123lmnpvwADEGNR")) != -1) {
if (c != 'h')
optionsUsed = false;
switch (c) {
case '1': // restrict to 1D-encoded data
proto.setDesiredDF(0);
break;
case '2': // restrict to 2D-encoded data
proto.setDesiredDF(1);
break;
case '3': // restrict to MMR-encoded data
proto.setDesiredDF(3);
break;
case 'a': // time at which to transmit job
proto.setSendTime(optarg);
break;
case 'A': // archive job
proto.setDoneOp("archive");
break;
case 'b': // minimum transfer speed
proto.setMinSpeed(optarg);
break;
case 'B': // desired transmit speed
proto.setDesiredSpeed(optarg);
break;
case 'C': // cover page: template file
proto.setCoverTemplate(optarg);
break;
case 'c': // cover page: comment field
proto.setCoverComments(optarg);
break;
case 'D': // notify when done
proto.setNotification("when done");
break;
case 'd': // destination name and number
optionsUsed = true;
addDestination(optarg);
break;
case 'e': // sender's Caller*ID Name
proto.setFaxName(optarg);
break;
case 'E': // disable use of ECM
proto.setDesiredEC(EC_DISABLE);
break;
case 'F': // override tag line format string
proto.setTagLineFormat(optarg);
break;
case 'f': // sender's identity
setFromIdentity(optarg);
break;
case 'G': // extended resolutions
proto.setUseXVRes(true);
break;
case 'h': // server's host
setHost(optarg);
break;
case 'I': // fixed retry time
proto.setRetryTime(optarg);
break;
case 'i': // user-specified job identifier
proto.setJobTag(optarg);
break;
case 'k': // time to kill job
proto.setKillTime(optarg);
break;
case 'l': // low resolution
proto.setVResolution(98.);
break;
case 'M': // desired min-scanline time
proto.setDesiredMST(optarg);
break;
case 'm': // fine resolution
proto.setVResolution(196.);
break;
case 'n': // no cover sheet
proto.setAutoCoverPage(false);
break;
case 'N': // no notification
proto.setNotification("none");
break;
case 'o': // specify owner:pass
{
char* pp = strchr(optarg, ':');
if (pp && *(pp + 1) != '\0') {
*pp = '\0';
pass = pp + 1;
}
}
owner = optarg;
break;
case 'O':
{
char* op = strchr(optarg, ':');
if (op && *(op + 1) != '\0') {
*op = '\0';
if (strncmp(optarg, "skippedpages", 12) == 0) {
proto.setSkippedPages(atoi(++op));
} else if (strncmp(optarg, "skippages", 9) == 0) {
proto.setSkipPages(atoi(++op));
} else if (strncmp(optarg, "nocountcover", 12) == 0) {
proto.setNoCountCover(atoi(++op));
} else if (strncmp(optarg, "probeonly", 9) == 0) {
proto.setProbeOnly(atoi(++op));
} else if (strncmp(optarg, "serverdocover", 13) == 0) {
proto.setServerDoCover(FaxConfig::getBoolean(++op));
} else if (strncmp(optarg, "usecolor", 8) == 0) {
if (strncmp(++op, "only", 4) == 0) {
proto.setUseColor(true);
proto.setDesiredDF(6);
} else
proto.setUseColor(FaxConfig::getBoolean(op));
} else if (strncmp(optarg, "usesslfax", 9) == 0) {
proto.setUseSSLFax(FaxConfig::getBoolean(++op));
} else if (strncmp(optarg, "ignoremodembusy", 15) == 0) {
proto.setIgnoreModemBusy(FaxConfig::getBoolean(++op));
} else if (strncmp(optarg, "timezone", 8) == 0) {
proto.setTimeZone(++op);
} else if (strncmp(optarg, "config", 6) == 0) {
readConfigItem(++op);
}
}
}
break;
case 'p': // submit polling request
addPollRequest();
break;
case 'P': // set scheduling priority
proto.setPriority(optarg);
break;
case 'r': // cover sheet: regarding field
proto.setCoverRegarding(optarg);
break;
case 'R': // notify when requeued or done
proto.setNotification("when requeued");
break;
case 's': // set page size
proto.setPageSize(optarg);
break;
case 'S': // set TSI
proto.setTSI(optarg);
break;
case 't': // times to retry sending
proto.setMaxRetries(atoi(optarg));
break;
case 'T': // times to dial telephone
proto.setMaxDials(atoi(optarg));
break;
case 'u': // sender's Caller*ID Number (for tagline also)
proto.setFaxNumber(optarg);
break;
case 'U': // cover page: sender's voice number
proto.setCoverFromVoice(optarg);
break;
case 'v': // verbose mode
verbose++;
setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
SendFaxClient::setVerbose(true); // type rules & basic operation
FaxClient::setVerbose(verbose > 1); // protocol tracing
break;
case 'V': // cover sheet: voice number field
proto.setCoverVoiceNumber(optarg);
break;
case 'w': // wait for job to complete
waitForJob = true;
break;
case 'W': // cover page: sender's fax number
proto.setCoverFromFax(optarg);
break;
case 'x': // cover page: to's company
proto.setCoverCompany(optarg);
break;
case 'X': // cover page: sender's company
proto.setCoverFromCompany(optarg);
break;
case 'y': // cover page: to's location
proto.setCoverLocation(optarg);
break;
case 'Y': // cover page: sender's location
proto.setCoverFromLocation(optarg);
break;
case 'z': // destinations from file
optionsUsed = true;
addDestinationsFromFile(optarg);
break;
case '?':
usage();
/*NOTREACHED*/
}
}
if (getNumberOfJobs() == 0) {
fprintf(stderr, "%s: No destination specified.\n",
(const char*) appName);
usage();
}
if (!optionsUsed) {
fprintf(stderr, "%s: Unused options after last destination.\n",
(const char*) appName);
usage();
}
if (optind < argc) {
for (; optind < argc; optind++) {
addFile(argv[optind]);
}
} else if (getNumberOfPollRequests() == 0) {
copyToTemporary(fileno(stdin), stdinTemp);
addFile(stdinTemp);
}
bool status = false;
fxStr emsg;
int retval = -1;
if (callServer(emsg)) {
status = login(owner, pass, emsg)
&& prepareForJobSubmissions(emsg)
&& submitJobs(emsg);
if (status && waitForJob) {
if (getNumberOfJobs() > 1) {
printWarning("can only wait for one job (right now),"
" waiting for job %s.", (const char*) getCurrentJob());
}
int waits = 0;
time_t waitstart = Sys::now();
fxStr rjobid = getCurrentJob();
while (!jobWait(rjobid) && waits++ < 5) {
/*
* Our wait failed, and excepting a fault on the proxy this
* can only mean that the connection was lost. Reconnect
* and re-start our wait.
*/
time_t sleeptime = waitstart + 60 - Sys::now();
if (sleeptime < 1) sleeptime = 2;
if (verbose) printWarning("lost connection to server, attempt %d. Attempting reconnection in %d seconds.", waits, sleeptime);
hangupServer();
sleep(sleeptime);
waitstart = Sys::now();
status = false;
if (callServer(emsg)) {
status = login(owner, pass, emsg) && setCurrentJob(rjobid);
if (status && verbose) printWarning("reconnected to server. Resuming wait for job %s.", (const char*) rjobid);
}
}
/* For the benefit of those watching in verbose... */
fxStr r;
command((const char*) fxStr::format("JOB %s", (const char*) rjobid));
jobParm("conntime");
jobParm("duration");
jobParm("npages");
jobParm("totpages");
jobParm("commid");
jobParm("ntries");
jobParm("status");
emsg = getLastResponse(); emsg.remove(0, emsg.length() > 4 ? 4 : emsg.length());
if (emsg.length()) {
status = false;
jobParm("errorcode");
r = getLastResponse(); r.remove(0, r.length() > 5 ? 5 : r.length());
retval = atoi((const char*) r);
} else {
retval = 0;
status = true;
}
jobParm("state");
r = getLastResponse(); r.remove(0, r.length() > 4 ? 4 : r.length());
// Due to the jobWait we should only ever see "DONE" and "FAILED"...
if (r != "DONE") {
status = false;
}
} else if (status) {
retval = 0;
}
hangupServer();
}
if (!status) {
printError("%s", (const char*) emsg);
if (!retval) retval = -1;
}
return (retval);
}
void
sendFaxApp::usage()
{
fxFatal("usage: %s [options] [files]\n"
"(Read the manual page; it's too complicated)", (const char*) appName);
}
/*
* Add a destination; parse ``person@number#subaddress'' syntax.
* T.33 Appendix I suggests that ``#'' be used to tag a subaddress.
*/
void
sendFaxApp::addDestination(const char* cp)
{
fxStr recipient;
const char* tp = strchr(cp, '@');
if (tp) {
recipient = fxStr(cp, tp-cp);
cp = tp+1;
} else {
recipient = "";
}
fxStr subaddress;
size_t sublen = 0;
const char* ap = strchr(cp, '#');
if (ap) {
ap = ap+1;
subaddress = fxStr(ap);
sublen = strlen(subaddress) + 1;
} else {
subaddress = "";
}
fxStr dest(cp, strlen(cp) - sublen);
if (db && dest.length() > 0) {
fxStr name;
FaxDBRecord* r = db->find(dest, &name);
if (r) {
if (recipient == "")
recipient = name;
dest = r->find(FaxDB::numberKey);
}
}
if (dest.length() == 0) {
fatal("Null destination for \"%s\"", cp);
}
SendFaxJob& job = addJob();
job.setDialString(dest);
job.setCoverName(recipient);
job.setSubAddress(subaddress);
if(job.getDesiredSpeed() > BR_14400 && job.getDesiredEC() == EC_DISABLE) {
printWarning("ECM disabled, limiting job to 14400 bps.");
job.setDesiredSpeed(BR_14400);
}
}
/*
* Add a destinations form file
*/
void
sendFaxApp::addDestinationsFromFile(const char* filename)
{
FILE* destfile;
char dest[256];
char *cp;
if ((destfile = fopen(filename, "r")) != NULL) {
while (fgets(dest, sizeof(dest), destfile)) {
for (cp = strchr(dest, '\0'); cp>dest && isspace(cp[-1]); cp--);
*cp='\0';
if (dest[0] != '#' && dest[0] != '\0')
addDestination(dest);
}
} else {
fatal("%s: no such file", filename);
}
fclose(destfile);
}
/*
* Copy data from fin to a temporary file.
*/
void
sendFaxApp::copyToTemporary(int fin, fxStr& tmpl)
{
const char* templ = _PATH_TMP "sndfaxXXXXXX";
char* buff = strcpy(new char[strlen(templ) + 1], templ);
int fd = Sys::mkstemp(buff);
tmpl = buff;
delete [] buff;
if (fd < 0) {
fatal("%s: Can not create temporary file", (const char*) tmpl);
}
int cc, total = 0;
char buf[16*1024];
while ((cc = Sys::read(fin, buf, sizeof (buf))) > 0) {
if (Sys::write(fd, buf, cc) != cc) {
Sys::unlink(tmpl);
fatal("%s: write error", (const char*) tmpl);
}
total += cc;
}
Sys::close(fd);
if (total == 0) {
Sys::unlink(tmpl);
tmpl = "";
fatal("No input data; transmission aborted");
}
}
#include <signal.h>
static sendFaxApp* app = NULL;
static void
cleanup()
{
sendFaxApp* a = app;
app = NULL;
delete a;
}
static void
sigDone(int n)
{
cleanup();
exit(n);
}
int
main(int argc, char** argv)
{
int r = 0;
#ifdef LC_CTYPE
setlocale(LC_CTYPE, ""); // for <ctype.h> calls
#endif
#ifdef LC_TIME
setlocale(LC_TIME, ""); // for strftime calls
#endif
signal(SIGHUP, fxSIGHANDLER(sigDone));
signal(SIGINT, fxSIGHANDLER(sigDone));
signal(SIGTERM, fxSIGHANDLER(sigDone));
signal(SIGCHLD, fxSIGHANDLER(SIG_DFL)); // by YC
app = new sendFaxApp;
r = app->run(argc, argv);
if (r) sigDone(r);
signal(SIGHUP, fxSIGHANDLER(SIG_IGN));
signal(SIGINT, fxSIGHANDLER(SIG_IGN));
signal(SIGTERM, fxSIGHANDLER(SIG_IGN));
cleanup();
return (r);
}
static void
vfatal(FILE* fd, const char* fmt, va_list ap)
{
vfprintf(fd, fmt, ap);
va_end(ap);
fputs(".\n", fd);
sigDone(-1);
}
void
fxFatal(const char* va_alist ...)
#define fmt va_alist
{
va_list ap;
va_start(ap, fmt);
vfatal(stderr, fmt, ap);
/*NOTTEACHED*/
}
#undef fmt
void
sendFaxApp::fatal(const char* va_alist ...)
#define fmt va_alist
{
fprintf(stderr, "%s: ", (const char*) appName);
va_list ap;
va_start(ap, fmt);
vfatal(stderr, fmt, ap);
/*NOTTEACHED*/
}
#undef fmt
© 2023 Slashdo -
2023-09-06 at 12:46 PM UTC
-
2023-09-06 at 9:10 PM UTC
Originally posted by totse2118
I remember when the idiots at Charter Communication HQ decided to force cable customers to rent a digital box for $9.99/month even though their TV already had a built in cable converter. They ended up getting hit with a massive class action lawsuit, which they lost, and had to retroactively refund every charge to every customer going back years, which was billions. Then the same idiots forced customers to rent a modem at $3.99/month to get Internet service, and prevented customers from using their own modem, resulting in another mass class action lawsuit, which they lost and had to refund every single charge going back years, costing the fools several more billions. -
2023-09-13 at 2:40 PM UTC
-
2023-09-13 at 2:57 PM UTCI still use carrier pigeon. I have the fastest birds on the block.
-
2024-05-21 at 3:28 PM UTChttps://www.fusionpbx.com/
Welcome to FusionPBX
FusionPBX can be used as a highly available single or domain based multi-tenant PBX, carrier grade switch, call center server, fax server, voip server, voicemail server, conference server, voice application server, appliance framework and more. FreeSWITCH™ is a highly scalable, multi-threaded, multi-platform communication platform.
It provides unlimited extensions, voicemail-to-email, music on hold, call parking, call center, call queues, phone provisioning and many other features. It provides the functionality your business needs and brings corporate level phone system features to small, medium and large businesses.
Official Release
FusionPBX version 5.2 has now been released with many improvements.
Release Notes
Tags
Releases
Release Highlights
XML CDR service import CDR records from the file system.
Additional Multi-lingual translations and improvements
Provision - Additional templates
Provision - Add Linphone
Provision - Add Sipnetic
Command line option for sending email reports
Paging - Delayed paging
Paging - Detected call transfer return to sender
Fax - Failover with multiple Bridges
Fax - Command Response
Destination Summary Report
Extensions - Optional Device Template column
Extensions - per extension language select
Extensions - Optional Device Address column
Call Detail Records - call flow details
Call Detail Records - call queue search
Call Detail Records - optional account code column
Call Detail Records - status improved
IVR Menu Greeting play back button
Intuitive Bridge Builder
Email Queue optional smtp response logging
Improved SESSION security
And more...
Optional Features
dialplan_tools - Add dialplan actions to the destination select list.
device_logs - Log provisioning requests so they can be used for troubleshooting.
edit - Used to edit provisioning files, and FreeSWITCH XML file
sip_trunks - Used for sip trunking for registered extensions.
providers - Used with SMS and to define VoIP providers.
messages - Used to send SMS messages.
sql_query - Global admin cannn use this to run database queries. -
2024-06-12 at 1:38 PM UTCI have caved and ordered an analog phone line from my big telecom internet provider. Can your IP address get doxxed from sending spam faxes?
-
2024-06-12 at 2:19 PM UTC
-
2024-06-12 at 3:39 PM UTCVERSION 3.9 - DECEMBER 24 2012
------------------------------
The goal for 3.9 was to strictly focus on fixing most if not all of the
reported problems, not just recently, but collected over a period of time.
In order for that to happen, some drastic changes were made to a few things.
I hope you enjoy 3.9 as this one was a bit of a challenge and involved
a fair amount of programming and testing.
WARNING: BINKDWIN and BINKDOS2 must now be started with the -C parameter
if you are serving incoming connections or "hubbing" mail to other
systems, ie. C:\DB\BINKDWIN.EXE -C DBRIDGE.BNK
Please update any shortcuts ASAP in Windows or OS/2 to include
the -C parameter. Failure to do so may cause certain aspects of
this release to not work as desired.
BinkD must also be shut down before upgrading. If you have it
running as a service in Windows 2000 or higher, ensure the service
has been uninstalled entirely ("BINKDWIN -t uninstall") and
verify; via Windows Start-Run-SERVICES.MSC. After upgrading to
this version; D'Bridge will automatically re-install the service
with the correct -C parameter.
WARNING: The event database format has been updated, so after upgrading to
3.9 you may find that all events become "overdue". Get ready to
press CTL+A to cancel any overdue events when the mailer fires up.
- A very serious problem involving a fun-filled week of troubleshooting
issues with Quickdial, the MEH/UEH files and long-term system stability
has been fixed.
- A very serious fundimental design flaw with DBUTIL MOVE not moving more
than one Netmail message at a time and/or not correctly modifying the
"status" of moved Netmails has been fixed.
- A very serious Echomail-tossing flaw has been fixed when tossing
excessively large amounts of messages in Fido *.MSG format.
- A serious stability problem has been resolved when scanning many
Echomail areas with many *.MSG files; then pressing CTL+A either does
not cancel the scan, or it hangs the system.
- A somewhat major regression-bug with DB TERM not operating correctly or
mishandling the modem or port itself has been fixed.
- Rewrote the logic behind appending to a message archive in DBUTIL PURGE.
- The TIC processor code has been completely rewritten and redesigned
from scratch. It should no longer crash the system with memory leaks,
stack overflow or other nonsense.
- TIC "actions" now take place before TIC files are forwarded or processed
to other systems.
- Internet EMAIL and USENET gating has been significantly rewritten and
redesigned from scratch; leaving only core elements and Areafix support
for Usenet groups intact in the mailer while the rest is setup manually.
- Every single reported "8000" problems with the Internal Editor should be
gone for good. The internal editor should now correctly handles huge
volumes of messages, messages with high-numbers, forwarding/copying, etc.
- There may be a slight delay when using the internal editor and "listing"
the contents of an Echomail directory in *.MSG format with many messages.
This is normal.
- When the mailer saves the last-EMSI session information, it no longer
includes the system type (for possible security concerns)
- Added two new questions, "Resolve from INA/IBN flags" and "Obey ICM"
to the BinkD system; which was also significantly redesigned. D'Bridge
can now resolve INA and IBN flags in addition to BINKD.TXT, when
sending a Netmail message direct to another system and that system has
not been first defined in the BINKD SESSION INFO screen.
NOTE: At the last minute, it was determined that BinkD might complain
about a destination system's "mailbox" directory missing if the
destination was resolved by INA/IBN/BINKD.TXT and has only XMAIL or
file-transmissions (no Netmail). The warning messages may persist for
up to several minutes. These warnings can be ignored.
- It is recommended that an INA/IBN/BINKD.TXT-resolved system be
"properly" set up in the BINKD SESSIONS question if ongoing transactions
are to be expected; or the system must also have a session password
defined.
- At least one system in BINKD SESSIONS must be defined for INA/IBN
and BINKD.TXT resolution to work correctly (this will likely be
addressed in a followup release)
- BinkD can now process Private/Unpublished nodelist entries provided the
destination system can have its listed BinkD information resolved
correctly. I still do not understand why a Pvt/Unpublished system would
have INA/IBN flags since Pvt/Unpublished to me implies you're off
the Matrix; you can't be contacted other than host-routing messages.
- The field for the BinkD default resolution domain (FNZ) has been adjusted,
however I am not supporting FNZ lookups at this time.
- There is no more option to "write" the BinkD configuration.
- There are no more hooks to call DOS commands before or after a BinkD
transaction, for a few reasons.
- BinkD should now properly create all domain directories in scenarios
where the Zone differs from the AKA matching logic D'Bridge applies.
- BinkD will not create the received-mail semaphore until all mail and files
have been received.
- The problem of incorrect Zone portions of the BinkD domains created
should be resolved now.
- BinkD resolution is properly displayed in the "View Queue" menu screen.
- The nodelist may be recompiled and the Queue rescanned after exiting the
Config - Internet BinkD settings screen. This is normal behavior.
- A very rare scenario where new Echomail is created, scanned & packed and
then the first Queue entry being a PSTN dialup system is mistaken for
a BinkD system thus the mail is lost in the Twilight Zone has been fixed.
- Cosmetic bugs with displaying Queue entries in a few different rare
scenarios have also been fixed.
- The display of "** No description" on valid history entries has been
corrected. Note that the format of those database files has been slightly
adjusted and this means you will not be able to keep the history files
if you downgrade back to 3.82.
- If BinkD resolution fails, and/or a dialup modem is not installed for
a Queue entry, the entry is placed on Hold/Unlisted status.
- Clocksync operations are restricted to PSTN dialup modems only.
- The timeout value for outgoing calls on PSTN dialup sessions has been
slightly adjusted though the modem's S7 register setting still applies
and overrides the timeout value.
- D'Bridge no longer probes COM ports in COMM/MODEM setup.
- A slightly less-complicated check for disk space is done while tossing
mail and the available drive space falls within a certain threshold to
cycle the tosser to pack XMAIL.
- A slight correction was made to the code that controls the mailer's
status line updates.
- Removed all obnoxious "Beeps of Death" from the mailer and internal
message editor; except for certain scenarios which the mailer must exit
with an error. FUN FACT: It appears that anything that calls Beep on
a Windows RDP session overrides the volume setting of the local host...
- D'Bridge now properly creates all required directories for newcomers.
- There are several "macros" that can be used for any "DOS window" or
window-of-commands to execute. In theory, this can be used to run DOS
programs which require a basic amount of "interaction" however I am
not offering technical support beyond the abilities mentioned below.
*K<CR> - Replace with carriage-return.
*K<LF> - Replace with line-feed.
*K<ESC> - Replace with ESC key.
~YYYY - Replace with current four-digit year.
~YY - Replace with current two-digit year.
~MM - Replace with current two-digit month.
~DD - Replace with current two-digit day.
~HH - Replace with current two-digit hour.
~II - Replace with current two-digit minute.
~ALARM - Beeps and halts the mailer until a key is pressed.
Note for *K when I say replace, I mean stuffing the DOS keyboard buffer
with the desired keystroke-code byte.
- Checking for updates no longer crashes the system if CTL+A or CTL+X is
pressed.
- An extensive amount of Echomail/Echofile area changes no longer crashes
the system.
- Aborting a Zmodem file transfer in DB TERM no longer crashes the system.
- Cancelling the Internet BinkD setting screen a bunch of times no longer
crashes the system.
- Specifying multiple destinations for Netmail via the F8 command in
the internal editor no longer crashes the system.
- D'Bridge now has slightly better support for GoldED and TimED message
editors in Config - Editor Options.
- The FLAGS kludge in the internal editor is no longer added to Netmail when
the message contents are edited (yes, I'm aware of another issue relating
to this scenario)
- The internal editor should properly show kludges on the "first" message
shown on the screen.
- Removed the references to base address and IRQ settings. The FOSSIL code
never uses it.
- Should be possible now to push through a FREQ over BinkD via. the mailer,
though I am not supporting it at this time.
- Pretty sure I freed up some badly-needed memory in the MCF parsing code.
- DB EXPORT and DB IMPORT have been slightly adjusted.
- A serious problem with DB EXPORT and an immediate DB IMPORT not correctly
"maintaining" certain settings should be resolved now.
- D'Bridge 3.9 should run correctly on MS-DOS 3.3, "share" or no share.
- D'Bridge should no longer crash on a Tandy 1000 SL, TL, RL or RLX
computer system using Thaddius Pritchard's utility to play VOC/WAV files
on the digital-audio chipsets of those computers when the "Youve got mail"
option calls PLAYMAIL.BAT on personal Netmail/Echomail.
- A very trivial problem with screen mode 43/50 has been fixed.
- The on-line help system / entire documentation has been slightly updated
and some sections revised or rewritten.
- The "manual" is properly included going forward now...
NOTE: At the last minute, I decided against including MS-Word and PDF
documentation for now.
- The Net 229 website correctly resolves http://www.net229.org/dbridge
- The D'Bridge section of the Net 229 website has been updated.
Feedback on 3.9 is greatly appreciated. Happy testing!
Nick Andre
www.net229.org -
2024-06-12 at 3:40 PM UTCThat reminds me of a bit of obscure trivia...
Back in the early days of FidoNet, one or more of the Fido BBS sysops had
DEC Rainbows. The machines could run Fido just fine, but the serial port
address/port didn't follow the convention laid down by the IBM PC. At the
time, there were other MS-DOS compatibles that also had a similar issue
with the serial port and some of those folks wanted to run Fido.
Tom Jennings, Wynn Waggoner III(sp?) and Thom Henderson(sp?) got together
to create the FOSSIL standard.
FOSSIL is Fido Opus Seadog Serial Interface Layer and provided a mechanism
via INT 14 for any MS-DOS compatible computer to run any BBS or mailer
software that had FOSSIL support and a FOSSIL driver available for it.
FOSSIL continued to be a thing long after the issue of serial port
incompatibility was a thing of the past. In fact there's modern software
out there now such as NetFossil that telnet-enables software that can talk
to a FOSSIL driver.
The two popular FOSSIL drivers that I recall from back in the day were
BNU and Ray Gwinn's X00.
As an aside, if anyone has or knows where I can find the source code for
Opus BBS, I'd be interested in hearing from you!
g.
--
Proud owner of F-15C 80-0007
http://www.f15sim.com - The only one of its kind.
http://www.diy-cockpits.org/coll - Go Collimated or Go Home.
Some people collect things for a hobby. Geeks collect hobbies.
ScarletDME - The red hot Data Management Environment
A Multi-Value database for the masses, not the classes.
http://scarlet.deltasoft.com - Get it _today_!