2013-06-14 7 views
11

Ich habe einige Web-App mit Rook erstellt, die meine Netzwerk-IP (192.168.xx.xx) an Port 8000 hören. Jeder in meinem Büro kann mit ihnen nur eingeben http://192.168.xx.xx:8000/page_name im Browser. Ich muss diese Seitenverwendung überwachen und mich wundern, wie ich die Netzwerk-IP-Adresse der mit ihnen verbundenen erreichen kann.Abrufen der privaten IP-Adresse eines Benutzers Rook/Shiny-Seite

Ich habe keine Erfahrung in der Web-Entwicklung und von der bisherigen Forschung scheint es, dass mit clientseitige Code wie JavaScript ist es sehr schwierig (fast unmöglich), das zu erreichen, (korrigieren Sie mich, wenn ich falsch liege). Also, meine Frage ist: gibt es eine Möglichkeit, den Netzwerk-Client IP mit Server-Side-Code innerhalb einer Rook-Anwendung zu bekommen? (Bei Bedarf würde ich den Webserver wechseln, jede Lösung wird geschätzt).

Danke und Entschuldigung im Voraus sollte meine Frage verwirrend scheinen ... insbesondere bin ich mir nicht sicher, ob andere Tags benötigt werden.

EDIT: Ich würde auch Antworten akzeptieren, etwas anderes als Rook mit (aber immer noch in R)

EDIT 2: Ich habe nach diesem link Shiny Server gesetzt. Ich bin bei Schritt, den Server zu konfigurieren, um die access_log zu erhalten, die, entsprechend @Thell, die Informationen enthält, die ich benötige. Im shiny-server.conf Ich habe die relative Aussage hinzugefügt und ist nun:

run_as shiny; 

server { 
    listen 3838; 

    location/{ 
    site_dir /var/shiny-server/www; 
    log_dir /var/shiny-server/log; 
    directory_index on; 
    } 

} 

access_log /home/michelec/log.txt; 

die letzte Zeile glänzend sagen sollte den access_log in meine Home-Ordner zu schreiben. Nichts passiert jedoch, das Protokoll bleibt leer. nach here im Formate Abschnitt, sollte ich eines dieser Protokolle erhalten:

default ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' 
short ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms' 
tiny ':method :url :status :res[content-length] - :response-time ms' 
dev concise output colored by response status for development use 

je nachdem, ob Sie das Standardformat lassen oder Sie es ändern.

+1

Können Sie Ihren Code zur Verfügung stellen? Es gibt nicht viel anderes auf Rook als die grundlegende Dokumentation. Um Ihre Frage zu beantworten, werden Sie wahrscheinlich ein wenig experimentieren müssen, was wahrscheinlich ein reproduzierbares Beispiel erfordert. – SchaunW

+0

@SchaunW danke für die Antwort. Entschuldigung, ich habe noch keinen Code für diese Aufgabe. Ich recherchiere jeden Tag. So wie es ist, würde die Frage selbst mit nur einer (gültigen) Eingabe beantwortet werden, um mit der Codierung zu beginnen. – Michele

+2

Ich hatte heute ein Spiel damit - es schien, dass 'ip()' sollte sein, was Sie wollen, aber ich konnte keine Ausgabe davon bekommen – alexwhan

Antwort

3

Es scheint, dass Rook Remote-Hinzufügen nur zur Verfügung stellt, wenn es von rApache unterstützt wird.

wäre eine weitere Option shiny-server von den feinen Völkern @ RStudio und dann configure the access log, so dass Sie wäre in der Lage zu analysieren, dass die Verwendung der ausgewählten access log format, die Sie wählen, um Setup sein.

Ich würde in Richtung der Shiny-Lösung neigen, wie der Autor von rApache auch auf Shiny und Shiny (sei es, dass es ein offizielles Produkt von RStudio ist) scheint für Wachstum und langfristige Verfügbarkeit bereit, die wir can't really say about rApache (so gut wie es ist!).

+0

danke für deine Geduld während dieser Woche! By the way, in diesen Tagen, während ich aufleuchtet, sah ich, dass es auf 'Node.js' aufgebaut ist, was es ermöglicht, die IP sehr einfach durch das' connect'-Modul zu bekommen. Dieses Modul ist die Sache hinter "access_log", aber leider in glänzend, anders als mit Node, können Sie nicht auf die abgerufene IP in den serverseitigen Code zugreifen. Laut dieser Diskussion [https://groups.google.com/forum/#!searchin/shiny-discuss/susan/shiny-discuss/EGQhEyoEk3E/lNQ5jLbPOBsJ] arbeiten sie daran – Michele

+1

Mein Vergnügen. Interessant ... Ich wette, das könnte ziemlich leicht in die API eingefügt werden; und ich vermute, dass diese Arten von vollständigen Kontrollfunktionen für die Enterprise-Edition vorhanden sein müssen, also seien Sie geduldig; oder noch besser, hack diese glänzende Quelle! :) – Thell