GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
launch_avfeed(3) Arcan Lua API launch_avfeed(3)

launch_avfeed - Launch a customized frameserver

vid:newvid, aid:newaid, string:guid, int:cookie
launch_avfeed( string:argument )
launch_avfeed( string:argument, string:mode )
launch_avfeed( string:argument, string:mode, func:callback )

launch_avfeed is intended for launching authoritative frameservers for the 'decode', 'terminal' and 'avfeed' archetypes. The 'decode' archetype is used for providing streaming audio and video decoding of some input source defined by the argument string. The 'terminal' archetype is used for spawning an interactive command-line interface, and the 'avfeed' is for unspecified custom input providers, typically for binding to other media frameworks. The support for these archetypes are probed at engine startup and set in the global variable FRAMESERVER_MODES . If no mode argument is provided, it will default to 'avfeed'. The possible values for argument is dependent on the frameserver implementation, where the defaults can be probed by running the respective binaries standalone with the ARCAN_ARG =help environment set, though this can vary slightly with the underlying OS . It uses a special key1:key2=value with a tab character acting as element separator, and the tab character itself being forbidden. If avmode is not specified, it defaults to 'avfeed'. As with other frameserver- related management functions, it is advised that you provide a handler callback function directly or via the target_updatehandler call. The contents and behavior of this callback function is described in detail in launch_target . If successful, new audio and video reference identifiers are returned, along with a per-instance unique uid (base-64 encoded), intended to be used to regain tracking should a connection be lost, by accident or voluntary.

1
The reason argument comes before mode is for historical reasons as the function name previously held a different behavior and use.
2

SECURITY - alert: allowing the _terminal frameserver is currently a possible scriptable way of running arbitrary programs within the context of the terminal, partly through the possible exec= argument but also by manually inputting commands through target_input . This can be hardened in multiple ways: by intercepting target_input and only allow if it is visible (appl specific solution), by intercepting launch_avfeed and filtering argstr or by simply not allowing the terminal frameserver (disable at buildtime or specify a different set of afsrv_ binaries using the --binpath argument).

function launch_avfeed0()
      local vid, _, guid = launch_avfeed("", "terminal",
            function(source, status)
                  print("[new event]");
                  for k,v in pairs(status) do
                        print("", k, v);
                  end
                  if (status.kind == "resized") then
                        resize_image(source, status.width, status.height);
                  end
            end
      );
      show_image(vid);
      print("launched as", vid, guid);
end

launch_target(3) define_recordtarget(3) net_open(3) net_listen(3)

June 2022 targetcontrol

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.