While the main feature of the bootstrapper (dwmapi.dll or wtsapi32.dll) is to use a custom server with the game, it has other features as well.
The bootstrapper's configuration is in OpenWF/client_config.json relative to your game folder. It has the following fields:
fallback_language — The language to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.fallback_graphicsDriver — The graphics driver to use when Warframe.x64.exe was double-clicked or the argument was simply omitted.fallback_cluster — The cluster to use when Warframe.x64.exe was double-clicked or the argument was simply omitted. Can be public, test, or dev — the latter two enable some more logging.server_host — The hostname or IP address to redirect game traffic to. This should match myAddress in SpaceNinjaServer.http_port — The port to use for HTTP traffic. This should match httpPort in SpaceNinjaServer.https_port — The port to use for HTTPS traffic. This should match httpsPort in SpaceNinjaServer.autologin — Uses the provided credentials to automatically login on startup. If another instance is logged in on the same account, it will be forcefully logged out.autologin_emailautologin_password — The whirlpool hash of the password to use for autologin. You can simply enter your password and it will automatically be hashed and overwritten.high_damage_numbers_patch — If true, patches the game to display the exact number of damage that you dealt to fix -2147483648 showing up on high damage.simulacrum_blacklisted — If true, blacklisted enemies are shown in the Simulacrum. Defaults to false to match the game.simulacrum_whitelisted — If true, whitelisted enemies are shown in the Simulacrum. Defaults to true to match the game.pause_always_stops_timedisable_nrs_connection — If true, disables NRS connections, preventing the game from showing "Please ensure that your firewall permits UDP ports 4950 & 4955."ee_log_in_console — If true, writes everything that gets written to EE.log to the console as well.skip_mission_start_timer — If true, disables the 5 second wait before a mission starts.logout_on_request_failure — If false, the game will ignore HTTP request failures/timeouts instead of forcing a logout.fov_override — If not 0, overrides the game's FOV setting. You can use any value from 1 to 226.forced_profile_dir — An absolute path to a folder that will be used to read and write your game settings. Notably, this can be used to have the same settings regardless of username.auto_start_scripts — A list of scripts to automatically start, e.g. ["samples/Cycle Camera Hotkey (K).pluto"].dont_resolve_labels — If true, shows language tags instead of their associated value, e.g. /Menu/Confirm_Item_Yes instead of YES.save_all_metadata — If true, implicitly creates an empty patch on every metadata read to make it available for get_effective_metadata requests. May degrade performance.write_all_metadata_reads_to_console — If true, writes all metadata reads to the console. May degrade performance.write_all_metadata_reads_to_ee_log — If true, write all metadata reads to EE.log. May degrade performance.write_patches_metadata_reads_to_console — If true, writes patched metadata reads to the console. May degrade performance.write_patches_metadata_reads_to_ee_log — If true, write patched metadata reads to EE.log. May degrade performance.While the game is running, the you can visit http://localhost:6155/ to modify some of the above options, access additional features like teleportation, and use scripts.
The bootstrapper adds the owfServerHost command line argument, which can be used to override the server_host in the config.
While in the pre-login state, the overlay indicates the current server host, which can also be changed by typing @server_host (e.g. @localhost) in the email field with any password and attempting to log in.
When connecting to a server, the bootstrapper requests /custom/tunables.json to check the JSON object for the presence of the following fields:
prohibit_skip_mission_start_timerprohibit_fov_overrideprohibit_freecamprohibit_teleportprohibit_scriptsThe presence of a field disables the respective feature.
buildLabel to indicate the client's buildLabel.clientMod parameter indicating the Bootstrapper's name and version. If Metadata Patches are in use, metadataPatchesInUse=1 is added as well.xpBasedLevelCapDisabled to indicate that the client has been patched to accept any PlayerLevel and doesn't need XPInfo to match.USER message is adjusted to contain nonce=... in the 'realname' field.Metadata Patches are loaded from OpenWF/Metadata Patches.txt, although you can also create a OpenWF/Metadata Patches/ folder and any text file inside of that will be loaded as well.
They are generally parsed line by line, with roughly the following steps being taken for each line:
/, a new patch for the given absolute path is started. If the line ends on &, the next line that also starts with / will be added to this patch instead of creating a new patch.&, that character is removed from the line and the rest of the line is assumed to be an absolute path to be added to the current patch.>, that character is removed from the line and the rest of the line is assumed to be an absolute path for which a new patch is created.r|, a replacement is added to the current patch in the form r|A|Z which means A in the metadata will be replaced with Z.s|, a regex substitution is added to the current patch, e.g. s|(.+)=1|$1=0 would change HasCooldown=1 to be HasCooldown=0.If multiple patches affect the same absolute path, they are combined.