35 lines
908 B
Python
35 lines
908 B
Python
|
# SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
||
|
#
|
||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||
|
|
||
|
from html.parser import HTMLParser
|
||
|
|
||
|
|
||
|
class ParseCSRF(HTMLParser):
|
||
|
token: str = None
|
||
|
|
||
|
def __init__(self, name):
|
||
|
HTMLParser.__init__(self)
|
||
|
self.name = name
|
||
|
|
||
|
def handle_starttag(self, tag: str, attrs: (str, str)):
|
||
|
if self.token:
|
||
|
return
|
||
|
|
||
|
if tag != "input":
|
||
|
return
|
||
|
|
||
|
token = None
|
||
|
for index, (k, v) in enumerate(attrs):
|
||
|
if k == "value":
|
||
|
token = v
|
||
|
|
||
|
if all([k == "name", v == self.name]):
|
||
|
if token:
|
||
|
self.token = token
|
||
|
return
|
||
|
for inner_index, (nk, nv) in enumerate(attrs, start=index):
|
||
|
if nk == "value":
|
||
|
self.token = nv
|
||
|
return
|