Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
technical:api-profiles [2025/04/02 10:14] – created systemtechnical:api-profiles [2025/04/02 12:51] (current) system
Line 9: Line 9:
   * Each **Permanent User**, **Voucher** or **BYOD Device** has to belong to a **Profile** and **Realm** in order to be useful to RADIUS.   * Each **Permanent User**, **Voucher** or **BYOD Device** has to belong to a **Profile** and **Realm** in order to be useful to RADIUS.
   * Before we can bulk import Permanent Users using a CSV file, we need to ensure that all the profiles used by the users in the CSV file already exist.   * Before we can bulk import Permanent Users using a CSV file, we need to ensure that all the profiles used by the users in the CSV file already exist.
-  * In this page we will show you how to read the profile names from a text file and then add each one using an API call.+  * In this page we will show you how to read profile names from a text file and then add each one to RADIUSdesk using an API call.
   * We will use PHP but the principles can be applied using any programming language.   * We will use PHP but the principles can be applied using any programming language.
  
Line 15: Line 15:
  
 ====== Add Profiles From List ====== ====== Add Profiles From List ======
-  * We use the Authentication **Plugin** available with CakePHP v4 and CakePHP v5 as the foundation for the LDAP integration.+  * Below is the list of profiles we want to add. 
 +<file text names.txt> 
 +MzanziFibre-12/
 +MzanziFibre-25/
 +MzanziFibre-25/10 
 +MzanziFibre-50/20 
 +MzanziFibre-100/40 
 +MzanziFibre-100/20 
 +MzanziFibre-250/20 
 +MzanziFibre-250/25 
 +MzanziFibre-250/100 
 +MzanziFibre-400/40 
 +MzanziFibre-500/200 
 +MzanziFibre-1000/50 
 +MzanziFibre-1000/400 
 +</file> 
 + 
 +  * We store this file in the same directory as the script we will run to add them. 
 +<file php add_profiles.php> 
 +<?php 
 + 
 +    // Configuration 
 +    $api_url = 'http://127.0.0.1/cake4/rd_cake/profiles/simple_add.json'; 
 +    $names_file = 'names.txt'; // replace with your text file 
 +    $token = '617088c3-f908-4f1f-8091-82223c571cc67'; // replace with your token (If you want to add the profile as system wide, you will need root's token) 
 +    $cloud_id = 56; // replace with the Cloud ID that you want to work on. 
 + 
 +    // Read names from file 
 +    $names = file($names_file, FILE_IGNORE_NEW_LINES); 
 + 
 +    // Set API payload 
 +    $payload = [ 
 +     //   "for_system"            => "on", 
 +        "id"                    => "", 
 +        "name"                  => "", 
 +        "data_limit_enabled"    => "false", 
 +        "time_limit_enabled"    => "false", 
 +        "speed_limit_enabled"   => "false", 
 +        "logintime_1_span"      => "disabled", 
 +        "logintime_2_span"      => "disabled", 
 +        "logintime_3_span"      => "disabled", 
 +        "session_limit_enabled" => "false", 
 +        "adv_data_limit_enabled"=> "false", 
 +        "adv_time_limit_enabled"=> "false", 
 +        "token"                 => $token, 
 +        "sel_language"          => "4_4", 
 +        "cloud_id"              => $cloud_id 
 +    ]; 
 + 
 +    // Loop through names and call API 
 +    foreach ($names as $name) { 
 +        $payload['name'] = $name; 
 +        $json_payload = json_encode($payload); 
 +        $ch = curl_init($api_url); 
 +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 +        curl_setopt($ch, CURLOPT_POST, true); 
 +        curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload); 
 +        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
 + 
 +        $response = curl_exec($ch); 
 +        curl_close($ch); 
 +        echo "Added $name: $response\n"; 
 +    } 
 +?> 
 +</file> 
 +  There are a few items which will be unique to your specific deployment. 
 +  It is 
 +      The Token. 
 +      The Cloud ID. 
 +      * The server's FQDN / IP Address. 
 +  * The Token can be found when you edit an Admin. 
 +<panel type="info"> 
 +{{:technical:api:admin_api_key.png }} 
 +</panel> 
 +  * The Cloud ID is listed under the Cloud Applet. 
 +<panel type="info"> 
 +{{:technical:api:mzanzifibre.png }} 
 +</panel> 
 +  * Below is the result of our script: 
 +<panel type="info"> 
 +{{:technical:api:mzanzifibreprofiles.png }} 
 +</panel>
  
  
  • technical/api-profiles.1743581652.txt.gz
  • Last modified: 2025/04/02 10:14
  • by system