I've been searching for some clear answers on db vulnerability, specifically related to scripting.
We have a particular solution running in FMP13, with EAR. This is a peer-shared file design, which has hundreds of installations in peer-shared environments.
User access accounts have been severely limited in released versions (no admin, no [full access]), limited menus, etc..
Users are heavily striated by account privilege set.
I've read bits here & there mentioning that initial opening scripts (onwindowopen, etc) at startup are particularly vulnerable, but haven't found anything definitive.
1. is an opening script trigger a legitimate security flaw?? We use it to determine layout paths, check/confirm licensing, etc, so if it is 'hackable', what alternate option is there?
2. I noticed that even attempting to bypass script triggers, the system requires a full access name/password.. BUT it also displays the name of the particular script (seems like a point of weakness to me)... Is there a way to prevent this?
By Scott Pon
Environment: FM13 with FM13 Server, mix of Windows 7 and 10.
Is there a way to set a script trigger on if this portal row is new? IE, a script to run if this new child/portal record is new.
We have a parent record, and portal to Children records. The children records have 2 fields: Profile Name and Process type. Our user would like to enter a new child record (profile name and process type). if the process type already exists, we will need to archive the existing record (matching the profile type). There is more bI want to start with this first.
I see script triggers to the layout "OnRecordCommit", but no similar script trigger for portals. Any ideas on how to handle this? Or am I going to have to add a button to go to another screen to accomplish this?
Thanks. I hope i gave enough info for you to help me.
I want to create a script trigger which opens a layout based on account name ,create new record and put cursor in first field of the new record
Now, I was able to direct user to specific layout and also created new record using New Record/Request function but somehow it doesn't put cursor in the first field , instead it selects whole record .
Note: I also have script triggers attached to first and second field which runs on exiting the fields. (I don't think they affect anyways , but just mentioned to give idea)
I'm not a programmer nor a technical writer and also is ESL. So my writing is tailored to me or someone like me aka noobie as F* (toward me not you). Detail and step by step and as clear as possible. Please let me know if i’d missed something or grammar correction.
System: As of 04-20-2016 (not potting around) macOS 10.11.4 (yeah I’m using macOS name form now on instead of OS X), iOS 9.3.1, Filemaker Pro Advance 14.0.5 and GO 14.0.4
Make merge variable to show the slide control panel's object name (the name of the front most slide panel). So when the file is open the merge variable will show the name of the from most slide control panel letting you know which slide you're on.
Merge Variable does not show value on open first window. Please read entirety below.
Although it's a lame hack that I prefer not to use but it does the job. I'd included these two ugly steps in the script Go To Object [ Object Name: "Panel2" ] then Go To Object [ Object Name: "Panel1" ] to have the merge variable show Panel1 name on opening of the file.
# the number symbol or the hashtag is to comment as a note to yourself and others about the script line(s) (ignored when the scrip is performed functional line). Set Variable [ $$panelName; Value:GetValue ( Get ( TriggerTargetPanel ) ; 2 ) ] #The "2" is the result value which is the name of the objectName that you gave it in the inspector panel. Number "1" will return the number of the panel. As in 1 (which is the first) of 3 panels or 2 (which is the second) of 3 panels or 3 (which is the third) of the 3 panels. Go to Object [ Object Name: "Panel2" ] Go to Object [ Object Name: "Panel1" ] #Refresh Window will work the same but I think it'll refresh the whole layout. FYI: "MVpanelName" is the object name of the merge variable "<<$$panelName>>." Refresh Object [ Object Name: "MVpanelName" ]
ENTIRE HOW TO
Create a new file. Choose File menu > New Solution… https://www.filemaker.com/help/14/fmp/en/html/create_db.8.5.html Enter Layout Mode. Choose View menu > Layout Mode or press COMMAND + L keys. https://www.filemaker.com/help/14/fmp/en/html/fmp_basics.3.7.html Insert Slide Control. Choose Insert menu > Slide Control https://www.filemaker.com/help/14/fmp/en/html/create_layout.9.42.html Name the each slide panel. Choose View menu > Inspector or press the COMMAND + I keys. Choose Position tab > Enter Name field. Press the Enter/Return key to commit the name to the object. http://help.filemaker.com/app/answers/detail/a_id/6147/~/naming-objects-in-filemaker-8.5-and-later Choose the next slide and repeat. Create a script with the above script. Choose Scripts menu > Script Workspace… Type or copy and paste the script in the code box above in the the WORKAROUND section of this post. https://www.filemaker.com/help/14/fmp/en/html/create_script.14.3.html Choose Insert menu > Merge Variable. Name it the EXACT same as the name use in Set Variable objectName ($$panelName). https://www.filemaker.com/help/14/fmp/en/html/create_layout.9.35.html#1064499 Set File Script Triggers. (not a 100% sure this is needed) Choose File menu > File Options... Choose Script Triggers tab > click checkbox OnFirstWindowOpen > click Select button > choose your script > click OK button > click OK button. Set Layout Script Triggers. (not a 100% sure this is needed) Choose Layouts menu > Layout Setup... Choose Script Triggers tab > click checkbox OnLayoutEnter > click Select button > choose your script > click OK button > click OK button. Set Object (slide control) Script Triggers. (this is a must) Right click on the Slide Control Panel object > select Set Script Triggers... Click checkbox OnPanelSwitch > click Select button > choose your script > click OK button > click OK button. Enter Browse mode. Choose View menu > Browse or press the COMMAND + B keys. SEEKING HELP
Please reply if you have a better solution to this terrible workaround.