5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * CDDL HEADER START
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * The contents of this file are subject to the terms of the
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Common Development and Distribution License (the "License").
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * You may not use this file except in compliance with the License.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * or http://www.opensolaris.org/os/licensing.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * See the License for the specific language governing permissions
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * and limitations under the License.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * When distributing Covered Code, include this CDDL HEADER in each
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * If applicable, add the following below this CDDL HEADER, with the
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * fields enclosed by brackets "[]" replaced with your own identifying
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * information: Portions Copyright [yyyy] [name of copyright owner]
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * CDDL HEADER END
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Use is subject to license terms.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/* All Rights Reserved */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <stdio.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <limits.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <stdlib.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <unistd.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <string.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <errno.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <pkglocs.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <locale.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <libintl.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <pkglib.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <pkgerr.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <pkgweb.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <install.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <libinst.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <libadm.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#include <messages.h>
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#define DEFMAIL "root"
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandextern struct admin adm; /* holds info about install admin */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandextern int warnflag; /* != 0 non-fatal error occurred 2 */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandstatic struct {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char **memloc;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char *tag;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland} admlist[] = {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.action, "action",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.authentication, "authentication",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.basedir, "basedir",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.conflict, "conflict",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.idepend, "idepend",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.instance, "instance",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.keystore, "keystore",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.mail, "mail",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.networkretries, "networkretries",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.networktimeout, "networktimeout",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.partial, "partial",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.proxy, "proxy",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.rdepend, "rdepend",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.RSCRIPTALT, RSCRIPTALT_KEYWORD,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.runlevel, "runlevel",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.setuid, "setuid",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland &adm.space, "space",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* MUST BE LAST ENTRY IN LIST */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland (char **)NULL, (char *)NULL
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland};
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Name: setadminSetting
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: set one administration parameter setting
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Arguments: a_paramName - pointer to string representing the name of
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * the administration parameter to set
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * a_paramValue - pointer to string representing the value
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * to set the specified administration parameter to
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: char *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * - old value the parameter had before being set
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * == NULL - the old paramter was not set
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandchar *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandsetadminSetting(char *a_paramName, char *a_paramValue)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char *oldValue = (char *)NULL;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland int i;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* locate and update the specified admin setting */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland for (i = 0; admlist[i].memloc; i++) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (strcmp(a_paramName, admlist[i].tag) == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland oldValue = *admlist[i].memloc;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *admlist[i].memloc = a_paramValue;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland break;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (admlist[i].memloc == (char **)NULL) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland logerr(WRN_UNKNOWN_ADM_PARAM, a_paramName);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (oldValue);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Name: setadminFile
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: read and remember settings from administration file
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Arguments: file - pointer to string representing the path to the
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * administration file to read - if this is NULL
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * then the name "default" is used - if this is
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * the string "none" then the admin "basedir"
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * setting is set to "ask" so that the location
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * of the administration file will be interactively
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * asked at the appropriate time
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: void
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandvoid
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandsetadminFile(char *file)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland FILE *fp;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland int i;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char param[MAX_PKG_PARAM_LENGTH];
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char *value;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland char path[PATH_MAX];
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland int mail = 0;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (file == NULL)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland file = "default";
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland else if (strcmp(file, "none") == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland adm.basedir = "ask";
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (file[0] == '/')
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland (void) strcpy(path, file);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland else {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland (void) snprintf(path, sizeof (path), "%s/admin/%s",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland get_PKGADM(), file);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (access(path, R_OK)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland (void) snprintf(path, sizeof (path), "%s/admin/%s",
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland PKGADM, file);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if ((fp = fopen(path, "r")) == NULL) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland progerr(ERR_OPEN_ADMIN_FILE, file, strerror(errno));
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland quit(99);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland param[0] = '\0';
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland while (value = fpkgparam(fp, param)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (strcmp(param, "mail") == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland mail = 1;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (value[0] == '\0') {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland param[0] = '\0';
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland continue; /* same as not being set at all */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland for (i = 0; admlist[i].memloc; i++) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (strcmp(param, admlist[i].tag) == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *admlist[i].memloc = value;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland break;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (admlist[i].memloc == NULL) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland logerr(WRN_UNKNOWN_ADM_PARAM, param);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland free(value);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland param[0] = '\0';
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland (void) fclose(fp);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (!mail) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland adm.mail = DEFMAIL; /* if we don't assign anything to it */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: web_ck_retries
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Reads admin file setting for networkretries, or uses default
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: None
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: admin file setting for networkretries, or the default if no
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * admin file setting exists or if it is outside the
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * allowable range.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandint
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandweb_ck_retries(void)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland int retries = NET_RETRIES_DEFAULT;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (ADMSET(networkretries)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* Make sure value is within valid range */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if ((retries = atoi(adm.networkretries)) == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NET_RETRIES_DEFAULT);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland } else if (retries <= NET_RETRIES_MIN ||
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland retries > NET_RETRIES_MAX) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NET_RETRIES_DEFAULT);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (retries);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: web_ck_authentication
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Retrieves admin file setting for authentication
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: None
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: admin file policy for authentication - AUTH_QUIT
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * or AUTH_NOCHECK.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * non-zero failure
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandint
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandweb_ck_authentication(void)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (ADM(authentication, "nocheck"))
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (AUTH_NOCHECK);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (AUTH_QUIT);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: web_ck_timeout
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Retrieves admin file policy for networktimeout's
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: NONE
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: Admin file setting for networktimeout, or default
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * timeout value if admin file does not specify one,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * or specifies one that is out of the allowable range.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandint
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandweb_ck_timeout(void)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland int timeout = NET_TIMEOUT_DEFAULT;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (ADMSET(networktimeout)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* Make sure value is within valid range */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if ((timeout = atoi(adm.networktimeout)) == 0) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NET_TIMEOUT_DEFAULT);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland } else if (timeout <= NET_TIMEOUT_MIN ||
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland timeout > NET_TIMEOUT_MAX) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NET_TIMEOUT_DEFAULT);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (timeout);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: check_keystore_admin
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Retrieves security keystore setting from admin file,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * or validates user-supplied keystore policy.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: keystore - Where to store resulting keystore policy
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: B_TRUE - admin file contained valid keystore, or
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * user-supplied keystore passed in "keystore" was
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * valid. Resulting keystore stored in "keystore"
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * B_FALSE - No location supplied to store result,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * or user-supplied keystore was not valid.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandboolean_t
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandcheck_keystore_admin(char **keystore)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (!keystore) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* no location to store keystore */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_FALSE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (*keystore != NULL) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (!path_valid(*keystore)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* the given keystore is invalid */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_FALSE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* the user-supplied keystore was valid */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_TRUE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* no user-supplied, so use default */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if ((*keystore = set_keystore_admin()) == NULL) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *keystore = PKGSEC;
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_TRUE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: get_proxy_port_admin
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Retrieves proxy setting from admin file
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: proxy - where to store resulting proxy (host:port or URL)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * port - Where to store resulting proxy port
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: B_TRUE - admin file had a valid proxy setting,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * and it is stored in "proxy".
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * B_FALSE - no proxy setting in admin file, or
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * invalid setting in admin file.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandboolean_t
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandget_proxy_port_admin(char **proxy, ushort_t *port)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (ADMSET(proxy) && !path_valid(adm.proxy)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland /* admin file has bad keystore */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_FALSE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland } else if (ADMSET(proxy)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *proxy = strdup(adm.proxy);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *port = strip_port(adm.proxy);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (B_TRUE);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Function: set_keystore_admin
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Description: Retrieves security keystore setting from admin file,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Parameters: NONE
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Returns: Keystore file policy from admin file, if set
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * and valid. NULL otherwise.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandchar *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandset_keystore_admin(void)
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland{
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (ADMSET(keystore) && !path_valid(adm.keystore)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NULL);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland if (!ADMSET(keystore)) {
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (NULL);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland }
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland return (adm.keystore);
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland}