sccp_manager icon indicating copy to clipboard operation
sccp_manager copied to clipboard

HTTP Country Locale Phone Provisioning Issue

Open mbielech5 opened this issue 2 years ago • 1 comments

Hello All:

I am trying to setup HTTP provisioning instead of TFTP due to decreasing the Cisco phone's boot-up time. I am not sure whether to post this issue here at sccp_manager or under provision_sccp, but the two are closely connected to each other.

To start off, I have installed chan_sccp, sccp_manager, and provision_sccp in that order on a FreePBX 16 system with Asterisk 16. The Default Device Language has been set to English_United_States and the Network Country is United_States.

The phones can get most of the files (firmware, config, ringtones, wallpapers, etc.) via HTTP requests, but are unable to pull down the country-specific files, specifically the /United_States/g3-tones.xml file. Between the index.php file and the index.cnf file located in the /tftpboot folder, the Apache webserver is providing a link to the phone to g3-tones.xml at /tftpboot/locales/languages/United_States/g3-tones.xml but this should be at /tftpboot/locales/countries/United_States/g3-tones.xml

Here's where it becomes more difficult: sccp_manager is looking for the language and country files to be located inside the 'locales' folder of /tftpboot to generate the device configuration files with, while provision_sccp is using a 'language' file (and no 'country' file) directly on the root of the /tftpboot folder (not nested within the 'locales' folder).

No matter what I change in the index.cnf file, I cannot modify or reroute the countries request (g3-tones.xml) from the phone to the 'countries' folder located in the 'locales' folder. And yet, with debug set to on, the 'countries' and 'languages' values are at the correct location of /tftpboot/locales/countries and /tftpboot/locales/languages respectively.

I also noticed when setting the default_language in index.cnf, the value is /tftpboot/locales/English_United_States but should be /tftpboot/locales/languages/English_United_States. Adding a languages/ to the beginning when setting this value seems to correct this.

On the other hand, the TFTP re-writes/map file works as expected and I can always provision the files via TFTP; though much slower since the phones try to connect via HTTP first, then TFTP second.

So far, the current workaround I came up with is to temporarily disable the tftpboot.conf Apache webserver, forcing the phones to update the initial firmware and config file over TFTP initially, and then re-enable the tftpboot.conf Apache webserver. It appears that the phones only request the locale information once a firmware has been changed or updated, and I am sure the phones will operate just fine without the locale information downloaded; but it would be nice to have the best of both worlds.

I do realize that there is an open request to port the index.php file into an Apache mod_rewrite webserver config file, but is there anyone able to take a look at this issue to get it work with the current index.php/index.cnf method for now to work with both sccp_manager and provision_sccp together?

Below are some config files and debug output if it helps anyone with the issue:

tftpboot.conf

Listen 6970
<VirtualHost *:6970>
    DocumentRoot "/tftpboot"
    ErrorLog /var/log/httpd/tftp.error.log
    CustomLog /var/log/httpd/tftp.access.log combined

    <Directory /tftpboot>
      Options FollowSymlinks
      AllowOverride none
      Require all granted
      RewriteEngine on
      RewriteBase "/"
      RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-f
      RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-d
      RewriteRule "(.*)" "index.php?id=$1" [PT,QSA]
    </Directory>

    <Directory />
        Options FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>

    <Location />
      Require all granted
    </Location>

    Alias / "/tftpboot/"
</VirtualHost>

index.cnf

[main]
tftproot = /tftpboot
firmware = firmware
settings = settings
locales = locales
languages = languages
templates = templates
dialplan = dialplan
softkey = softkey
ringtones = ringtones
wallpapers = wallpapers
countries = countries
debug = 1
log = /tftpboot/provision.log
default_language = languages/English_United_States

index.php

<?php
//
// Written by Alex / github.com/PhantomVI
//

$base_path = realpath($_SERVER['DOCUMENT_ROOT']);
$base_config = Array(
    'debug' => 1,
    'tftproot' => $base_path,
    'default_language' => 'English_United_States',
    'firmware' => 'firmware', 'settings' => 'settings', 'wallpapers' => 'wallpapers', 'ringtones' => 'ringtones',
    'locales' => 'locales', 'countries' => 'countries', 'languages' => 'languages'
);
$base_tree = Array('settings' => 'tftproot', 'wallpapers' => 'tftproot', 'ringtones'=>'tftproot',
                   'locales' => 'tftproot',  'firmware' => 'tftproot', 'languages' => 'locales', 
                   'countries' => 'locales', 'default_language' => 'locales');

# Merge config
$ini_array = parse_ini_file('index.cnf');
if (!empty($ini_array)) {
    $config = array_merge($base_config, $ini_array);
}

foreach ($base_tree as $key => $value) {
     if (!empty($config[$key])) {
        if (substr($config[$key],0,1) != "/") {
             $config[$key] = $config[$value].'/'.$config[$key];
         }
     }
}
 
#$config['tftproot'] = (!empty($config['tftproot'])) ? $config['tftproot'] : '/tftpboot';

# Fixup debug
$print_debug = (!empty($config['debug'])) ? $config['debug'] : 'off';
$print_debug = ($print_debug == 1) ? 'on' : $print_debug;

# Parse request
$request = $_REQUEST;
$req_file = !empty($request['id']) ? $request['id'] : '';

# directory content extensions map
$fw_suffix = array('.bin', '.loads', '.sbn', '.sb2', '.sbin', '.zz', '.zup', '.loads');

//$settings_suffix = array('cnf.xml');

$ringtones_list = array('distinctive.xml', 'ringlist.xml','distinctiveringlist.xml');
$ringtones_suffix = array('.raw', '.pcm', '.rwb');

$locale_list = array('-dictionary.', 'dictionary-ext.', '-dictionary.utf-8.', '-kate.xml', '-font.xml', '-font.dat','-tones.xml',
                     'be-sccp.jar', 'tc-sccp.jar', 'td-sccp.jar', 'ipc-sccp.jar', 'mk-sccp.jar', '_locale.loads', 'i-button-help.xml',
                     'tc-sip.jar', 'td-sipp.jar');

# Show debug output
if ($print_debug == 'on') {
    print_r("<br> Config:<pre>");
    print_r($config);
    print("</pre>");
    print_r("<br> Request:<br><pre>");
    print_r($request);
    print("</pre>");
}

# Start parsing the request
$req_file_full_path = '' ;

if (!empty($req_file)) {
    $signed = FALSE;
    $req_data_ar = explode('/', $req_file);
    $req_data_len = count($req_data_ar) - 1;

    $orig_req_file_name = end($req_data_ar);
    $req_file_name = $orig_req_file_name;
    
    if (strpos('.sgn;', strtolower($orig_req_file_name).';') !== FALSE) {		// handle signed files
        $signed = TRUE;
        $req_file_name = basename($orig_req_file_name, '.sgn');				// strip signed part
    }

        
    if (file_exists($config['tftproot'].'/'.$req_file_name))				// prevent "/../...//" browsing - (eliminate back door)
    {
        $req_file_full_path = $config['tftproot'].'/'.$req_file_name;
    } 
    else 
    { 
        $tmp_file = explode('.', $req_file_name);
        
        if (strpos_array($req_file_name, $fw_suffix,'any') !== FALSE) {			// Firmware file was requested
            $firmware_list = find_all_files($config['firmware']);
            $pos2 = strpos_array($firmware_list, $req_file_name, 'any'); 		// case unsensitive
            if ($pos2 !== FALSE) { 							// Request Firmware 
                $req_file_full_path = $firmware_list[$pos2];
            }
            if ($print_debug == 'on'){ print_r('<br>Requested Firmware: '. $req_file_full_path. '<br>');}
        }
        else 
        {
            $tmp_file = '';

            //if (strpos_array($req_file_name, $settings_suffix, 'any') !==  FALSE) { 	// Request Settings
            if (strpos(strtolower($req_file_name), '.cnf.xml') !==  FALSE) {		// Request Settings
                $tmp_file = $config['settings'].'/'.$req_file_name;
            }
            else if (strpos(strtolower($req_file), 'desktops/') !== FALSE) { 		// Request Wallpapers
                $tmp_file = $config['wallpapers'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
            }
            else if (strpos_array($ringtones_list, $req_file_name, 'any') !== FALSE) {	// Request RingTones
                $tmp_file = $config['ringtones'].'/'.$req_file_name;
                if (!file_exists($tmp_file)) {
                    $tmp_file = $config['ringtones'].'/ringlist.xml';
                }
            } 
            else if(strpos_array($req_file_name, $ringtones_suffix,'any') !== FALSE) {			// Firmware file was requested
                $tmp_file = $config['ringtones'].'/'.$req_file_name;
            }
            else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { 		// Request Languages
                if (!empty($req_data_ar[$req_data_len-1])) {
                    $tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
                } else {
                    $tmp_file = $config['default_language'].'/'. $req_file_name;
                }
            }
            
/*
            else if (strpos(strtolower($req_file), '-tones.xml') !== FALSE) { 		// Request Countries
                $tmp_file = $config['countries'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
            }
 
            else if (strpos(strtolower($req_file), '-dictionary.') !== FALSE) { 		// Request Countries
                $tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
            }

            else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { 		// Request Languages
                $tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
            }

            else if (strpos(strtolower($req_file), '-dictionary.jar') !== FALSE) { 	// Request Countries
                $tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
            }
*/
            if ($print_debug == 'on'){ print_r('<br>File : '. $orig_req_file_name. ' not found.<br>');}
            if (empty($tmp_file)) { 
                if (!empty($config['log'])) { to_log(array('GET ('.$req_file.'):'.$orig_req_file_name, 'no match found'),'E',$config['log']); }
                header("HTTP/1.0 404 Not Found");
                die('ERROR: no match found.');
            }
            $req_file_full_path = $tmp_file;
        }
    }
    if (!empty($config['log'])) { to_log(array('GET ('.$req_file.') :'.$orig_req_file_name, 'Remap :'.$req_file_full_path),'i',$config['log']); }
    
    if (!empty($req_file_full_path)) { 
        if ($signed) {
            $req_file_full_path .= '.sgn';
        }
        if (!file_exists($req_file_full_path)) { 
            header("HTTP/1.0 404 Not Found");
            die('Could not find:'. $req_file_full_path);
        }
        if ($print_debug == 'on'){ print_r('<br>Returning: '. $req_file_full_path. '<br>');}
        file_force_download($req_file_full_path);
    } 
} 

/*
 * Helper functiosn 
 */
function file_force_download($file) {
  if (file_exists($file)) {

    if (ob_get_level()) {
      ob_end_clean();
    }

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));

    if ($fd = fopen($file, 'rb')) {
      while (!feof($fd)) {
        print fread($fd, 1024);
      }
      fclose($fd);
    }
    exit;
  }
}

/*
 *  Founds any string from array in array 
 */
function strpos_array($haystack, $needles, $mode='any') {
    if (is_array($needles)) {
        foreach ($needles as $str) {
            $pos = strpos_array($haystack, $str, $mode);
            if ($pos !== FALSE) {
                return $pos;
            }
        }
    } else {
        if (is_array($haystack)) {
            foreach ($haystack as $key => $subtr) {
                $pos = strpos_array($subtr, $needles, $mode);
                if ($pos !== FALSE) {
                    return $key;
                }
            }
            return FALSE;
        } else {
            if ($mode == 'any') {
                return strpos(strtolower($haystack), strtolower($needles));
            } else {
                if ($mode == 'full') {
                    if ($haystack == $needles) {
                        return 0;
                    } else {
                        return FALSE;
                    }
                } else {
                    return strpos($haystack, $needles);
                }
                    
            }
        }
    }
    return FALSE;
}

function to_log($text, $level='i', $file) {
    switch (strtolower($level)) {
        case 'e':
        case 'error':
            $level='ERROR';
            break;
        case 'i':
        case 'info':
            $level='INFO';
            break;
        case 'd':
        case 'debug':
            $level='DEBUG';
            break;
        default:
            $level='INFO';
    }
    if (is_array($text)) {
        $to_log = '';
        foreach ($text as $value) {
           $to_log .= $value."\t";
        }
    } else {
        $to_log .= $text;
    }
    $_txt = date('d.m.Y h:i:s')."\t[".$level."]\t ".$to_log."\n"; 
    if (empty($file)) {
        error_log($_txt, 0);
    } else {
        error_log($_txt, 3, $file);    
    }
}

function find_all_files($dir, $file_mask=null, $mode='full'){

    $result = NULL;
    if (empty($dir) || (!file_exists($dir))) {
        return $result;
    }

    $root = scandir($dir);
    foreach($root as $value) {
        if($value === '.' || $value === '..') {continue;}
        if(is_file("$dir/$value")) {
            $filter = FALSE;
            if (!empty($file_mask)) {
                if (is_array($file_mask)) {
                    foreach ($file_mask as $k){
                        if (strpos(strtolower($value), strtolower($k)) !== FALSE) {$filter = true;}
                    }
                } else {
                    if (strpos(strtolower($value), strtolower($file_mask)) !== FALSE) {$filter = true;}
                }
              } else {$filter = true;}
            if ($filter) {
                if ($mode=='fileonly'){
                    $result[]="$value";
                } else {
                    $result[]="$dir/$value";
                }
            } else {$result[]=null;}
            continue;
        }
        $sub_fiend = find_all_files("$dir/$value", $file_mask, $mode);
        if (!empty($sub_fiend)) {
            foreach($sub_fiend as $sub_value) {
                if (!empty($sub_value)) {
                    $result[]=$sub_value;
                }
            }
        }
    }
    return $result;
} 

/var/log/httpd/tftp.access.log

10.98.1.5 - - [28/Mar/2022:11:30:19 -0400] "GET /term61.default.loads HTTP/1.1" 200 648 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:20 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:26 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:29 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:40 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:42 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:26 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:54 -0400] "GET /SCCP41.9-4-2SR3-1S.loads HTTP/1.1" 200 652 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:57 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:04 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:08 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:20 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:25 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:51 -0400] "GET /English_United_States/mk-sccp.jar HTTP/1.1" 200 58726 "-" "-"
-->10.98.1.5 - - [28/Mar/2022:11:34:53 -0400] "GET /United_States/g3-tones.xml HTTP/1.1" 404 729 "-" "-"<--

/tftpboot/provision.log

28.03.2022 03:25:03	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:25:03	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:25:03	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:25:03	[INFO]	 GET (ToveLow-Habits.raw) :ToveLow-Habits.raw	Remap :/tftpboot/ringtones/ToveLow-Habits.raw	
28.03.2022 03:25:04	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:27:14	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:27:15	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:27:15	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:27:15	[INFO]	 GET (ToveLow-Habits.raw) :ToveLow-Habits.raw	Remap :/tftpboot/ringtones/ToveLow-Habits.raw	
28.03.2022 03:27:16	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:28:26	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:26	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:26	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:28:26	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:27	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:27	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:28:27	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:27	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:28:27	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:28:28	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:28:29	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:28:32	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:30:19	[INFO]	 GET (term61.default.loads) :term61.default.loads	Remap :/tftpboot/firmware/7941/term61.default.loads	
28.03.2022 03:30:20	[INFO]	 GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn	
28.03.2022 03:30:26	[INFO]	 GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn	
28.03.2022 03:30:29	[INFO]	 GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn	
28.03.2022 03:30:40	[INFO]	 GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn	
28.03.2022 03:30:42	[INFO]	 GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn	
28.03.2022 03:32:25	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:32:25	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:32:25	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:32:26	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:32:54	[INFO]	 GET (SCCP41.9-4-2SR3-1S.loads) :SCCP41.9-4-2SR3-1S.loads	Remap :/tftpboot/firmware/7941/SCCP41.9-4-2SR3-1S.loads	
28.03.2022 03:32:57	[INFO]	 GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn	
28.03.2022 03:33:04	[INFO]	 GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn	
28.03.2022 03:33:08	[INFO]	 GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn	
28.03.2022 03:33:20	[INFO]	 GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn	
28.03.2022 03:33:25	[INFO]	 GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn	Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn	
28.03.2022 03:34:43	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:34:43	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:34:43	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:34:43	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:34:51	[INFO]	 GET (English_United_States/mk-sccp.jar) :mk-sccp.jar	Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar	
28.03.2022 03:34:53	[INFO]	 GET (United_States/g3-tones.xml) :g3-tones.xml	Remap :/tftpboot/locales/languages/United_States/g3-tones.xml	
28.03.2022 03:36:14	[INFO]	 GET (English_United_States/mk-sccp.jar) :mk-sccp.jar	Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar	
28.03.2022 03:36:31	[INFO]	 GET (United_States/g3-tones.xml) :g3-tones.xml	Remap :/tftpboot/locales/languages/United_States/g3-tones.xml	
28.03.2022 03:36:31	[ERROR]	 GET (favicon.ico):favicon.ico	no match found	
28.03.2022 03:36:35	[ERROR]	 GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:36:35	[ERROR]	 GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv	no match found	
28.03.2022 03:36:35	[ERROR]	 GET (ITLFile.tlv):ITLFile.tlv	no match found	
28.03.2022 03:36:35	[INFO]	 GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml	Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml	
28.03.2022 03:36:40	[INFO]	 GET (United_States/g3-tones.xml) :g3-tones.xml	Remap :/tftpboot/locales/languages/United_States/g3-tones.xml	
28.03.2022 04:37:23	[INFO]	 GET (United_States/g3-tones.xml) :g3-tones.xml	Remap :/tftpboot/locales/languages/United_States/g3-tones.xml

/var/log/messages

Mar 28 11:38:42 freepbx in.tftpd[2080]: RRQ from 10.98.1.5 filename term61.default.loads remapped to firmware/7941/term61.default.loads
Mar 28 11:38:42 freepbx in.tftpd[2080]: Client 10.98.1.5 finished term61.default.loads
Mar 28 11:38:44 freepbx in.tftpd[2081]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:47 freepbx in.tftpd[2081]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:52 freepbx in.tftpd[2082]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:38:53 freepbx in.tftpd[2082]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:38:56 freepbx in.tftpd[2083]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:39:02 freepbx in.tftpd[2083]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:39:10 freepbx in.tftpd[2119]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:39:11 freepbx in.tftpd[2119]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:39:14 freepbx in.tftpd[2120]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:39:18 freepbx in.tftpd[2120]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:41:05 freepbx in.tftpd[2244]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:05 freepbx in.tftpd[2244]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2247]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:41:06 freepbx in.tftpd[2247]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:41:34 freepbx in.tftpd[2254]: RRQ from 10.98.1.5 filename SCCP41.9-4-2SR3-1S.loads remapped to firmware/7941/SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:34 freepbx in.tftpd[2254]: Client 10.98.1.5 finished SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:37 freepbx in.tftpd[2255]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:40 freepbx in.tftpd[2255]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:47 freepbx in.tftpd[2257]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:41:48 freepbx in.tftpd[2257]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:41:52 freepbx in.tftpd[2258]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:41:58 freepbx in.tftpd[2258]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:42:09 freepbx in.tftpd[2294]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:42:10 freepbx in.tftpd[2294]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:42:14 freepbx in.tftpd[2295]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:42:18 freepbx in.tftpd[2295]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:43:32 freepbx in.tftpd[2331]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2331]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:43:33 freepbx in.tftpd[2334]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:43:33 freepbx in.tftpd[2334]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:43:42 freepbx in.tftpd[2341]: RRQ from 10.98.1.5 filename English_United_States/mk-sccp.jar remapped to locales/languages/English_United_States/mk-sccp.jar
Mar 28 11:43:43 freepbx in.tftpd[2341]: Client 10.98.1.5 finished English_United_States/mk-sccp.jar
Mar 28 11:43:45 freepbx in.tftpd[2342]: RRQ from 10.98.1.5 filename United_States/g3-tones.xml remapped to locales/countries/United_States/g3-tones.xml
Mar 28 11:43:45 freepbx in.tftpd[2342]: Client 10.98.1.5 finished United_States/g3-tones.xml

Thank you everyone :)

mbielech5 avatar Mar 28 '22 17:03 mbielech5

Also, here is my server info screen:

image

mbielech5 avatar Mar 28 '22 18:03 mbielech5