|
107 | 107 | sendfile_py,
|
108 | 108 | set_fperms,
|
109 | 109 | stat_resource,
|
| 110 | + str_anchor, |
110 | 111 | ub64dec,
|
111 | 112 | ub64enc,
|
112 | 113 | ujoin,
|
@@ -5369,9 +5370,9 @@ def tx_ups(self) -> bool:
|
5369 | 5370 | raise Pebkac(500, "sqlite3 not found on server; unpost is disabled")
|
5370 | 5371 | raise Pebkac(500, "server busy, cannot unpost; please retry in a bit")
|
5371 | 5372 |
|
5372 |
| - zs = self.uparam.get("filter") or "" |
5373 |
| - filt = re.compile(zs, re.I) if zs else None |
5374 |
| - lm = "ups %r" % (zs,) |
| 5373 | + sfilt = self.uparam.get("filter") or "" |
| 5374 | + nfi, vfi = str_anchor(sfilt) |
| 5375 | + lm = "ups %d%r" % (nfi, sfilt) |
5375 | 5376 |
|
5376 | 5377 | if self.args.shr and self.vpath.startswith(self.args.shr1):
|
5377 | 5378 | shr_dbv, shr_vrem = self.vn.get_dbv(self.rem)
|
@@ -5431,8 +5432,14 @@ def tx_ups(self) -> bool:
|
5431 | 5432 | q = "select sz, rd, fn, at from up where ip=? and at>? order by at desc"
|
5432 | 5433 | for sz, rd, fn, at in cur.execute(q, (self.ip, lim)):
|
5433 | 5434 | vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
5434 |
| - if filt and not filt.search(vp): |
5435 |
| - continue |
| 5435 | + if nfi == 0 or (nfi == 1 and vfi in vp): |
| 5436 | + pass |
| 5437 | + elif nfi == 2: |
| 5438 | + if not vp.startswith(vfi): |
| 5439 | + continue |
| 5440 | + elif nfi == 3: |
| 5441 | + if not vp.endswith(vfi): |
| 5442 | + continue |
5436 | 5443 |
|
5437 | 5444 | n -= 1
|
5438 | 5445 | if not n:
|
@@ -5513,8 +5520,8 @@ def tx_rups(self) -> bool:
|
5513 | 5520 | raise Pebkac(500, "server busy, cannot list recent uploads; please retry")
|
5514 | 5521 |
|
5515 | 5522 | sfilt = self.uparam.get("filter") or ""
|
5516 |
| - filt = re.compile(sfilt, re.I) if sfilt else None |
5517 |
| - lm = "ru %r" % (sfilt,) |
| 5523 | + nfi, vfi = str_anchor(sfilt) |
| 5524 | + lm = "ru %d%r" % (nfi, sfilt) |
5518 | 5525 | self.log(lm)
|
5519 | 5526 |
|
5520 | 5527 | ret: list[dict[str, Any]] = []
|
@@ -5549,8 +5556,14 @@ def tx_rups(self) -> bool:
|
5549 | 5556 | q = "select sz, rd, fn, ip, at from up where at>0 order by at desc"
|
5550 | 5557 | for sz, rd, fn, ip, at in cur.execute(q):
|
5551 | 5558 | vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
5552 |
| - if filt and not filt.search(vp): |
5553 |
| - continue |
| 5559 | + if nfi == 0 or (nfi == 1 and vfi in vp): |
| 5560 | + pass |
| 5561 | + elif nfi == 2: |
| 5562 | + if not vp.startswith(vfi): |
| 5563 | + continue |
| 5564 | + elif nfi == 3: |
| 5565 | + if not vp.endswith(vfi): |
| 5566 | + continue |
5554 | 5567 |
|
5555 | 5568 | if not dots and "/." in vp:
|
5556 | 5569 | continue
|
|
0 commit comments