Jump to content

Leaderboard


Popular Content

Showing most liked content since 05/15/2017 in all areas

  1. 3 points
    Let's all get along? It's been rare for our forums, but on occasions I have had to step in to keep the peace and harmony of the site. At times personalities clash - and the typed repsonses are often done in haste - and the sort of thing that wouldn't be said if we were all in same room together. I am encouraging everyone to re-read https://fmforums.com/guidelines/ our guidelines. Let's please keep threads on topic. - and not abuse the "reporting" system. Please be courteous of others and if you have offended someone please extend a sincere apology. The least thing I enjoy doing is to put people in 'timeout' or ban them from the site. Thank you.
  2. 3 points
    Aleesha, another thing which fits for you right now is making it easy on yourself in future to know specifically which table occurrences have Allow Creation turned on. It looks obvious here but as your solution grows, it won't always be obvious and we can forget as well. What many developers do is use the text tool to create reminders such as the A or a - if 'deletion' or S for sort.
  3. 3 points

    Version 1.0.0

    61 downloads

    This technique was inspired by @Claus Lavendt in a tweet. Now with offset new card style mode you can now create a tool pallet to interact with a document in preview mode

    Free

  4. 2 points
    I don't understand the question. It seems to me like you've already identified what needs to be done. I would recommend breaking it down and getting one portion working at a time, doing whatever research/experimenting you need to figure out each step. If you searched through the help file, I think you'd find you can piece this together. For your first step "Open Find" for example, you might want to read this: https://fmhelp.filemaker.com/help/16/fmp/en/#page/FMP_Help%2Ffind-request.html. The reference section of the help is useful for exploring what script steps are available: https://fmhelp.filemaker.com/help/16/fmp/en/#page/FMP_Help%2Fscript-steps-category.html%23 Here is some more general help on writing a script: https://fmhelp.filemaker.com/help/16/fmp/en/#page/FMP_Help%2Fscripts.html%23
  5. 2 points
    I think you want to use a Loop Script. http://www.filemaker.com/help/15/fmp/en/#page/FMP_Help%2Floop.html%23wwconnect_header # Do a find to Isolate Records to be changed # This will replace field contents with nothing. # Go to Record/Request/Page [ First ] # Loop # Set Field [zz_DeleteWarning__lxn ; "" ] Go to Record/Request/Page [ Next ; Exit after last: On ] # End Loop Lee
  6. 2 points
    Hi riadh2002 Thanks fo posting this mod. I love it, when someone can extend on what I start. Really glad that my tool seems to have been helpful to you and others. In case someone has only had their hands on the first version, I released, the most recent version of the tool, let's you both import, "make FM ready" SVG - but the most useful feature of the newest version, is that you can take a found set, press the button to "copy" all found icons and paste them into your solution all at once. So say you have a standard collection of SVG icons, that you normally want to use. Find these icons in the tool. Copy them. And then you use the paste shortcut, which will insert a button bar object, that you can delete immediately after you pasted it. Now, all your icons appear in the tools palette of your file. Newest version can be found here: http://thebrainbasket.com/?p=404 (completely free and open)
  7. 2 points
    For anyone who have pale icons in filemaker after importing here is how to change the colour to red Many thanks to Claus Lavendt, of DataMani for providing the tool for free Using SVG icon Helper, can be downloaded here for free: http://www.filemakervideos.com/filemaker-14-svg-icon-helper-tool-filemaker-14-training/ And this code takes into account all shape elements of SVG such as circle, rectangle, polygon,,,etc. and Works Great with IonIcons.com Library It removes existing fills and fm_fill class and substitutes with new values so it works with SVG with or without fill attribute. You can also change the color at the top of the code 1. Open SVG icon Helper FM database and open Script Workspace 2. Go to Script “Edit SVG files - mini icons….” 3. Go to the comment “#make changes” 4. Open the Set variable script step just below 5. replace the existing code by the following: 6. save and go back to the main layout and click the button with the blue pen, select folder and validate You’re done :-), now you can re import the icons into filemaker Let ( [ ~content = $content; ~color = "#FF0000"; // We need to search for all existing fills and remove them ~content=If ( PatternCount ( ~content ; "fill=\"" ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "fill=\"" ; 1 ; 1 ) ; 14 ) ; "" ) ; ~content ); // We need to search for all existing fm_fill and remove them class=\"fm_fill\" ~content=If ( PatternCount ( ~content ; "class=\"fm_fill\"" ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "class=\"fm_fill\"" ; 1 ; 1 ) ; 15 ) ; "" ) ; ~content ); // Then add the fills in the appropriate positions covering all possible SVG elements //<path ~content=If (PatternCount ( ~content ; "<path " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<path " ; 1 ; 1 ) ; 6 ) ; "<path fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<rect ~content=If (PatternCount ( ~content ; "<rect " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<rect " ; 1 ; 1 ) ; 6 ) ; "<rect fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<circle ~content=If (PatternCount ( ~content ; "<circle " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<circle " ; 1 ; 1 ) ; 8 ) ; "<circle fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<ellipse ~content=If (PatternCount ( ~content ; "<ellipse " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<ellipse " ; 1 ; 1 ) ; 9 ) ; "<ellipse fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<line ~content=If (PatternCount ( ~content ; "<line " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<line " ; 1 ; 1 ) ; 6 ) ; "<line fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<polygon ~content=If (PatternCount ( ~content ; "<polygon " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<polygon " ; 1 ; 1 ) ; 9 ) ; "<polygon fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<polyline ~content=If (PatternCount ( ~content ; "<polyline " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<polyline " ; 1 ; 1 ) ; 10 ) ; "<polyline fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ); //<text ~content=If (PatternCount ( ~content ; "<text " ) > 0 ; Substitute ( ~content ; Middle ( ~content ; Position ( ~content ; "<text " ; 1 ; 1 ) ; 6 ) ; "<text fill=\""&~color&"\" class=\"fm_fill\" " ) ; ~content ) ]; ~content )
  8. 2 points
    There is a file called permittedlist.txt. It is located in the /Users/{username}/Library/Application Support/FileMaker/Shared folder. This Library folder is normally hidden. To view it, go to Finder and open the Go menu while holding down the option key. The option key allows you to select the Library folder. Drill down to this file, permittedlist.txt and delete it. Or, to be ultra-cautious, just rename it. Now, when you try to upload a database to FM Server, it will alert you to any SSL certificate issues. When you choose to connect anyway, it will generate a new permittedlist.txt and it will allow you to freshly enter your FM Server admin name and password and upload the file.
  9. 2 points
    I'll counter that. One of our standards is to always an explicit "Exit Script" and to explicitly pass an empty string "" when no real value needs to be passed out of the script. The main reason is that the Get(ScriptResult) will remember the last explicit returned result. If you don't use Exit Script in the sub script but expect Get(ScriptResult) to be empty because you didn't pass anything back then you may be surprised to see a value if a previous script did use Exist Script with a return.
  10. 2 points
    Just to let anyone know that may have the same issue, I have submitted this to 360works support and they replied that this is a confirmed bug and recommend to go back to ver 1.67 until a fix has been issued. -Sydney
  11. 2 points
    Come to think of it, that's not entirely true. Suppose you add a field that cannot be empty (such as ClientID) into the portal and give it an object name. You could then use the GetLayoutObjectAttribute() function to get the object's content - and hide the portal when it's empty.
  12. 2 points
    I don't think playing 20 questions is a good method to get to the bottom of this. No one can tell why something fails without being able to reproduce the problem on their own first. The proper way to present this would be to attach the two files - preferably reduced to the absolute minimum that still shows the problem. Without this, all we can do is generalize and/or guess. In general, I can think of two possible reasons why records will not be imported: 1. There are no records to import; 2. There are records to import, but they do not pass validation. Now for the guess part: First, I don't know what you mean by "the autocomplete box on import". I am going to guess it's actually the "Perform auto-enter options while importing" option. And I am going to guess further that one or more of your fields is defined to auto-enter a value and validated as Not empty, Validate always. And I am going to guess that the source file contains no data to import into this field.
  13. 2 points
    Apparently, the issue is fixed in FileMaker 16.0.2!
  14. 2 points
    I'm not sure which topic this belongs in but... I really just wanted to let everyone on these forums know how thankful I am for your support, advice and guidance. Over the past few years as my small business has grown into a bigger business I've needed filemaker to do more advanced things and as I am not a developer and simply a business owner, I've turned to these forums and to you all and I couldn't have built my database without your help. From the bottom of my heart thank you so much!! Matt
  15. 2 points
    Extra step: yes. Hassle: after a while it doesn't feel that way because that new Layout Object inspector brings so much goodness that you'll use it all the time anyway and it won' feel like a hassle to have to move over to it. It'll become a very natural flow of your layout design. But it definitely is a change and requires a bit of mental retraining and so there is a bit of 'who moved my cheese'. I certainly scoffed at it in the beginning, now I can think of all the bigger hassles I had to go through before having this.
  16. 2 points
    Not sure if "master list" = client cache. I've not heard that term. However, I've read that some are seeing bad data (outdated) because of cache! Several desperate posts on TechNet. https://community.filemaker.com/thread/168254 But good reviews here: https://blog.beezwax.net/2016/06/15/performance-optimizations-make-compelling-case-for-filemaker-15-upgrade/
  17. 2 points
    I doubt very much you need or want to do that. What would be the purpose of this? You will end up with several numbered Category fields. Numbered fields are a prime example of poor database structure. You won't be able to find a record by its category, unless you search all the fields. You won't be able to define a relationship matching on category. You won't be able to produce a report of records grouped by category. I suggest you either split the field into individual records in a related table or just substitute the > character with a carriage return, so that your field contains a list of the relevant categories (same as a checkbox field would).
  18. 2 points
    Not sure I follow entirely, but in your script, just before the "Show Custom Dialog" just do a Set Field [Examples::MASTER CODE ; "" ]
  19. 2 points
    OK - I did it myself. Over a couple weekends of spare time, I wrote a few dozen scripts that interface between Filemaker and the Amazon Marketplace Web Service API. Sad to say, this is non-trivial. Amazon's documentation is poor: there are a surprising number of mistakes, misspellings, and obsolete/outdated sections. The one bright spot is the Amazon MWS Scratchpad, which provides a direct sandbox to allow testing different calls. Most of the documentation and online help is aimed at PHP & Java & Python developers; it's not too difficult to map this into Filemaker land. I wrote scripts to gather my orders from Amazon Market Place, and to send confirmations to buyers. Like most API's, there are many gotcha's. Here's a few hints, mainly to save time for others in my position. 1) A simple Filemaker WebViewer is *not* going to work, unless you do screen-scrapes from the Amazon MWS Scratchpad. 2) I used cURL to communicate with Amazon Web Service via POST. The information to be POSTed is the Amazon parameter string (which includes the hashed signature). The Monkeybread Software Filemaker functions (www.mbsplugins.eu) are just the ticket. 3) The outgoing information must be signed with a SHA256 hash. Again, this is available in the Monkeybread software functions. Use MBS("Hash.SHA256HMAC"; g_AWS_Secret_Key; g_AWS_Text_to_Sign_With_NewLines_Replaced; 1) 4) Getting the correct SHA256 signature requires very strict observance of line-feeds ... carriage return / linefeeds in OS X and Filemaker will cause a bad signature. Before making the SHA256 hash, do a complete replace so as to generate only Unix-style line-feeds. Within the "canonical parameter list" there aren't any linefeeds (but there are linefeeds before that list) 5) The Amazon API demands ISO-8601 timestamps, based on UTC. Filemaker timestamps are not ISO-8601, but there are several custom functions to generate these. The Filemaker function, get(CurrentTimeUTCMilliseconds), is very useful, but its result must be converted into ISO-8601. Notice that Amazon UTC Timestamps have a trailing "Z" ... when I did not include this, the signatures failed. 6) The Amazon API must have url encoded strings (UTF-8). So the output from the SHA256 hash must be converted to URL encoding -- again, the Monkeybread software comes through (use MBS function Text.EncodeToURL) 7) The Amazon "canonical parameter list" must be in alphabetical order, and must include all of the items listed in the documentation. 8) Errors from Amazon throttling show up in the stock XML return, but check for other errors returned by the cURL debug response. At minimum, search through both responses by doing a filemaker PatternCount (g_returned_data; "ERROR") 9) When you're notified of a new Amazon order, you must make two (or more) cURL calls to Amazon MWS: 1) first, do cURL request to "list orders", which will return all the Amazon Order Numbers (and some other info) for each order since a given date/time. 2) Then, knowing an order number, you do another cURL to get all the details for a given order. Repeat this step for every new Amazon order number. Each of these calls requires your Amazon Seller_ID, Marketplace_ID, Developer_Account_Number,_Access_Key_ID, and your AWS_Secret_Key. Each also requires a SHA-256 hash of all this information along with the "canonical parameter list" If anyone wants my actual scripts, drop a note to me (At this moment, my scripts do the all-important /orders /list orders and /get order. I'm almost finished writing a /feeds filemaker API to send confirmations. I probably won't build scripts to manage inventory or subscriptions, but once you've built a framework for the scripts, it's not difficult to expand to more functionality) Best of luck all around, -Cliff Stoll
  20. 2 points
    Here's one way. RowCalc.fp7.zip
  21. 1 point
    You don't provide much context about what you expect to happen. Just based on looking at your file, I'm curious as to why you chose this path of 2 relationships to dashboard via a 'Constant' (1). This is more of an outdated approach as now you can use the Cartesian relationship to do the same thing. I guess your goal is to display what is due for retest and what is about to expire on your dashboard? It might be easier just to ditch all the relationship hoops and use 2 self join relationships with filtered portals. As a side note, you may want a rolling expirations/retest dates, so on the last day of the month you know what's happening tomorrow. Modified file Retest_ExpiryModSM.fmp12 Edit: I see doug posted the same time as me :)...2 different approaches.
  22. 1 point
    Hi becham, I would do this with a Conditional Formatting if you only want to view them. Example file shows two different colors, one for past and one for future of the target date. You could use the same color for both fields AnyDate represents your date field (you mentioned in your post). Flag.fmp12
  23. 1 point
    Hi muskee You need to add accounts to Database B with exactly the same username and password as you have in Database A. That way, FileMaker will try to open Database B with whatever name/password was used to open Database A and show the data without asking for login. If there is not a matching account in database B, then you will be asked for login credentials. There is no way to tell FileMaker to use a specific name/password when opening a file that is referenced in 'Manage -> External Data Sources', you have to do what I describe above.
  24. 1 point
    We don't know if you are working with a sorted set nor whether the record being duplicated is the one 'last visited' or immediately prior so I would suggest, to expand on Tom's suggestion, that you use a script parameter. Create a script named Duplicate record with these steps: Set Variable [ $value ; yourFieldHoldingTheNumber ] Duplicate Record Set Field [ yourFieldReceivingTheNumber ; $value - 1 ] Replace the 'yourField' portions of the above script with your actual field name (you can double-click it to insert it). Then attach this script to a button called Duplicate Record. And welcome to FMForums! :-)
  25. 1 point
    After an import, the found set is always just the imported records.
  26. 1 point
    With the advent of a new Fiscal Year for the FileMaker Developer Community, we will experience five emerging trends in FileMaker Information Security. Each of these will likely have specific impact on developers, on our clients, on the Platform, and on the larger business environment in which we operate. Cumulatively and symbiotically, the magnified impact of the five will have the potential to alter many long-standing practices and conventions. What are these five trends? How will they impact the developer community? Read more and download article here: https://fmforums.com/files/file/94-five-emerging-trends-to-impact-filemaker-platform-security/ Steven H. Blackwell
  27. 1 point
    Hi Phil, I reported your support issue to Jesse and he is currently looking into it and will be in contact soon. I'll update this thread for anyone else that is running into this issue.
  28. 1 point
    Readme.txt: * Use '360deploy' as the username and password to open the included database You then immediately get prompted to change the password.
  29. 1 point
    make a new Dates table occurrence and attach it to enrollment by the program ID from there you can create a drop down list once you choose the program you can select the corresponding dates. - however that wouldn't prevent users from picking dates that had already passed. Ideally instead of a drop down picker use a popup with a portal or a card window where you are presented a list of Dates sorted by Program and omitting past dates then when selecting it would set all the needed fields.
  30. 1 point
    OK, I see what you're saying. To do what you want, the best thing is going to just simply be copying and pasting that section of the MirrorSync script into a separate script that you run manually. You'll find this towards the end in the sync finished section of the script.
  31. 1 point
    Hey everyone, I love how open the Filemaker Community is, and how much is shared freely, so I wanted to contribute. I created a database to manage SVG icons. The icons are all royalty free provided by Syncfusion and there are about 4,000 icons, all with search tags to make finding them super easy. You can find out more about the file, and download it here: http://www.indats.com/2015/06/15/indats-icon-manager/ Please let me know any feedback you have on the file, thanks!
  32. 1 point
    indeed these blog entries and manuals are well worth reading. I might add my two cents in that you should consider keeping your FileMaker solution 'SQL clean'. By that I mean three things: 1. use names for tables and fields so that you don't need escape codes. It makes your SQL much nicer to read and maintain. 2. use a separate set of Table Occurrences for your SQL. SQL operates without the Filemaker context, so there there's no need to stick to your schema and you don't need cryptic names in your SQL statements. 3. don't use SQL in field definitions. You will run into record locking conflicts without knowing it. HE
  33. 1 point
    There are several ways this could be accomplished. A simple one would be to add a calculation field to the Participants table, along the lines of = If ( not Inactive ; NumberOfChildren ) then change your existing calculation to sum this field instead of the NumberOfChildren field. I don't see why you need the summary field; you could do simply: Count ( Participants::ClassID ) - Count ( Participants::Inactive )
  34. 1 point
    That a Girl. Let us know what you find. Lee
  35. 1 point
    You can calculate the date of last Wednesday using = Get ( CurrentDate ) - Mod ( Get ( CurrentDate ) - 3 ; 7 ) Note that this will return the current date when the calculation is performed on a Wednesday. I am afraid I did not get this part: The calculation looks only at the weekly cycle and ignores year boundaries. If you like, you can use = Get ( CurrentDate ) - Mod ( Get ( CurrentDate ) - Weekday + 1 ; 7 ) where Weekday is a number between 1 (Sunday) and 7 (Saturday).
  36. 1 point
    I am afraid you have lost me at this point. This thread is about the ExecuteSQL() function, so I don't see what a portal has to do with this. The result specified in your post can be easily achieved using the following query: SELECT Invoice, MIN (UUID) FROM Sales GROUP BY Invoice as shown in the attached screenshot. And since you say you don't care about the UUID values, you could do simply: ExecuteSQL ("SELECT DISTINCT Invoice FROM Sales " ; "" ; "" ) and get the result of: 64320 64565 If you want something else, then you need to clarify - preferably in a new thread.
  37. 1 point
    Yes, but you must also specify the year: http://www.briandunning.com/cf/1439 Note that this assumes you're using the same method to number weeks as does Filemaker's WeekOfYear() function (most significantly, that any fraction of week occurring at the beginning of the year counts as a full week). The last date of week 26 is, of course, the first date of week 25 + 13.
  38. 1 point
    Cross-post with https://community.filemaker.com/thread/175457 (It's ok to cross-post but it is good form to indicate your post as such since a lot of the people on both forums are the same)
  39. 1 point
    As an aside; look into using sparse image bundles when installing trial or pre-release software: http://blog.fosketts.net/2015/07/22/how-to-use-mac-os-x-sparse-bundle-disk-images/ cleanup is as simple as just throwing away the image if you don't need it anymore.
  40. 1 point
    Interesting post about this on the FM Community site. This was apparently not an intentional behavior change. https://community.filemaker.com/message/671487#671487
  41. 1 point
    I'm not so worried about things like window names. The audit log approach I showed at Devcon relies on Code() calls on field names for instance and those will fail now. Many data collection routines where I use strings like Project Manager names, project names, as buckets for reporting will now fail too. Unless I take Ron's approach to use Evaluate() calls on Let() to set my variables. Played around with HexEncoode on Md5 Digests but even then only a portion of the string gets converted to a number and while it reduces to likelihood of generating the same number for similar strings it's still too close to be comfortable. Obviously with 16 my approach would be to use JSON or Arrays and not repeating vars but this not bode well for the upgrade process of many solutions.
  42. 1 point
    To clarify a couple of points: - When you're on a form view with no fields, no data is fetched. - If ONE field is present, then ALL data from THAT RECORD is fetched. I.e. ALL FIELDS from that record. The other big difference in form view is that you're only viewing ONE record. In table or list view you might be looking at many records. Check out server under the hood for more: https://youtu.be/VCrNP4VZiM4
  43. 1 point
    Use Set Field[] if within a loop. Step through debugger to watch how this all works when you run it. You use Replace Field Contents[] when you want it to automatically run through all records. Why did I provide you with both? To confuse you, ROFLMAO! No, I provided all methods as a way for you to learn and choose the best for your situation. For instance, if this is an on-going need while Users are in the system, you would want to error trap using the looping method in case a User has one of those records locked and it didn't set. Using the loop also allows you to do other things at the same time to those records if you wish. The reason Replace Field Contents[] worked is because it did it all records and then moved to the next and again did it to all records - MAJOR overkill BIGLY. Use debugger and watch it working. So use either a loop OR Replace Field Contents. Replace Field Contents[] also throws an error but does so only at the end so you don't know WHICH record failed so it is never good to use RFC when Users are in the system.
  44. 1 point
    Hi Charity, I think I understand your question. FileMaker uses lazy loading ... it will not fetch records until it has a reason (fields or references are displayed which require records). Using a blank form view is very advantageous because a blank form view allows scripted actions on a table without first fetching a set of unasked for records. If during development you then switch to table view AND in table view you have fields selected for display then records are fetched at that switch. The same holds true if there is a tab control on a form and the default front tab lacks fields - no records are fetched but when you switch to a tab with fields, records are fetched. We provide blank layouts of most tables, sometimes place summaries and unstored calculations on second tab panel on the form or only specify fields in table view. Scripts run faster (be sure the default remains form view) but when a Developer wants to see the data from that context, they can switch to table view. FileMaker's lazy loading is a really good thing and they have improved it quite a bit since version 12. As for knowing when records are fetched, it requires expensive software from what I understand, which tracks packets. But if you understand the theory, you'll be good to go. If I misunderstood your questions, please explain a bit more. :-) Actually, I worry about it a lot and we do have control over it. When displaying any layout, it is important to know how many records (and from which relationships) will be pre-fetched since that determines speed of load, record scrolling speed, and redraw times which is particularly critical for iOS but in general still very important.
  45. 1 point
    I don't see an opinion in Josh's reply. so mine doesn't differ From the little I know from your description of your setup, I would think that the 2nd paragraph may apply.
  46. 1 point
    Looking for instructions for Windows? Click here! Let’s Encrypt is a non-profit certificate authority with the mission of spreading the SSL love across the internet. Though they’re not officially supported, we can use Let’s Encrypt to get free SSL certificates to use with FileMaker Server. We will use a Bash script and a LaunchDaemon to retrieve and automatically renew SSL certificates through Let’s Encrypt to make sure our connections to FileMaker Server are secure. With this, there’s no reason anyone should have an invalid SSL certificate on their FileMaker Server deployment! Requirements: FileMaker Server deployed on a Mac server – Tested with OSX 10.11 but may work with other versions. The “FileMaker Database Server Website” page must be reachable through the public internet using a web browser at the address you wish to get an SSL certificate for, such as http://myserver.mycompany.com. This means opening or forwarding port 80 in your router, firewall, or security groups. We use the Let’s Encrypt HTTP verification challenge, so we must make sure that Let’s Encrypt is able to reach our FileMaker server through HTTP. Warning: FileMaker does not list Let’s Encrypt as a supported SSL vendor and usually alerts the community that non-supported SSL vendors’ certificates won’t be able to be validated by FileMaker Pro and Go. I believe we’ve solved this issue with this solution. We’ve had no problems with validating these SSL certificates with FileMaker Pro 13-16 but of course can’t make any guarantees. FileMaker Go 15/16 also seem to validate everything correctly, though FileMaker Go 14 can’t connect. Please post in the comments section below if you have any issues using these SSL certificates. This is an experimental script and procedure. Please proceed with the use of this Bash script and Let’s Encrypt SSL certificates at your own risk. Here’s a summary of what we’re going to need to do: Install Homebrew Install Certbot Edit the GetSSL.sh file Run the Bash script Change the FileMaker Server SSL Connections settings Set up a schedule to renew the SSL certificate 1. Download the GetSSL.sh Bash script First, you’ll need a copy of the GetSSL Bash script. Download the file using the link below and save it on your server where you’ll want to get the SSL certificate. Warning: This is an experimental script and procedure, and SSL certificates from Let’s Encrypt are not officially supported by FileMaker, Inc. Please download and use this script with the understanding that it comes with no guarantees or warranties, and that you are doing so at your own risk. Blue Feather, Let’s Encrypt, nor anyone else are responsible for what happens to your server or systems when using this script. Download the GetSSL Bash script 2. Install Homebrew Homebrew is a package manager for Mac. It’s used to install tools and applications for your system. You can read more about Homebrew at the Homebrew website. We’re going to follow the instrucitions on there to install Homebrew on our Mac server. Run the following command in Terminal: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 3. Edit the GetSSL.sh file The script file needs to be edited so that it know the address you wish to get an SSL certificate for. Open the script in a text editor like TextEdit, TextWrangler, Sublime Text, or through Terminal using an editor like Vim. Change the address, email address, and (if necessary) the FileMaker Server install path variables to reflect your server’s information and your contact information. Let’s Encrypt will use this contact information to reach out to you if there is a problem with the SSL certificate that they have issued to you. 4. Run the Bash Script WARNING: Running this Bash script will safely restart your FileMaker Server service, abruptly disconnecting any active users. Make sure that nobody is connected to your server before you run this script. With Certbot installed, we’re now ready to run the Bash script. Make sure nobody is connected or using your FileMaker server and then run the GetSSL.sh Bash script by navigating to the directory you have it copied to in your Terminal window and entering: sudo ./GetSSL.sh A bunch of text will scroll by in the Terminal window as the script requests, fetches, and installs your SSL certificate. Your FileMaker Server service will then be stopped and started again automatically. Your SSL certificate should now be installed! Go to your FileMaker Server admin console to make sure you’re seeing the new SSL certificate. You may need to close and re-open your browser if you had the page open already. 5. Change the FileMaker Server SSL Connections settings The SSL certificate is installed, but we want to force FileMaker Pro and Go clients to connect securely to our server. Log in to your newly secured FileMaker Server admin console. Select the Database Server options from the list on the left and then the Security tab at the top of the page. Check the “Use SSL for database connections” option (as well as “Use SSL for progressive downloading” if you would like) to force FileMaker Pro and Go clients to use a secure connection when connecting to this server. Save your changes and then restart your whole FileMaker Server machine or just the FileMaker Server background service. Your FileMaker Pro clients should now show the green lock icon when logging in to this server, indicating that the connection is secure. 8. Set up a schedule to renew the SSL certificate SSL Certificates from Let’s Encrypt are only valid for 90 days and must be renewed before that time. Let’s Encrypt does this purposefully to encourage automation and increase security. In that spirit, we should set up an automatic renewal for our SSL certificates so that we don’t need to manually re-run this every couple of months. This process is similar to setting up a scheduled script in FileMaker Server. Move the GetSSL.sh file to a relatively permanent location on your server. An example place for this might be /usr/local/bin/. You’ll need to create a LaunchDaemon schedule to run the script at the dates and times you want to do it. A LaunchDaemon will run your scheduled program or task at the dates and times, or at the interval, that you specify. These certificates are good for 90 days at a time, and the Certbot tool we’re using will only renew them once they’re at least 30 days out from renewal. You will want to create a .plist file to schedule this in a way which makes the most sense for you. You can have it run once per week, for example, and it will renew your certificate when it becomes eligible for renewal (It will still restart your FM Server at your scheduled time, even if there isn’t a new certificate – I’d like to update this in the future to only restart if there’s a new certificate.). You can use the example .plist file available at the download link below. You can download and edit this example file to run your GetSSL.sh script at the location you stored it at and on the days you want. This example one is scheduled to run once per week, on Saturdays at 6:21 pm. You can read more about writing your own LaunchDaemons from the Apple Developer site. Download example .plist As an alternative, there’s a great app called Lingon X which give you a really nice GUI for creating, editing, and installing LaunchDaemons. A demo is available, and a single-user license is $9.99, which may be worthwhile as it makes creating and scheduling LaunchDaemons very easy. Once you’ve finished setting your schedule, place your .plist file in /Library/LaunchDaemons/. With your LaunchDaemon installed you can tell your server to start the schedule by ( substituting your .plist file name and then ) running : sudo launchctl load /Library/LaunchDaeomns/my-script.plist Done! That’s all that you need to do! Your script should run automatically at your scheduled time to renew your SSL certificate with Let’s Encrypt. Do a test to make sure that it’s all working properly, that it gets a new certificate for you, and that your FileMaker Server service restarts after it has retrieved the certificate. If there is an issue, you may want to run the script manually in PowerShell or debug with the PowerShell ISE to locate any issues. Keep in mind that your FileMaker Server service will be restarted after getting the new SSL certificate, so be sure to schedule it for a time when people will not be active in your system. This is an early version of this script and there is quite surely room for improvement. Please let me know if you have any suggestions or run into any issues using this scripting. Let’s make the FileMaker community a secure one! View the full article
  47. 1 point
    FileMaker's 'Open' command will work with Excel and text files -- converting them to FileMaker files in the process -- but not PDF. I believe you can fill in PDF forms using Scribe: 360works.com/filemaker-pdf-plugin/
  48. 1 point
    Hello, I think you just need to use the Get (TemporaryPath) function, see the post at ... This gives you an example of a script that sends a PDF and the resulting PDF does not clutter the iOS, since it is saved in the TemporaryPath location, which is purged by FileMaker Go regularly.
  49. 1 point
    You need a path, and I don't see why you're changing layouts. In fact, that might change your record. User is on Contact form. Clicks "Mail PDF of Record" 1. set var $filename; patients::lastname & ".pdf" ( I might also add id) 2. set var $path ; get (temporarypath) 3. set var $fullpath; $path & $filename 4. Save as PDF; create email, current record only $fullpath
  50. 1 point
    Robot "machine" is also misleading, in that it's perfectly fine to have the robot user be another account on the same machine as the server - we've been doing this with great results for years on our OS X servers. We set up the robot user to have very limited permissions, so it can't do any harm to the administrator account that is in control. YMMV of course, but it's a technique that's worth a consideration if you only have one machine.
This leaderboard is set to Los Angeles/GMT-08:00
×

Important Information

By using this site, you agree to our Terms of Use.