HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //lib/python3.9/site-packages/ansible_collections/community/windows/plugins/modules/win_route.ps1
#!powershell

# Copyright: (c) 2016, Daniele Lazzari <[email protected]>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

#Requires -Module Ansible.ModuleUtils.Legacy

# win_route (Add or remove a network static route)

$params = Parse-Args $args -supports_check_mode $true

$check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -default $false
$dest = Get-AnsibleParam -obj $params -name "destination" -type "str" -failifempty $true
$gateway = Get-AnsibleParam -obj $params -name "gateway" -type "str"
$metric = Get-AnsibleParam -obj $params -name "metric" -type "int" -default 1
$state = Get-AnsibleParam -obj $params -name "state" -type "str" -default "present" -validateSet "present", "absent"
$result = @{
    "changed" = $false
    "output" = ""
}

Function Add-Route {
    Param (
        [Parameter(Mandatory = $true)]
        [string]$Destination,
        [Parameter(Mandatory = $true)]
        [string]$Gateway,
        [Parameter(Mandatory = $true)]
        [int]$Metric,
        [Parameter(Mandatory = $true)]
        [bool]$CheckMode
    )


    $IpAddress = $Destination.split('/')[0]

    # Check if the static route is already present
    $Route = Get-CimInstance win32_ip4PersistedrouteTable -Filter "Destination = '$($IpAddress)'"
    if (!($Route)) {
        try {
            # Find Interface Index
            $InterfaceIndex = Find-NetRoute -RemoteIPAddress $Gateway | Select-Object -First 1 -ExpandProperty InterfaceIndex

            # Add network route
            $routeParams = @{
                DestinationPrefix = $Destination
                NextHop = $Gateway
                InterfaceIndex = $InterfaceIndex
                RouteMetric = $Metric
                ErrorAction = "Stop"
                WhatIf = $CheckMode
            }
            New-NetRoute @routeParams | Out-Null
            $result.changed = $true
            $result.output = "Route added"

        }
        catch {
            $ErrorMessage = $_.Exception.Message
            Fail-Json $result $ErrorMessage
        }
    }
    else {
        $result.output = "Static route already exists"
    }

}

Function Remove-Route {
    Param (
        [Parameter(Mandatory = $true)]
        [string]$Destination,
        [bool]$CheckMode
    )
    $IpAddress = $Destination.split('/')[0]
    $Route = Get-CimInstance win32_ip4PersistedrouteTable -Filter "Destination = '$($IpAddress)'"
    if ($Route) {
        try {

            Remove-NetRoute -DestinationPrefix $Destination -Confirm:$false -ErrorAction Stop -WhatIf:$CheckMode
            $result.changed = $true
            $result.output = "Route removed"
        }
        catch {
            $ErrorMessage = $_.Exception.Message
            Fail-Json $result $ErrorMessage
        }
    }
    else {
        $result.output = "No route to remove"
    }

}

# Set gateway if null
if (!($gateway)) {
    $gateway = "0.0.0.0"
}


if ($state -eq "present") {

    Add-Route -Destination $dest -Gateway $gateway -Metric $metric -CheckMode $check_mode

}
else {

    Remove-Route -Destination $dest -CheckMode $check_mode

}

Exit-Json $result