Firefox e Amulecmd (AmuleGUI) – Windows version
Ho un PC che fa da mulo, in cui ho installato aMule, e da remoto lo controllo con AmuleGui (da installare assieme a Amulecmd) .
Stufo del fatto che Firefox passi alla funzione amulecmd.exe i link sostituendo alcuni caratteri speciali con l’equivalente esadecimale ho creato un piccolo programma che dovrebbe risolvere il problema.
C’è ancora la necessità di creare un file .reg per modificare il comportamento di Windows:
REGEDIT4 [HKEY_CLASSES_ROOT\ed2k] @="URL: ed2k Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\ed2k\DefaultIcon] @="C:\\Programmi\\aMule\\amulegui.exe" [HKEY_CLASSES_ROOT\ed2k\shell] @="open" [HKEY_CLASSES_ROOT\ed2k\shell\open] [HKEY_CLASSES_ROOT\ed2k\shell\open\command] @="\"C:\\Programmi\\aMule\\ed2k_remote.exe\" \"%1\""
Una volta eseguito il file .reg non ci resta che copiare il file ed2k_remote.exe nella cartella di aMule (deve per forza essere in “%ProgramFiles%\aMule\” assieme al file ed2k_remote.ini).
Il file ed2k_remote.ini deve necessariamente essere in questo modo, altrimenti per il programma sarà impossibile trova l’IP del server aMule e la password di ingresso.
indirizzo_ip=192.168.1.XXX password=MiaPassword
Questo è il sorgente del programma:
/*------------------------------------------------------ | | | Il seguente software è rilasciato sotto licenza GPL | | Autore = Xavio - (xavio2000REMOVE_ME@gmail.com) | | | ------------------------------------------------------*/ #include "cstdlib" #include "iostream" #include "fstream" #include "string" using namespace std; int sostituisci(string *stringa, string trovami, string sostituiscimi); int main(int argc, char *argv[]) { if (!(argc>1)) { cout << "Errore, nessun parametro passato!\n"; system("PAUSE"); return 0; } string temp=getenv("ProgramFiles"); string sInizio=temp; temp+="\\aMule\\ed2k_remote.ini"; std::ifstream file(temp.c_str()); if (!file) { cout << "Errore, impossibile aprire il file della configurazione!\n"; system("PAUSE"); return 0; } char buf[250]; int found=0; string sInput(argv[1]); file.getline(buf,250); temp=(string)buf; found=sostituisci(&temp,"indirizzo_ip=",""); if (!found) { cout << "Errore, impossibile trovare il parametro indirizzo IP!\n"; system("PAUSE"); return 0; } //cout << sInput << endl; sInizio+="\\aMule\\amulecmd.exe /h "+temp; file.getline(buf,250); temp=(string)buf; found=sostituisci(&temp,"password=",""); if (!found) { cout << "Errore, impossibile trovare il parametro password!\n"; system("PAUSE"); return 0; } sInizio+=" /P "+temp; sostituisci(&sInput,"%5B","["); sostituisci(&sInput,"%5D","]"); sostituisci(&sInput,"%7C","|"); sostituisci(&sInput,"%7B","{"); sostituisci(&sInput,"%7D","}"); sostituisci(&sInput,"%20"," "); sostituisci(&sInput,""","'"); sostituisci(&sInput,"&","&"); sostituisci(&sInput,"(","("); sostituisci(&sInput,")",")"); sInizio+=" /c \"add "+sInput+"\""; //cout << sInizio << endl; system(sInizio.c_str()); //system("PAUSE"); return EXIT_SUCCESS; } int sostituisci(string *stringa, string trovami, string sostituiscimi) { int found,lavoro; int i=trovami.size(); lavoro=0; while ((found=stringa->find(trovami))!=string::npos) { stringa->replace(found,i,sostituiscimi); lavoro++; } return lavoro; }
La funzione
sostituisci(&sInput,"%5B","[");
(ad esempio) sostituisce nella stringa ricevuta da Firefox il codice %5B con [. Aumentando le voci sostituisci c’è la possibilità di aumentare le conversioni nel caso ce ne siano altre da aggiungere.
Ciao a tutti
P.S: Per ulteriori informazione sulla gestione dei link ed2k con aMule andate qui.
[...] Ecco, finalmente la versione per linux dello stesso programma che ho creato per Windows (leggi qui). [...]
Ciao provato il to programmino su windows xp italiano e tutto funziona perfettamente. Il prblema sorge su una versione non italiana dove la variabile “programfiles” e’ valorizzata con uno spazio, questo porta il programma a non trovare la path giusta (gestione pessima di windows). credo che il sorgente debba tenere conto di questo (forse ci vogliono le virgolette). non sono un esperto di C.
Se lo correggi me ne mandi una copia? Grazie mille
Ti dovrebbe essere arrivata una mail per risolvere temporaneamente il problema