⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 provactions.pm

📁 SIP(Session Initiation Protocol)是由IETF定义
💻 PM
📖 第 1 页 / 共 2 页
字号:
		$retval = 1;	    } else {		$output .= "Failed to create user \"$$params{user}\": $!";		$output .= "<br>voice mailbox creation failed<p>";		$output .= "vm reason: $vm_errmsg";		$retval = undef;	    }	} else {	    $output .= "Failed to create user \"$$params{user}\": $!";	    $output .= "<br>user creation failed<P>";	    $output .= "reason: $user_errmsg";	    $retval = undef;	}    } else {	# invalid user	if($$params{user} ne "7000") {	    $output = "Failed: Users may have 4-16 digit user IDs only<p>";	    $retval = undef;	} else {	    $output = "Failed: User 7000 is reserved for voice mail<p>";	    $retval = undef;	}    }    return wantarray ? ($retval, $output) : $retval;}sub create_new_user {    my ($retval, $text) = &i_create_user(@_);    return $text;}sub validate_input {    my($params) = @_;    # validate input here, return 1 if ok.    if(       # validate the user       &validate_user($$params{user})  &&       # validate that passwords can only contain "reasonable" characters       $$params{passwd} =~ /^([0-9A-Za-z\!\@\#\$\%\^\&\*\(\)\[\]\{\}\|\\\,\.\<\>\/\?]*)$/      ) {	return 1;    } else {	return 0;    }}sub print_input {    my($params) = @_;    my($output, $tmp);    foreach $tmp (sort keys %$params) {        $output .= $tmp . " : " . $$params{$tmp} . "<p>";    }    print $output;}sub get_original_params {    my($params) = @_;    my($original_params) = {};    my($key);    foreach $key (sort keys %$params) {	my($trimmed_key) = $key;	if($trimmed_key =~ s/^original_//) {	    # remove from params, put in original_params	    $$original_params{$trimmed_key} = $$params{$key};#	    undef($$params{$key});	}    }    return $original_params;}sub params_changed {    my($params) = @_;    my($key);    my($original_params) = &get_original_params($params);    my(@changed_params);    foreach $key (@user_parameter_list) {	if($$params{$key->{name}} ne $$original_params{$key->{name}}) {	    &psdebug($key->{name} . " has been changed");	    push(@changed_params, $key->{name});	}    }    return @changed_params;}# returns:# -1 on error, # 0 if ok, # 1 if unchangedsub update_one_user_entry {    my($params) = @_;    my(@changed_params) = &params_changed($params);    if(&validate_input($params)) { 	my($new_user_xml);	my($data) = &get_data($pserver_hostname, "Accounts", $$params{user});	if($data) {	    &psdebug("got data");	    $new_user_xml = &modify_user_xml($params, \@changed_params, $data);	    &psdebug("output", $new_user_xml);	} else {	    &psdebug("from scratch");	    $new_user_xml = &create_user_xml($params);	}	my($new_called_xml) = &create_contact_called_from_user($new_user_xml);	my($new_calling_xml) = &create_contact_calling_from_user($new_user_xml);	my($new_fna_xml) = &create_fna_feature_xml($params);		my($ret, $err) = &put_data_one_user($$params{user}, 					    $new_user_xml, 					    $new_called_xml,					    $new_calling_xml,					    $new_fna_xml);		return ($ret, $err);    } else {	return (undef, "invalid parameters");    }}# returns -1 on error or 0 if oksub update_one_user {    my($params, $fh) = @_;    my($output);    if(&params_changed($params)) {	my($r, $r_err) = &update_one_user_entry($params);	my($r2, $r2_err) = &update_vm_box($params, $fh);	if($r && $r2) { 	    $output = "Saved user \"$$params{user}\" successfully";	} else {	    $output .= "Failed to save user \"$$params{user}\" successfully";	    $output .= "\n<p>\n";	    if(!$r) {		$output .= $r_err;	    }	    if(!$r2) {		$output .= $r2_err;	    }	}    } else {	$output = "No data changed.";    }    return $output;}sub get_gw_data {    my($data) = &get_data($pserver_hostname, "Marshals", "${local_ip}:5065");    my($param) = {};    if($data =~ /gateway host=\"((\w|\d|[\.\-])*)\" port=\"([0-9]*)\"/) {	$$param{gw_location} = "$1:$3";    }    return $param;}sub update_gw {    my($params) = @_;    my($output);    my($retcode) = 0;    my($reason);    # validate here    if($$params{gw_location} =~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}(:[0-9]{1,5})?$/) {	$retcode = 0;    } else {	$retcode = "Illegal gateway location (must be in the form host:port, where host is an IP address)";    }    if(!$retcode) {	my($gw_xml) = &create_gw_marshal_xml($params);	$retcode = &put_data($pserver_hostname, "Marshals", "${local_ip}:5065", $gw_xml);	if($retcode) {	    $retcode = "Unable to write data to provisioning server"; 	}    }    if(!$retcode) {        $output = "Wrote new gateway successfully";    } else {        $output = "Failed to write new gateway successfully.<p>Reason: $retcode";    }    return $output;}sub update_vm_box {    my($params, $fh) = @_;    my($greeting) = "greeting.wav";    my($vm, $errmsg);    if(!$$params{enable_vm}) {	# nothing to do if there's no VM enabled#	print "no vm enabled\n";	return 1, "did nothing";    }    if(!-d "$vmhome_dir/$$params{user}") {	($vm, $errmsg)  = &create_vm_box($params);	if(!$vm) {	    $output .= "Failed to add voicemail box for user \"$$params{user}\": $!";	    $output .= "<br>voice mailbox creation failed<p>";	    $output .= "vm reason: $errmsg";	    return undef, $output;	}    }    if($$params{use_custom}) {	# use a custom greeting	$greeting = "custom.wav";    }    # modify the config file with the appropriate bits        open(CONFIG, ">$vmhome_dir/$$params{user}/config") || return undef, "could not write file: $!";    print CONFIG "Name      string  User\n";    print CONFIG "SendTo    string  $$params{voicemail_addr}\n";    print CONFIG "Greeting  string  $greeting\n";    close(CONFIG) || return undef, "could not write file: $!";    # if the wav file has been uploaded, upload it.    if($fh) {	#	    print "I received an uploaded_greeting!\n";	open(CUSTOM, ">$vmhome_dir/$$params{user}/custom.wav") || return undef, "could not write file: $!";	while(<$fh>) {	    print CUSTOM;	}	close(CUSTOM) || return undef, "could not write file: $!";    }    return 1, "successfully created voice mailbox";}# returns -1 on error or 0 if oksub create_vm_box {    my($params) = @_;    # test to make sure that I can write in vmhome    if(!-w $vmhome_dir) {	return undef, "cannot write directory $vmhome_dir";    }    my ($ret) = mkdir "$vmhome_dir/$$params{user}", 0757;    if(!$ret) {	return undef, "could not make directory $vmhome_dir/$$params{user}: $!";    }    return 1, "created vm box successfully";}sub delete_vm_box {    my($user) = @_;    if($user !~ /\.\./ && $user !~ /\//) {	my($userdir) = "$vmhome_dir/$user";	my($x);	# allow deletions if things don't have 2 . in them	# simultaneously or a / 	opendir(DIR, $userdir) || return undef, "could not read $userdir: $!";	@files = grep(!/^\.\.?$/, readdir(DIR));	closedir(DIR);	foreach $x (@files) {	    $x = "$userdir/$x";#	    print "deleting $x...<br>\n";	    unlink $x || return undef, "could not remove $userdir/$x: $!";	}#	unlink @files || return -1;	rmdir $userdir || return undef, "could not remove userdir: $!";    }     return true, "delete succeeded";}sub i_delete_user {    my($params) = @_;    my($output);    my($retval) = undef;    if(!defined(&delete_user($pserver_hostname, $$params{user}))) {	# an error	$retval = undef;        $output = "Failed to delete user \"$$params{user}\" successfully:<br>";	$output .= "could not delete user XML data";    } else {	my ($vm_r, $vm_err) = &delete_vm_box($$params{user}) || $retcode;		if(!defined($vm_r)) {	    $output = "Failed to delete user \"$$params{user}\" successfully:<br>";	    $output .= "could not delete voicemail box";	    $retval = undef;	} else {	    $output = "Deleted user \"$$params{user}\" successfully";	    $retval = 1;	}    }    return wantarray ? ($retval, $output) : $retval;}sub delete_one_user {    my($retval, $output) = &i_delete_user(@_);    return $output;}sub set_vm_dialplan {    my($output);    my($retcode) = &put_data($pserver_hostname,			     "SystemConfiguration", 			     "defaultPhonePlan", 			     &create_digitalplan_xml());    $retcode = &put_data($pserver_hostname,			 "SystemConfiguration",			 "defaultIpPlan", 			 &create_ipplan_xml()) || $retcode;    if(!$retcode) {	$output = "Created VM dialplan successfully";    } else {	$output = "Failed to create VM dialplan successfully: $!";    }    return $output;}return 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -