Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Wörsty am 10. Juni 2003, 12:51:15 Kann mir mal einer einen regulären Ausdruck basteln, der nur folgende Zeichen zulässt:
Code: a-z A-Z 0-9 . - _ Dies (http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm) und jenes (http://www.proftpd.de/?id=28&directive_name=pathAllow) hat mir nicht wirklich geholfen :? Beispiel: Okay: Bob_23.doc Nicht okay: Bob=23.doc Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Lucy am 10. Juni 2003, 15:46:15 ja ich versuch es mal ... denn regexp iss ne welt für sich ...
(vielleicht hilft es dir auch, wenn du dir die manpages von grep anguggst ...) hier meine private lösung ... Code: PathAllowFilter "^[a-zA-Z0-9äöüÄÖÜß@ùúàáèéòó\'\´\#\`\~ _.-]+$" ich erkläre mal kurz vielleicht hilf des dir und du kannst die was entsprechendes zusammenbasteln ... (in meinem filter erlaube ich alle regulär zugelassene charackters, wenn windows-user ihre ordner oder dateien benennen) ^ (Caret) paßt auf den Zeilenanfang ( also a-zA-Z0-9) [] Character klasse (ist klar) \z.b.punkt leitet escape-sequence ein, um steuerzeichen als Charakter darzustellen das heisst also z.b. Code: \. wertet den punkt als reines zeichen aus, weil der punkt ansonsten folgend interpretiert wird: ein Punkt paßt auf jeden Buchstaben außer auf das Zeilenende$ (dollar) das ende der regular expression + (plus)das dem Operator vorangehende Muster kann einmal oder öfter vorkommen also schausst du dir meinen path allow filter an, solltest du verstehen was ich quasi zulasse ... (achso, unter perl,php kommen (wohl änliche?) regexp zum tragen ... ist alles fast das gleiche und unter dem begriff "POSIX - Regular Expressions" solltest du viele erklärungen finden ...) die lösung wäre also speziell in deinem fall Code: PathAllowFilter "^[a-zA-Z0-9 \.\-\_]+$" ...ich weiss allerdings nicht genau ob minus und unterstrich als steuerzeichen gelten, wenn nicht, tut ein backslash davor nicht not. @wörsty bist du dir sicher das du dot-dateien zulassen möchtest? ... ich meine notwendig ja schon .... weil alle (windows)dateinamen nen punkt enthalten "singmireinlieddotmp3, ... aber wenn er am anfang kommt ... haben sie z.B. "die möglichkeit" eine nur ein beispiel! ".htaccess" zu erstellen .... muesstest dir also noch nen filter erstellen, der dot-dateien erlaubt, halt nur am anfang darf kein punkt kommen... wenn du magst kann ich dir mal meinen komplett filter (von Path-allow/deny bis Allow/denyfilter) hier posten der funktioniert, habsch getestet ... ausser einem klitzekleinen problemchen was ich gerade entdeckte und gleich mal schildern möchte ... da muss ich mir nun nämlich auch noch was ausdenken GG also : unter windows ist es nicht erlaubt, z.b. einen ordner zu erstellen, der ein "/" slash beinhaltet ... also hab ich den slash im filter berücksichtigt und ihn verboten. auf meinem testrechner gehe ich also mit ws_ftp 7.5 an den server ran ...alles schick alles schön, kann schalten und walten. auf einem anderen rechner geht das nun nicht mehr, dort ist lediglich WS_FTP 7.0 drauf. nu kommts... ich kann nichts mehr machen - wollte nen ordner löschen, den ich regulär und unter WS_FTP 7.5 löschen kann. 7.0 sagt mir nun forbidden file name. ARGH gell? - also was passiert ... schickt der doofe client 7.0 anscheinend nen fullpath command an den server ....der z.b. so aussieht : Code: RMD /ftphome/test/testordner alles klar? ... blöd oder? ... da sind irgendwie 3 mal slash drinne :D ... 7.5 setz vorher irgendwie noch nen: Code: CWD /ftphome/test ab und macht dann abschliessendCode: RMD testordner ... und das funzt ... naja und an sonen bockmist denkt man ja nicht immer gleich ...nun muss ich auch erstmal überlegen und muss mich warscheinlich entscheiden, nicht zu pingelich zu sein ... ---- vielleicht konnt ich dir helfen ... so long lucy Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Wörsty am 10. Juni 2003, 16:07:38 Stell mich immer noch zu doof as.
Wollte das nehmen: Code: PathAllowFilter "^[a-zA-Z0-9]+[a-zA-Z0-9\.\-\_]+$" Was ist daran falsch?! 1. Dateinamen mit - gehen gar nicht 2. Dateinamen mit _ gehen nicht, wenn _ an der 1. Stelle - sonst okay (gut so) 3. Dateinamen mit @ gehen nicht, wenn @ an der 1. Stelle - sonst ja?! (wieso denn nur) Ich kapier das nicht. :cry: Wird der Punkt nicht richtig escaped?! Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Lucy am 10. Juni 2003, 17:31:14 ...hmmm du brauchst keine doppelten eckigen klammern ...
ist alles mehr oder minder ne wiederholung was du da dem filter verpasst ... ich versuche ihn mal zu interpretieren ... >> deine dateinamen dürfen mit a-z, A-Z, 0-9 beginnen (das plus dahinter bedeutet dieses muster kann beliebig oft vorkommen, also der gesamte string kann diese charakters beinhalten) ... nochmal kurze erklärung der sonderzeichen * Stern steht für 0 bis n Wiederholungen von dem vorhergehenden Ausdruck + Das Plus steht für 1 bis n Wiederholungen . Punkt steht für ein beliebiges Character, ausser Space ? Fragenzeichen steht für 0 oder 1 Wiederholung(en) ^ steht für die Verneinung (not) ^ kann aber auch für den Anfang einer neuen Zeile stehen.(in unserem falle) $ steht für das Ende der Regular Expression (^$ steht für eine leere Zeile) [] In den eckigen Klammern stehen Characters [abc] steht für a, b oder c [a-d] steht für a, b, c oder d [a-z0-9] steht für jeden Kleinbuchstaben und alle Zahlen [^1-2] Alle Zahlen ausser 1 und 2 [ab][cd] steht für ac, ad, bc, bd | steht für oder. text1|text2 -> text1 oder text2 \ ist der Escape Character für spezielle Zeichen z.B. \$ () stehen im Zusammenhang für das Gruppieren von Texten. dahinter machst du noch eine eckige klammer auf ... wieso? [ich denke mal durch das "plus" trennst du die beiden Charklassen], ein punkt,ein minus und einem unterstrich kann den vorangehenden characktern ein bis beliebig oft folgen incl. a-zA-Z0-9. die 2. eckige klammer legt also den 2.char im wort fest ... ? so würde ich die regexp interpretieren. sehe ich das richtig? ich weiss jetzt z.b nicht, wie ein "@" behandelt wird ... weil du es nicht angegeben hast. kann also sein das es garnicht vorkommen darf ... man iss ja schonwieder ne weile her als ich das gemacht hab ...bin richtig verunsichert ...höhö ... achso ... wie gesagt ich glaub du brauchst minus und unterstrich net escapen ... nich das dies deine fehler verursacht versuch doch mal den hier [code]PathAllowFilter "^[a-zA-Z0-9 _.-]+$"[code] p.s. der filter gefällt mir net ...weil ma zuviel darf ... aber das ist ja dein ding ....muesste aber das treffen was du willst .... ich stelle mal meinen kompletten rein hier.... wenn er dir gefällt übernehm ihn einfach und probier dich einfach an ihm, um zu sehen wie regexp funzt ^^ [code]PathAllowFilter "^[a-zA-Z0-9äöüÄÖÜß@ùúàáèéòó\'\´\#\`\~\/ _.-]+$" PathDenyFilter "^[\[\?\\\<\>\:\.]" AllowFilter "^[a-zA-Z0-9@~ \/,_.-]*$" DenyFilter "%"[/code] ... ist nach windows zeichensatz konvention gebastelt ... wenne fehler entdeckst bitte posten ...ansonsten editiere das aus was du denkst ... so long Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Wörsty am 10. Juni 2003, 20:42:24 Code: PathAllowFilter "^[a-zA-Z0-9\.\-\_]+$" Der Blöde Punkt wird nicht escaped. Also nochmal so: Code: PathAllowFilter "^[a-zA-Z0-9\\.\\-\\_]+$" Aber dann geht - nicht. :? Ich werd hier noch irre :evil: Kann das nicht mal jemand bei sich testen? :cry: Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Lucy am 12. Juni 2003, 09:34:21 haste du es mittlerweile hinbekommen ? ...
ich kann deins leider nimmer testen, weil der server in echtbetrieb ist, da will ich nimmer rumspielen ... ich installier mal woanders nen neuen, dann gugg ich mir des nochmal genau an ... wenn du möchtest ... schreib mir bitte dann nochmal genau auf was er machen soll und was nicht ... lucyyy Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Wörsty am 12. Juni 2003, 10:09:44 Geht noch nicht.
Ich möchte alles verbieten außer: Code: a-z A-Z 0-9 _ - . [ ] und Leezeichen Titel: Gleiches Problem Beitrag von: Anonymous am 16. Dezember 2003, 10:44:17 Hallo,
also ich habe das gleiche Problem. Erlaubt sei sollen A-Z, a-z, 0-9, .-_ und das Leerzeichen. Der AUsdruck ^[-a-zA-Z0-9\._]*$ funktioniert soweit, aber wie bekomme ich das Leerzeichen da rein ? Wenn ich einfach nur ein Leerzeichen in den Ausdruck einfügen also z.b. : ^[-a-zA-Z0-9 \._]*$ bekomme ich eine Fehlermeldung. Auch wenn ich ein "\" vor das Leerzeichen stelle. Kann da jemand helfen ? Titel: AllowFilter Beitrag von: webhilfe am 17. Dezember 2003, 00:38:43 Moin moin :-)
Hab da auch so ein Problem mit den AllowFilter. Dies steht in meiner proftpd.conf: Code: AllowFilter "^[a-zA-Z0-9@~ /,_.-]*$" Was muss ich ändern, damit ich über den ftp Client auch den Befehl LIST *.pdf ausführen kann? Ich erhalte immer die Meldung: 550 *.pdf Forbidden command Argument. Gerne würde ich das für einen user explizit freigeben. Wer kann helfen? Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Satansbraten77 am 20. Dezember 2003, 16:27:27 Zitat von: "Wörsty" Geht noch nicht. Ich möchte alles verbieten außer: Code: a-z A-Z 0-9 _ - . [ ] und Leezeichen also habe mal bei uns nachgeschaut/angetestet und immo funtzt es ganz gut, sprich es sind alle Zeichen von A-Z,a-z,0-9,Leerzeichen,- und _ erlaubt. Alles andere wird definitiv mit einer Fehrlermeldung (550 forbidden filename) quittiert :D und so stehts in der .conf : PathDenyFilter ^[\[\\\?\<\>\:\.] $ PathAllowFilter ^[A-Za-z0-9\-\_] + $ hoffe ich konnte damit weiterhelfen. cu satansbraten Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: TL am 20. Dezember 2003, 18:20:52 Hab gerade keine Zeit, aber hier http://www.castaglia.org/proftpd/doc/contrib/regexp.html ist nen gutes Tutorial für reguläre Ausdrücke...
Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: Anonymous am 04. Juni 2004, 10:18:08 Kann mann auch den Backslash ignorieren oder ersetzen durch Slash einstellen??
Titel: PathAllowFilter, PathDenyFilter & reguläre Ausdrücke Beitrag von: mig am 19. Februar 2005, 17:30:07 Hi,
das mit dem DenyFilter ist schon eine Plage. Wie verbiete ich das Leerzeichen alleine sprich: mkd ./ // gruss mig |