# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
+from urllib.parse import urlparse
+
import bs4
import validators
for request in request_paths:
# DEBUG: print(f"DEBUG: path[{type(path)}]='{path}',request='{request}'")
- if path is not None and path != "" and path != request:
- # DEBUG: print(f"DEBUG: path='{path}' does not match request='{request}' - SKIPPED!")
- continue
-
- # DEBUG: print(f"DEBUG: Fetching request='{request}' from domain='{domain}' ...")
- data = network.get_json_api(
- domain,
- request,
- headers,
- (config.get("nodeinfo_connection_timeout"), config.get("nodeinfo_read_timeout"))
- )
-
- # DEBUG: print(f"DEBUG: response.ok={response.ok},response.status_code={response.status_code},data[]='{type(data)}'")
- if "error_message" not in data:
- # DEBUG: print("DEBUG: Success:", request)
- instances.set_detection_mode(domain, "STATIC_CHECK")
- instances.set_nodeinfo_url(domain, request)
- break
-
- print(f"WARNING: Failed fetching nodeinfo from domain='{domain}',status_code='{data['status_code']}',error_message='{data['error_message']}'")
+ if path is None or path == request or path == f"http://{domain}{path}" or path == f"https://{domain}{path}":
+ # DEBUG: print(f"DEBUG: Fetching request='{request}' from domain='{domain}' ...")
+ if path == f"http://{domain}{path}" or path == f"https://{domain}{path}":
+ print(f"DEBUG: domain='{domain}',path='{path}' has protocol in path, splitting ...")
+ components = urlparse(path)
+ path = components.path
+
+ data = network.get_json_api(
+ domain,
+ request,
+ headers,
+ (config.get("nodeinfo_connection_timeout"), config.get("nodeinfo_read_timeout"))
+ )
+
+ # DEBUG: print(f"DEBUG: response.ok={response.ok},response.status_code={response.status_code},data[]='{type(data)}'")
+ if "error_message" not in data:
+ # DEBUG: print("DEBUG: Success:", request)
+ instances.set_detection_mode(domain, "STATIC_CHECK")
+ instances.set_nodeinfo_url(domain, request)
+ break
+
+ print(f"WARNING: Failed fetching nodeinfo from domain='{domain}',status_code='{data['status_code']}',error_message='{data['error_message']}'")
# DEBUG: print(f"DEBUG: data()={len(data)} - EXIT!")
return data