Ecco una definizione di Curlftpfs che trovate nella sua descrizione tecnica in lingua italiana (molto dettagliata), che ne descrive utilità ed importanza:
"Curlftpfs è un programma gratuito per Linux, che mediante il protocollo FTP consente di utilizzare una cartella presente in un server remoto come un prolungamento del proprio computer, per esempio una parte di un sito web che viene così costantemente aggiornato di foto e video realizzati da una telecamera. Scambiandosi i dati tra dispositivo e server remoto è come se la propria macchina fosse più potente, oppure come se il proprio smartphone basato su Linux avesse un ulteriore disco dati, oppure come se una scheda elettronica della famiglia Raspberry Pi disponesse di una espansione che la potenzia. Se una parte di un lavoro (analisi di foto, rielaborazione di video per ottimizzarli, pubblicazione online automatica, ecc. ecc.) viene svolta in un server remoto ecco che si alleggerisce il proprio computer (anche vecchio), il proprio smartphone, il proprio tablet oppure la propria scheda elettronica dal consumo delle proprie risorse. Un tecnico ingegnoso può teoricamente utilizzare una cartella dentro un sito web, basato su un servizio che garantisce spazio illimitato e banda illimitata, per avere un deposito di file ed informazioni praticamente illimitato solo se riesce a mascherare il tutto come un aggiornamento del proprio portale, altrimenti tutti i server gratuiti bloccano chi li sfrutta come depositi, ed i controlli ci sono. Se più utilizzatori di Linux condividono la stessa cartella dentro ad un server ecco che più computer, tablet, smartphone e/o schede elettroniche basati su Linux si possono scambiare file, video, informazioni senza passare dai soliti sistemi di sincronizzazione (come Dropbox oppure Mega). Si tratta di un protocollo di trasferimento dati FTP, quindi a bassa sicurezza, non utilizzate questo metodo per informazioni sensibili ed importanti."

Se l'altro articolo descrive qualche metodo su come utilizzare Curlftpfs nel proprio sistema operativo Linux, ecco che dei programmatori intraprendenti possono realizzare una finestra di un software (gui) che permetta di utilizzare al massimo questo programma gratuito, qui sotto trovate un articolo dettagliato in merito.

 

 

 

Introduzione.
CurlFtpFS è un software che permette di accedere a server FTP tramite un sistema di file virtuale. Tuttavia, non esiste una finestra GUI che faciliti l'utilizzo di questo software, il che può rendere l'interazione con i file remoti piuttosto complessa per alcuni utenti. In questo articolo, descriveremo come creare una finestra GUI per gestire Curlftpfs su Linux.

 

 

Installazione di Curlftpfs.
In primo luogo, dobbiamo installare Curlftpfs sul nostro sistema Linux. A seconda della distribuzione, l'installazione può essere eseguita tramite il comando di gestione dei pacchetti. Ad esempio, su Ubuntu o Debian, si può usare il seguente comando:
sudo apt-get install Curlftpfs
Su altre distribuzioni, come ad esempio Fedora o CentOS, il comando può essere diverso, ad esempio:
sudo dnf install Curlftpfs
Oppure:
sudo yum install Curlftpfs

 

 

Creazione della finestra GUI.
Per creare la finestra GUI, useremo il linguaggio di programmazione Python e il toolkit grafico PyQt5. Iniziamo creando un file vuoto chiamato ftp-gui.py . Inseriamo poi il seguente codice per importare le librerie necessarie:

import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QTreeView, QFileSystemModel, QAction, QMenu, QMessageBox

Creiamo quindi una classe chiamata FTPWindow che estende la classe QMainWindow. Inizializziamo la finestra e aggiungiamo un menu file e un menu context per la vista ad albero.

class FTPWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Curlftpfs GUI')
        self.resize(800, 600)
        
        # Menu bar
        menu_bar = self.menuBar()
        file_menu = menu_bar.addMenu('File')

        # Tree view
        self.tree_view = QTreeView(self)
        self.tree_view.setContextMenuPolicy(Qt.CustomContextMenu)
        self.tree_view.customContextMenuRequested.connect(self.context_menu)
        self.setCentralWidget(self.tree_view)

        # File system model
        self.file_model = QFileSystemModel()
        self.file_model.setRootPath('/')
        self.tree_view.setModel(self.file_model)

        # Actions
        self.mount_action = QAction('Mount', self)
        self.mount_action.triggered.connect(self.mount)
        file_menu.addAction(self.mount_action)

        self.unmount_action = QAction('Unmount', self)
        self.unmount_action.triggered.connect(self.unmount)
        file_menu.addAction(self.unmount_action)

    def context_menu(self, position):
        index = self.tree_view.currentIndex()
        menu = QMenu()
        menu.addAction('Mount')
        menu.addAction('Unmount')
        menu.exec_(self.tree_view.viewport().mapToGlobal(position))

    def mount(self):
        pass

    def unmount(self):
        pass

Abbiamo quindi creato una finestra con una vista albero che mostrerà i file remoti una volta montati, insieme a due azioni nel menu file: "Mount" e "Unmount". Abbiamo anche aggiunto un menu context per la vista albero, che verrà utilizzato per montare o smontare il "disco fisso remoto".

 

 

Creare la finestra di gestione.
Per creare la finestra di gestione, utilizzeremo il toolkit grafico Qt e la libreria di dialoghi QDialog. Prima di tutto, creiamo un file di interfaccia utente con Qt Designer.

1) Apriamo Qt Designer con il comando designer.

2) Creiamo una nuova finestra di dialogo.

3) Aggiungiamo un widget QTreeView ed un QPushButton .

4) Impostiamo le proprietà del widget QTreeView in modo che utilizzi il nostro modello personalizzato. Selezioniamo il widget e nelle proprietà impostiamo il modello su modelloRemoto .

5) Impostiamo la dimensione e la posizione dei widget.

6) Salviamo la finestra di dialogo come finestraGestione.ui .

Una volta creata la finestra di dialogo, possiamo procedere con la creazione della classe che la gestirà. Creiamo quindi un file chiamato finestraGestione.cpp e inseriamo il codice seguente (c++):

#include "finestraGestione.h"
#include "ui_finestraGestione.h"
#include "modelloRemoto.h"

finestraGestione::finestraGestione(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::finestraGestione)
{
    ui->setupUi(this);
    modelloRemoto *modello = new modelloRemoto(this);
    ui->treeView->setModel(modello);
}

finestraGestione::~finestraGestione()
{
    delete ui;
}

In questo codice, abbiamo incluso le intestazioni necessarie, incluso il file di intestazione della finestra di dialogo generato da Qt Designer. Nella funzione del costruttore, abbiamo creato un nuovo modello personalizzato e impostato il widget QTreeView sulla vista del modello. Nella funzione del distruttore, abbiamo eliminato l'oggetto dell'interfaccia utente. Infine, dobbiamo collegare il pulsante della finestra di dialogo a una funzione che chiama il comando CurlFtpFS per montare la cartella remota. Aggiungiamo quindi il seguente codice (c++) al costruttore della classe finestraGestione :

connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(montaCartella()));

Questo codice collega il segnale clicked del pulsante alla funzione montaCartella della classe finestraGestione . Creiamo quindi la funzione montaCartella come segue (codice c++):

void finestraGestione::montaCartella()
{
    QModelIndex index = ui->treeView->currentIndex();
    if (!index.isValid()) {
        return;
    }
    QString indirizzo = index.data().toString();
    QString comando = "curlftpfs " + indirizzo + " /mnt/remoto";
    system(comando.toUtf8().data());
}

In questa funzione, abbiamo recuperato l'indirizzo del server remoto selezionato nella vista QTreeView e abbiamo costruito il comando CurlFtpFS per montare la cartella remota. Infine, abbiamo eseguito il comando con il sistema C.

 

 

Ecco qui sotto un codice sorgente in Gambas per creare una GUI per CurlFtpFS su Linux.

' Gambas class file
Public Sub Form_Open()

  Dim cmd As String
  
  'Create the form elements
  Dim label1 As Label
  Dim label2 As Label
  Dim hostBox As TextBox
  Dim userBox As TextBox
  Dim passBox As TextBox
  Dim mountBox As TextBox
  Dim connectButton As Button
  Dim disconnectButton As Button

  'Set the form properties
  Me.Title = "CurlFtpFS GUI"
  Me.Width = 350
  Me.Height = 200

  'Create the labels
  label1 = New Label(Me)
  label1.Text = "FTP Hostname:"
  label1.Move(10, 10)

  label2 = New Label(Me)
  label2.Text = "Mount Point:"
  label2.Move(10, 50)

  'Create the text boxes
  hostBox = New TextBox(Me)
  hostBox.Move(120, 10)
  hostBox.Width = 200

  userBox = New TextBox(Me)
  userBox.Move(120, 30)
  userBox.Width = 200

  passBox = New TextBox(Me)
  passBox.Move(120, 50)
  passBox.PasswordMode = True
  passBox.Width = 200

  mountBox = New TextBox(Me)
  mountBox.Move(120, 90)
  mountBox.Width = 200

  'Create the buttons
  connectButton = New Button(Me)
  connectButton.Text = "Connect"
  connectButton.Move(50, 130)

  disconnectButton = New Button(Me)
  disconnectButton.Text = "Disconnect"
  disconnectButton.Move(180, 130)

  'Connect button event handler
  connectButton.OnClick = Sub()
    cmd = "curlftpfs " & hostBox.Text & " " & mountBox.Text & " -o user=" & userBox.Text & ",pass=" & passBox.Text
    Shell(cmd)
  End

  'Disconnect button event handler
  disconnectButton.OnClick = Sub()
    cmd = "fusermount -u " & mountBox.Text
    Shell(cmd)
  End

End

Questo codice crea una semplice interfaccia grafica con quattro campi di testo per il nome host, l'utente e la password FTP, e la directory di montaggio. Ci sono anche due pulsanti, uno per connettersi e uno per disconnettersi dal server FTP. Quando si preme il pulsante Connect, viene generato un comando shell utilizzando i dati inseriti dall'utente e il comando curlftpfs per montare la directory remota. Quando si preme il pulsante Disconnect, viene generato un altro comando shell per smontare la directory. Si noti che questo codice è solo un esempio e potrebbe non funzionare correttamente su tutti i sistemi Linux. Inoltre, è necessario avere i permessi di root per eseguire il comando curlftpfs. In conclusione, abbiamo visto come sia possibile utilizzare il linguaggio di programmazione Gambas per creare una GUI che gestisca Curlftpfs su Linux. Con la creazione di questa applicazione, è possibile semplificare l'accesso alle cartelle remote tramite protocollo FTP e FTPS, fornendo all'utente un'interfaccia grafica intuitiva e semplice da utilizzare. Gambas offre un'ampia gamma di strumenti per la creazione di applicazioni, tra cui il supporto per la programmazione orientata agli oggetti, l'utilizzo di componenti predefiniti e la capacità di creare interfacce utente personalizzate. Queste funzionalità, insieme alla flessibilità di Curlftpfs, rendono possibile la creazione di applicazioni personalizzate per gestire i server remoti su Linux. L'utilizzo di una GUI per gestire Curlftpfs può semplificare notevolmente il lavoro degli utenti che devono accedere frequentemente ai file e alle cartelle remote, rendendo il processo più veloce ed efficiente. Inoltre, grazie alla flessibilità offerta da Gambas, è possibile personalizzare l'applicazione in base alle specifiche esigenze dell'utente. In definitiva, la creazione di una GUI con Gambas per gestire Curlftpfs su Linux è un'ottima soluzione per semplificare l'accesso alle cartelle remote, rendendo il lavoro più efficiente e produttivo.

 

 

Un esempio con Qt Designer.
Ecco un esempio di come creare una GUI per Curlftpfs utilizzando Qt Designer:

1) Innanzitutto, installa Qt Designer sul tuo sistema Linux. Puoi farlo utilizzando il gestore di pacchetti del tuo sistema operativo o scaricando direttamente il pacchetto dal sito ufficiale di Qt.

2) Una volta installato, avvia Qt Designer e crea una nuova finestra principale.

3) Aggiungi una casella di testo per l'indirizzo FTP e un pulsante per montare la directory FTP.

4) Aggiungi anche un'etichetta per visualizzare lo stato del montaggio e un'altra casella di testo per inserire le credenziali di accesso FTP.

5) Utilizzando i segnaposto appropriati, imposta il layout della finestra principale in modo che i controlli siano posizionati in modo pulito e organizzato.

6) Ora, utilizzando la funzione di segnalibri di Qt Designer, crea una nuova classe di widget personalizzata per la finestra principale.

7) All'interno di questa classe personalizzata, scrivi il codice necessario per gestire il montaggio della directory FTP quando viene premuto il pulsante di montaggio. Puoi utilizzare la libreria Curlftpfs per eseguire il montaggio effettivo.

8) Aggiungi anche il codice necessario per verificare lo stato del montaggio e visualizzarlo sull'etichetta appropriata.

9) Infine, collega le funzioni del pulsante di montaggio e della casella di testo dell'indirizzo FTP ai corrispondenti metodi nella tua classe personalizzata. In questo modo, la tua GUI sarà in grado di gestire correttamente il montaggio della directory FTP.

Ecco un esempio di codice per la classe personalizzata:

#include <QWidget>
#include <QLineEdit>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include <curl/curl.h>

class MyFTPWidget : public QWidget
{
  Q_OBJECT

public:
  MyFTPWidget(QWidget *parent = nullptr)
    : QWidget(parent)
  {
    // Aggiungi i controlli alla finestra principale
    addressLineEdit = new QLineEdit(this);
    credentialsLineEdit = new QLineEdit(this);
    statusLabel = new QLabel(this);
    mountButton = new QPushButton("Monta", this);

    // Imposta il layout
    QHBoxLayout *layout = new QHBoxLayout(this);
    layout->addWidget(new QLabel("Indirizzo FTP:", this));
    layout->addWidget(addressLineEdit);
    layout->addWidget(new QLabel("Credenziali:", this));
    layout->addWidget(credentialsLineEdit);
    layout->addWidget(statusLabel);
    layout->addWidget(mountButton);

    // Connetti il pulsante di montaggio alla funzione di gestione
    connect(mountButton, &QPushButton::clicked, this, &MyFTPWidget::mountFTP);
  }

private slots:
  void mountFTP()
  {
    // Prendi l'indirizzo FTP e le credenziali dalla GUI
    QString address = addressLineEdit->text();
    QString credentials = credentialsLineEdit->text();

    // Costruisci il comando curlftpfs con i parametri appropriati
    QString command = "curlftpfs ";
    if (!credentials.isEmpty()) {
      command += "-o user=" + credentials + " ";
    }
    command += address + " /mnt/ftp";

    // Esegui il comando curlftpfs

 

 

Un esempio programmando con Glade.
Ecco un esempio di GUI per Curlftpfs utilizzando Glade. Prima di tutto, è necessario installare Glade con il seguente comando:
sudo apt-get install glade

Una volta installato, è possibile creare una nuova finestra di dialogo tramite il comando:
glade mywindow.glade

dove "mywindow.glade" è il nome del file di interfaccia utente che si vuole creare. Successivamente, è possibile aggiungere i widget desiderati, come pulsanti, etichette e campi di testo, dal pannello degli strumenti di Glade. Per aggiungere un nuovo widget, è sufficiente trascinarlo dalla barra laterale sul disegno della finestra di dialogo. Una volta completata la GUI, è possibile salvare il file XML e utilizzarlo nel proprio programma Gambas. Ecco un esempio di codice Gambas (vbnet) che legge il file XML creato con Glade e visualizza la finestra di dialogo:

Public Sub Form_Open()

    Dim MyForm As Form
    Dim MyXML As New Xml

    MyXML.Load("mywindow.glade")

    Set MyForm = MyXML.GetWidget("window1")
    MyForm.Show()

End

In questo esempio, "window1" è il nome della finestra di dialogo definita in Glade. In questo modo, è possibile creare una GUI per Curlftpfs utilizzando Glade e Gambas.

 

 

Un esempio di Gui scritta con wxFormBuilder.
Prima di tutto, assicurati di avere wxFormBuilder installato sul tuo sistema. Puoi farlo digitando il seguente comando in una finestra del terminale:
sudo apt-get install wxformbuilder

1) Apri wxFormBuilder e crea una nuova finestra. Per farlo, vai su "File" -> "Nuovo", seleziona "Frame" e scegli "Crea".

2) Aggiungi i controlli necessari alla finestra. Ad esempio, puoi aggiungere una casella di testo per inserire l'indirizzo del server FTP, una casella di testo per il nome utente, una casella di testo per la password e un pulsante per montare o smontare la directory FTP.

3) Quando hai aggiunto tutti i controlli necessari, è ora di impostare le proprietà per ciascun controllo. Ad esempio, per la casella di testo dell'indirizzo del server FTP, puoi impostare la proprietà "name" su "server_address" e la proprietà "value" su un valore predefinito come "ftp.example.com".

4) Imposta le azioni che devono essere eseguite quando l'utente fa clic sul pulsante "monta" o "smonta". Ad esempio, quando l'utente fa clic sul pulsante "monta", dovrebbe eseguire un comando curlftpfs per montare la directory FTP e visualizzare un messaggio di conferma.

5) Salva il file wxFormBuilder con estensione ".xml" e chiudi l'applicazione.

6) Utilizza il compilatore wxFormBuilder per generare il codice sorgente della GUI. Puoi farlo digitando il seguente comando in una finestra del terminale:
wxformbuilder -g cpp -o gui.cpp gui.xml
Questo comando genera il file "gui.cpp", che contiene il codice sorgente per la GUI.

7) Compila e esegui il codice sorgente della GUI. Puoi farlo digitando i seguenti comandi in una finestra del terminale:
g++ -o gui gui.cpp `wx-config --cxxflags --libs`
./gui
Questo comando compila il file "gui.cpp" e genera un file eseguibile chiamato "gui". Il comando successivo esegue il file eseguibile e mostra la GUI.

8) Testa la GUI e assicurati che funzioni correttamente. Ad esempio, puoi inserire l'indirizzo del server FTP, il nome utente e la password, quindi fare clic sul pulsante "monta" per montare la directory FTP.

Questo è solo un esempio di come creare una GUI con wxFormBuilder per gestire Curlftpfs su Linux. Con un po' di pratica e sperimentazione, puoi creare la tua GUI personalizzata per soddisfare le tue esigenze specifiche.

 

 

Conclusione.
In conclusione, abbiamo visto come Curlftpfs possa essere utilizzato su Linux per accedere alle cartelle di server remoti e siti web. In particolare, abbiamo esaminato la necessità di utilizzare una GUI per semplificare l'accesso alle cartelle tramite Curlftpfs, e abbiamo presentato vari esempi di come realizzare una GUI utilizzando diverse piattaforme di sviluppo. La creazione di una GUI per Curlftpfs può essere un'ottima soluzione per semplificare l'accesso alle cartelle di server remoti e siti web, soprattutto per gli utenti meno esperti. La creazione di una GUI può ridurre i tempi di accesso, rendere l'esperienza utente più intuitiva e migliorare la produttività complessiva. Inoltre, grazie alla grande quantità di strumenti e librerie disponibili su Linux, la creazione di una GUI per Curlftpfs può essere realizzata utilizzando diverse piattaforme di sviluppo, tra cui QT Designer, Gambas, Glade e wxFormBuilder, ognuna delle quali presenta vantaggi e svantaggi. In sintesi, creare una GUI per Curlftpfs può essere un'ottima soluzione per semplificare l'accesso alle cartelle di server remoti e siti web su Linux, e grazie alla varietà di strumenti disponibili, ogni utente può scegliere la piattaforma di sviluppo più adatta alle proprie esigenze e competenze.

Il dottor Bishop.

 

 

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.