MBS FileMaker Plugin IDs

With MBS FileMaker Plugin 4.5 we reorganized the IDs in our plugin. Now you can see from the ID where it came from. So ID 14012 is an email. Except if you used more than a 1000 regular expressions and also reached that ID there. But in general we don't expect a lot of people use the plugin so much until they restart FileMaker.
FunctionStarts atType
Menu10000text
Menu Items11000text
QuickList12000text
Regular Expressions13000text
SendEmail14000text
Window15000text
CURL sessions16000text
Midi Streams17000text
GraphicsMagick Image18000text
XL Books19000text
DynaPDF Context20000text
DynaPDF Table21000text
SQL Command22000text
SQL Connection23000text
CoreLocation Geocoder24000text
CoreGraphics Image Source25000text
Addressbook Item26000text
Calendar Item27000text
SerialPort28000number
Socket29000number
PDFKit Document30000number
Drag & Drop31000number
TAPI32000text

As you see most IDs are nowadays returned as text and not as numbers. If you just keep them in variables, things should go right. And for storing in fields, simply use text fields. Storing them in number fields may also work as long as you later read the numbers without dot and decimals. "12345" will work, but "12345.00000" may not.

MBS Filemaker Plugin, version 4.5pr1

New in this prerelease of the 4.5 plugins:
  • Disabled code in OpenSSL trying to load config files.
  • Added MountNotification.Install and MountNotification.Uninstall.
  • Fixed bug with GMImage.Copy function.
  • Fixed bug in Container.GetTypeSize.
  • Fixed a bug with reading container data.
  • Updated to GraphicsMagick 1.3.20.
  • Updated to libJPEG 9.1.
  • Updated to PCRE 8.36.
  • Updated to libPNG 1.6.14.
  • Updated to CURL 7.39.0.
  • Updated to OpenSSL 1.0.1j.
  • Updated LibXL to version 3.6.1.
  • Fixed a bug where server license would not allow use in both Scheduled Scripts and Web Publishing/Direct.
  • Added Webview.Cookies.ClearForURL, Webview.Cookies.Count and Webview.Cookies.Query.
  • Changed Line Numbers to work in FileMaker Pro, too (not just advanced). Please report any window you see which has unnecessary line numbers.
  • Updated to newer SDK.
  • Changed SerialPort.Read and SerialPort.ReadHex to return empty text if no data was available instead of error code 35.
  • Fixed a problem with license network check.
  • Fixed a possible problem with stored registration on Mac.
  • Improved code for future (e.g. better 64-bit support).
  • Added Menubar commands to list menu commands, check if one exists, trigger one or change shortcut or visibility.
  • Added FM.RunDataDesignReport function to automatically write data design reports.
  • PHP support is deprecated and will be removed soon.
  • Window and Webview reference numbers are now numbers returned as text.
  • Functions check now text encoding parameters better and report errors for unknown text encoding values.
  • Added suggestions when you use an unknown plugin function: [MBS] Unknown function: CURL.SetOptionVerifyPeer. Did you mean CURL.SetOptionSSLVerifyPeer?
  • Added DynaPDF.GetTextWidth and DynaPDF.WriteDemoText.
  • Added QuickList.AddList, QuickList.AddQuickList, QuickList.HasValue, QuickList.Remove and QuickList.RemoveValue.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

DynaPDF PDF/A

As you may know DynaPDF can write PDF/A and PDF/X files. For that you need have a Pro version and use a couple of special functions. First when writing a PDF you use SetPDFFunction to set the PDF Version to one of the PDF/A versions.

First you call CreateStructureTree function to start a tagged PDF. Next you can set flag ifPrepareForPDFA for import flags to tell DynaPDF you plan to create a PDF/A file. Next you can run CheckConformance to check and fix the plugin for PDF/A conformance. Finally you use AddOutputIntent to required color profiles.

The PDF above are okay when you don't import existing PDF files. For existing PDF, you can use CheckConformance. If you have our extra addition PDF/A extension for DynaPDF, the DynaPDF library can fix most of the issues with existing PDF/A to convert them to the required format. But this extension costs extra (599 Euro). So not everyone needs it, but some will certainly.

All the functions mentioned above are available for MBS Plugin users for Filemaker, Xojo and Real Studio.

More SSL Trouble

Today we had a client who wants to use our MBS Plugins to list a directory on a FTP server. It works well without encryption, but fails with SSL. The questions why?

First thing was to enable verbose (OptionVerbose) to see log and got those messages:

AUTH SSL
500 This security scheme is not implemented
AUTH TLS
234 AUTH TLS OK.
SSLv3, TLS handshake, Client hello (1):
SSLv3, TLS alert, Server hello (2):
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

So the server does not support SSL, but only TLS. And for TLS we got a handshake error, probably because we started with SSLv2. Because with OptionSSLCipherList set to "SSLv3", we got further a step:

SSLv3, TLS handshake, Client hello (1):
SSLv3, TLS handshake, Server hello (2):
SSLv3, TLS handshake, CERT (11):
SSLv3, TLS alert, Server hello (2):
SSL certificate problem: unable to get local issuer certificate

Now we just need to disable verification of peer and host or provide the right certificate and it works!
Just one of the new challenges we got recently. Due to bugs in SSL, a lot of servers disable SSL and only allow via TLS.

CURL with GoDaddy

If you want to use CURL plugins with GoDaddy ftp service, you may see the message in the log like this: "SSL certificate problem: unable to get local issuer certificate".

Now normally we just recommend to get the cacert.pem from curl website and use it with the CAInfo option. But here this fails and gives again the same error message.

To solve it, we need the certificates from GoDaddy, but not just one, but the root and an intermediate one. So on the repository website I downloaded the gd-class2-root.crt and gd_intermediate.crt files. Now I converted them with openssl and joined both pem files into one:

openssl x509 -inform PEM -in gd_intermediate.crt -out gd_intermediate.pem -text
openssl x509 -inform PEM -in gd-class2-root.crt -out gd-class2-root.pem -text
cat gd_intermediate.pem gd-class2-root.pem > gd-bundle.pem

That got me this pem file: gd-bundle.pem

Now you can use CURL with security checks (OptionVerifyPeer and OptionVerifyHost on) and the log shows:

Server certificate:
subject: O=*.senior-systems.com; OU=Domain Control Validated; CN=*.senior-systems.com
start date: 2012-05-02 23:33:25 GMT
expire date: 2017-05-02 23:33:25 GMT
subjectAltName: ftp.senior-systems.com matched
issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certificates.godaddy.com/repository; CN=Go Daddy Secure Certification Authority; serialNumber=07969287
SSL certificate verify ok.

Works in FileMaker, Xojo and Real Studio via MBS Plugins.

Connecting to Microsoft Visual FoxPro

If you ever need to connect to a Microsoft Visual FoxPro database from FileMaker, Xojo or Real Studio, you can use our MBS Plugin to do this.

We simply use the built in ODBC driver from Microsoft to connect. Our connection string is configured to work without setting up a data source. This avoids users to configure their system and just provide the path to the database file.

The connection string looks like this:

"Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\test.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO;"

So we provide the name of there drive, the type of source (database file), the path to the database file and a few options. Maybe you don't need all those options.

Below the FIleMaker script to connect. Please notice that we pass empty username and password after the connection string. And the last parameter is the client type which is always "ODBC" here.

Set Variable [$Connection; Value: MBS("SQL.NewConnection")]
Set Variable [$result; Value: MBS("SQL.Connect"; $Connection; "Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\test.dbc"; ""; ""; "ODBC")]

In Xojo (or Real Studio) with SQL Connection we simply set database connections string and type to connect:

dim con as new SQLConnectionMBS
const db = "ODBC:Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\test.dbc"
con.Connect(db,"","",SQLConnectionMBS.kODBCClient)


In Xojo (or Real Studio) with SQL Database we have to prefix the connection string with "ODBC:" to

dim db as new SQLDatabaseMBS
db.DatabaseName = "ODBC:Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\test.dbc"
if db.Connect then


So the next time you have a client with a FoxPro Database where you need import/export from FileMaker, Xojo or Real Studio, our plugin may come to rescue!

Detect and remove Byte order mark

Sometimes you download a text from the web and see that there are hidden or strange characters in front. That is often the byte order mark. It tells you what type of text encoding you have. e.g. the byte sequence EF, BB, BF for UTF-8 (written as hex characters). If you use wrong encoding, they look like this: Ôªø (MacRoman) or  (Windows ANSI). So when you see those characters, you have a Text which should be decoded as UTF-8 and not with the encodings you used!

So in FileMaker, you can read text as UTF-8, detect the BOM character and remove it for further processing:

# Read text as UTF-8
Set Variable [$text; Value: MBS("CURL.GetResultAsText"; $curl; "UTF-8")]

# get first character
Set Variable [$c; Value:Code(Left($text; 1))]
# is it the UTF-8 BOM?
If [$c = 65279]
# remove it
Set Variable [$text; Value:Middle($text; 2; Length($text)-1)]
End If

# now use the text
Set Field [CURL Test::Text; $text]


At any time you can create the BOM character for UTF-8 with Character(65279) and put it in front of text, before sending it via plugin functions to a file, a socket, a server or a serial port.

[ANN] MBS FileMaker Plugin 4.4 for OS X/Windows - More than 2800 Functions In One Plugin

Nickenich, Germany - (November 11th, 2014) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 4.4 for Mac OS X or Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, Mac, and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 4.4 has been updated and now includes over 2800 different functions, and the versatile plugin has gained more new functions:

If you work often with lists, we have a couple of list functions for you like reverse, sort and logical operations like and, or, not and xor. For processing large lists with thousands of entries, the QuickList functions can give a great speed improvement.

Users of the EyeOne color measurement devices from X-Rite can now use our plugin in combination with the EyeOne SDK to measure colors. So you can build powerful color management solutions in FileMaker.

For our Windows users with a telephone system, we have now functions for the telephone API. This allows you for example to show a customer record for a phone call. Or to dial automatically for your application user.

Fans of regular expressions can now use them to match text in FileMaker. In combinations with our list functions you can query a list for matching entries. If you need more details, you can also compile a regular expression and run it with a text. Than you can query details on the result like the position of matched sub patterns.

We updated DynaPDF library to 3.0.36.104 and included more functions in our plugin: You can now create PDF/A files with checking conformance, applying improvements and add output intents. We have new font functions, functions to work with checkbox fields and functions to create named destinations for links within the document.

Our functions to send emails got a major upgrade. Now we are compatible and tested with Microsoft Outlook. Also you can now specify the text encoding and a custom message ID.

The Mac functions for rich text can now write to file/container and replace text. We got a new function to format JSON texts, GraphicsMagick now writes TIFF files directly to container and we can decode base64 text to file in container.

More details in the release notes. Please take the time to check our 300 example databases and check where you can use our plugin features in your solutions.

App Wrapper 3

Bob Keeney just wrote a nice review about App Wrapper 3, an useful tool for code signing and packaging your application.

See blog entry:
bkeeneybriefs.com/2014/11/app-wrapper-3/

This app can be used both for FileMaker runtimes and applications created with Xojo. This way you can get your app into Mac App Store or simply avoid the Gate Keeper warning after downloading unsigned applications.

MBS Filemaker Plugin, version 4.4pr10

New in this prerelease of the 4.4 plugins:
  • Added TAPI.CreateCall function.
  • Added Container.DecodeFromBase64 function.
  • Added DynaPDF.GetCheckBoxChar, DynaPDF.GetCheckBoxCharEx, DynaPDF.GetCheckBoxDefState, DynaPDF.SetCheckBoxChar, DynaPDF.SetCheckBoxDefState and DynaPDF.SetCheckBoxState for checkbox fields.
  • Added option to SendMail.CreateEmail to specify text encoding.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Upcoming events in the next weeks

FileMaker
6th November 2014, tonight the monthly meeting of Rhein/Main area FileMaker developers in Lorsbach (near Frankfurt/Main, Germany).

Xojo
10th November 2014, Xojo Users Group in Atlanta, USA.
13th/14th November 2014, the Xojo event in Birmingham (UK)
2nd December 2014, the London Xojo User group meeting.

I'll be tonight in Lorsbach and next week in Birmingham.

MBS Filemaker Plugin, version 4.4pr9

New in this prerelease of the 4.4 plugins:
  • Improved SendMail functions to work with Microsoft Outlook correctly.
  • Added SQL.SQLite3.EnableLoadExtension function.
  • Added option to SendMail.CreateEmail to use ISO Latin1 instead of UTF-8 for encoding.
  • Added DynaPDF.AddOutputIntent and DynaPDF.AddOutputIntentEx functions.
  • Fixed a bug in Path.FilemakerPathToNativePath introduced in earlier prerelease.
  • Added RegEx.MatchList, List.RegExMatch and QuickList.RegExMatch function.
  • Added DynaPDF.CheckConformance function.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

FileMaker Magazin - MBS Artikel

For our Germans speaking users:

Wir haben die Artikel zum MBS Plugin aus dem FileMaker Magazin gesammelt hier online gestellt: FileMaker Magazin Artikel:

Wir empfehlen allen FileMaker Anwender ein Abo vom Magazin und den Kauf der alten Ausgaben. Das FileMaker Magazin ist eine excellente Quelle von Informationen, Anleitungen und Profitips.


MBS Filemaker Plugin, version 4.4pr8

New in this prerelease of the 4.4 plugins:
  • Added TAPI functions.
  • Updated DynaPDF to version 3.0.36.104.
  • Fixed problem in XL.LoadBook introduced in pr5.
  • Fixed container reading to work on Windows with network paths.
  • Errors from file functions now include file path. e.g. when opening/creating a file failed.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Archives

Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008