Skip to content

Code style guide

Mat. B edited this page Apr 26, 2020 · 6 revisions

These are the code style guidelines that should be followed when contributing to fluxion.

Indentation

Due to the fact the tab length may vary between systems and users, use two spaces instead of real tabs.

  • No hard tabs (\t)
  • Not four spaces
  • Not however many spaces you feel like
  • Two spaces ( )

Line Length

Be reasonable. Keeping within 80 characters is recommended, 120 is the maximum.

Functions

  • Use existing functions whenever possible to avoid pollution.
  • Identify functions using snake-case.
  • Prefix identifiers with the lowercased script name defining them.

For example, "fluxion_set_language"

This function is prefixed with "fluxion" to signify it belongs to the fluxion script. We use camel-case because identifiers look more like regular commands.

Variables

  • Limit the scope of variables to local if within a function.
  • Use existing variables whenever possible to avoid pollution.
  • Identify variables using camel-case.
  • Prefix identifiers with the capitalized script name defining them.

For example, the global "CaptivePortalHashPath"

This global is prefixed with "CaptivePortal" to signify it belongs to the captive portal attack script. Using camel-case makes it clear it's not a subroutine, which use snake-case.

Constants

  • Limit the scope of constants to local if within a function.
  • Use existing constants whenever possible to avoid pollution.
  • Identify constants using camel-case.
  • Prefix identifiers with the uppercased script name defining them.

For example, "FLUXIONVersion"

This global is prefixed with "FLUXION" to signify it belongs to the fluxion script. This makes it clear a constant was defined because it's uppercase-prefixed similar to old C constants.

Built-in Globals

Use built-in globals when possible to avoid having to create sub-shells and save resources.

Bad

$(pwd)	
$(whoami)

Good

${USER}
${PWD}

$USER
$PWD

Flow Logic

Place ; do ; then on the same line as while, for, and if.

Bad

while true
do ...
...
done

Good

while true; do
...
done

Functions

Use POSIX syntax:

foo() {
  print 'bar'
}

NOTE: There are some exceptions but in general use POSIX standards.

Misc

Do NOT use backticks (`command`) to execute something in a subshell.

Bad:

now=`date`

Good:

now=$(date)