You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Perl监控脚本使其使用HTTPS与443端口?

Switching Your Perl Monitoring Script to HTTPS (443 Port)

Got it, switching your VOIP port resource monitoring script from HTTP (80) to HTTPS (443) using LWP::UserAgent is straightforward. Here's how to adjust your code step by step:

1. Install the Required HTTPS Protocol Module

LWP::UserAgent doesn’t support HTTPS out of the box—you’ll need to install LWP::Protocol::https first. Run this command to install it via CPAN:

cpan LWP::Protocol::https

Or use your system’s package manager for faster installation (example for Debian/Ubuntu):

sudo apt-get install liblwp-protocol-https-perl

2. Update Your Script’s URL and Port

Change your target API URL from http:// to https://. Since 443 is the default port for HTTPS, you usually don’t need to explicitly specify it (but you can if your server requires it). For example:

  • Original URL: http://your-voip-server:80/api/port-resources
  • Updated URL: https://your-voip-server/api/port-resources (or https://your-voip-server:443/api/port-resources if explicit port is needed)

3. Configure LWP::UserAgent for SSL

Add SSL-specific options to your LWP::UserAgent instance to handle secure connections. Here’s how to modify your script’s setup:

use strict;
use Getopt::Long;
use LWP::UserAgent;
use HTTP::Request::Common qw(GET POST);
use XML::Simple;
use Data::Dumper;
use Sys::Hostname;
# Optional: Import SSL constants if you need to adjust verification rules
use IO::Socket::SSL qw(SSL_VERIFY_PEER SSL_VERIFY_NONE);

Getopt::Long::Configure('bundling');

# Initialize UserAgent with SSL security settings
my $ua = LWP::UserAgent->new(
    agent => 'VOIP-Port-Monitor/1.0', # Optional: Set a custom user agent string
    ssl_opts => {
        verify_hostname => 1, # Enforce hostname matching (secure default)
        SSL_verify_mode => SSL_VERIFY_PEER, # Verify server certificate (secure default)
        # If using a self-signed certificate (insecure, only for testing):
        # SSL_verify_mode => SSL_VERIFY_NONE,
        # verify_hostname => 0,
    },
);

# Example HTTPS GET request to fetch port resource data
my $url = 'https://your-voip-server/api/port-resources';
my $response = $ua->GET($url);

# Process the response
if ($response->is_success) {
    # Parse XML content with XML::Simple
    my $port_data = XMLin($response->content);
    print Dumper($port_data);
} else {
    die "Failed to fetch port data: " . $response->status_line;
}

Key Notes:

  • Certificate Security: Always keep SSL_VERIFY_PEER and verify_hostname enabled in production. Disabling these exposes you to man-in-the-middle attacks. If you use a self-signed cert, add it to your system’s trusted CA store instead of turning off verification.
  • Non-Standard Ports: If your VOIP server uses a non-standard HTTPS port (not 443), append it to the URL like https://your-voip-server:8443/api/port-resources.

Content of the question originates from Stack Exchange, question author mr.zog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:26:58