aboutsummaryrefslogtreecommitdiff
path: root/x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c')
-rw-r--r--x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c606
1 files changed, 0 insertions, 606 deletions
diff --git a/x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c b/x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c
deleted file mode 100644
index 4aaef3b9e766..000000000000
--- a/x11/kdelibs4/files/patch-kdeprint_cups_cupsdconf2_cups-util.c
+++ /dev/null
@@ -1,606 +0,0 @@
- --- kdeprint/cups/cupsdconf2/cups-util.c-orig 2007-10-02 21:36:37.442645546 -0500
- +++ kdeprint/cups/cupsdconf2/cups-util.c 2007-10-02 21:42:08.991708625 -0500
- @@ -6,489 +6,118 @@
- #include <sys/stat.h>
- #include <unistd.h>
-
- -#define CUPS_SERVERROOT "/etc/cups"
- -static http_t *cups_server;
- static ipp_status_t last_error;
- -static char authstring[HTTP_MAX_VALUE];
- -static char pwdstring[33];
- -static int cups_local_auth(http_t *http);
-
- -const char * /* O - Filename for PPD file */
- +const char* cupsGetConf(void);
- +int cupsPutConf(const char*);
- +
- +const char * /* O - Filename for PPD file */
- cupsGetConf(void)
- {
- - int fd; /* PPD file */
- - int bytes; /* Number of bytes read */
- - char buffer[8192]; /* Buffer for file */
- - char resource[HTTP_MAX_URI]; /* Resource name */
- - const char *password; /* Password string */
- - char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
- - nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
- - plain[255], /* Plaintext username:password */
- - encode[512]; /* Encoded username:password */
- - http_status_t status; /* HTTP status from server */
- - char prompt[1024]; /* Prompt string */
- - int digest_tries; /* Number of tries with Digest */
- - static char filename[HTTP_MAX_URI]; /* Local filename */
- -
- - /*
- - * Connect to the correct server as needed...
- - */
- -
- - if ((cups_server = httpConnectEncrypt(cupsServer(), ippPort(),
- - cupsEncryption())) == NULL)
- - {
- - last_error = IPP_SERVICE_UNAVAILABLE;
- - return (NULL);
- - }
- -
- - /*
- - * Get a temp file...
- - */
- -
- - if ((fd = cupsTempFd(filename, sizeof(filename))) < 0)
- - {
- - /*
- - * Can't open file; close the server connection and return NULL...
- - */
- -
- - httpFlush(cups_server);
- - httpClose(cups_server);
- - cups_server = NULL;
- - return (NULL);
- - }
- -
- - /*
- - * And send a request to the HTTP server...
- - */
- -
- - snprintf(resource, sizeof(resource), "/admin/conf/cupsd.conf");
- -
- - digest_tries = 0;
- -
- - do
- - {
- - httpClearFields(cups_server);
- - httpSetField(cups_server, HTTP_FIELD_HOST, cupsServer());
- - httpSetField(cups_server, HTTP_FIELD_AUTHORIZATION, authstring);
- -
- - if (httpGet(cups_server, resource))
- - {
- - if (httpReconnect(cups_server))
- - {
- - status = HTTP_ERROR;
- - break;
- - }
- - else
- - {
- - status = HTTP_UNAUTHORIZED;
- - continue;
- - }
- - }
- -
- - while ((status = httpUpdate(cups_server)) == HTTP_CONTINUE);
- -
- - if (status == HTTP_UNAUTHORIZED)
- - {
- - fprintf(stderr,"cupsGetConf: unauthorized...\n");
- -
- - /*
- - * Flush any error message...
- - */
- -
- - httpFlush(cups_server);
- -
- - /*
- - * See if we can do local authentication...
- - */
- -
- - if (cups_local_auth(cups_server))
- - continue;
- -
- - /*
- - * See if we should retry the current digest password...
- - */
- -
- - if (strncmp(cups_server->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5) == 0 ||
- - digest_tries > 1 || !pwdstring[0])
- - {
- - /*
- - * Nope - get a password from the user...
- - */
- -
- - snprintf(prompt, sizeof(prompt), "Password for %s on %s? ", cupsUser(),
- - cups_server->hostname);
- -
- - if ((password = cupsGetPassword(prompt)) == NULL)
- - break;
- - if (!password[0])
- - break;
- -
- - strncpy(pwdstring, password, sizeof(pwdstring) - 1);
- - pwdstring[sizeof(pwdstring) - 1] = '\0';
- -
- - digest_tries = 0;
- - }
- - else
- - digest_tries ++;
- -
- - /*
- - * Got a password; encode it for the server...
- - */
- -
- - if (strncmp(cups_server->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5) == 0)
- - {
- - /*
- - * Basic authentication...
- - */
- -
- - snprintf(plain, sizeof(plain), "%s:%s", cupsUser(), pwdstring);
- -#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2
- - httpEncode64_2(encode, sizeof(encode), plain, sizeof(plain));
- -#else
- - httpEncode64(encode, plain);
- -#endif
- - snprintf(authstring, sizeof(authstring), "Basic %s", encode);
- - }
- - else
- - {
- - /*
- - * Digest authentication...
- - */
- -
- - httpGetSubField(cups_server, HTTP_FIELD_WWW_AUTHENTICATE, "realm", realm);
- - httpGetSubField(cups_server, HTTP_FIELD_WWW_AUTHENTICATE, "nonce", nonce);
- -
- - httpMD5(cupsUser(), realm, pwdstring, encode);
- - httpMD5Final(nonce, "GET", resource, encode);
- - snprintf(authstring, sizeof(authstring),
- - "Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", "
- - "response=\"%s\"", cupsUser(), realm, nonce, encode);
- - }
- -
- - continue;
- - }
- -#ifdef HAVE_LIBSSL
- - else if (status == HTTP_UPGRADE_REQUIRED)
- - {
- - /*
- - * Flush any error message...
- - */
- -
- - httpFlush(cups_server);
- -
- - /*
- - * Upgrade with encryption...
- - */
- -
- - httpEncryption(cups_server, HTTP_ENCRYPT_REQUIRED);
- -
- - /*
- - * Try again, this time with encryption enabled...
- - */
- -
- - continue;
- - }
- -#endif /* HAVE_LIBSSL */
- - }
- - while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
- -
- - /*
- - * See if we actually got the file or an error...
- - */
- + int fd; /* PPD file */
- + http_status_t status; /* HTTP status from server */
- + http_t *cups_server;
- + static char filename[HTTP_MAX_URI]; /* Local filename */
- + char fqdn[ HTTP_MAX_URI ]; /* Server name buffer */
- +
- +
- + /*
- + * Connect to the correct server as needed...
- + */
- +
- + cups_server = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
- + if (cups_server == NULL) {
- + last_error = IPP_SERVICE_UNAVAILABLE;
- + return (NULL);
- + }
- +
- + /*
- + * Get a temp file...
- + */
- +
- + fd = cupsTempFd(filename, sizeof(filename));
- + if (fd < 0) {
- + /*
- + * Can't open file; close the server connection and return NULL...
- + */
- +
- + httpFlush(cups_server);
- + httpClose(cups_server);
- + cups_server = NULL;
- + return (NULL);
- + }
- +
- + /*
- + * And send a request to the HTTP server...
- + */
- + status = cupsGetFd(cups_server, "/admin/conf/cupsd.conf", fd);
-
- - if (status != HTTP_OK)
- - {
- close(fd);
- - unlink(filename);
- httpFlush(cups_server);
- httpClose(cups_server);
- cups_server = NULL;
- - return (NULL);
- - }
- -
- - /*
- - * OK, we need to copy the file...
- - */
-
- - while ((bytes = httpRead(cups_server, buffer, sizeof(buffer))) > 0)
- - {
- - write(fd, buffer, bytes);
- - }
- -
- - close(fd);
- -
- - return (filename);
- + if (status != HTTP_OK) {
- + unlink(filename);
- + return (NULL);
- + } else {
- + return (filename);
- + }
- }
-
- -int /* O - Status of operation */
- -cupsPutConf(const char *name) /* I - Name of the config file to send */
- +int /* O - Status of operation */
- +cupsPutConf(const char *name) /* I - Name of the config file to send */
- {
- - int fd; /* PPD file */
- - int bytes; /* Number of bytes read */
- - char buffer[8192]; /* Buffer for file */
- - char resource[HTTP_MAX_URI]; /* Resource name */
- - const char *password; /* Password string */
- - char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
- - nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
- - plain[255], /* Plaintext username:password */
- - encode[512]; /* Encoded username:password */
- - http_status_t status; /* HTTP status from server */
- - char prompt[1024]; /* Prompt string */
- - int digest_tries; /* Number of tries with Digest */
- -
- - if (name == NULL)
- - return 0;
- -
- - /*
- - * Connect to the correct server as needed...
- - */
- -
- - if ((cups_server = httpConnectEncrypt(cupsServer(), ippPort(),
- - cupsEncryption())) == NULL)
- - {
- - last_error = IPP_SERVICE_UNAVAILABLE;
- - return 0;
- - }
- + int fd; /* PPD file */
- + http_status_t status; /* HTTP status from server */
- + http_t *cups_server;
-
- - /*
- - * Open the local config file...
- - */
- -
- - if ((fd = open(name, O_RDONLY)) < 0)
- - {
- - /*
- - * Can't open file; close the server connection and return NULL...
- - */
- + if (name == NULL)
- + return 0;
-
- - httpFlush(cups_server);
- - httpClose(cups_server);
- - cups_server = NULL;
- - return 0;
- - }
- + /*
- + * Connect to the correct server as needed...
- + */
-
- - /*
- - * And send a request to the HTTP server...
- - */
- -
- - strncpy(resource, "/admin/conf/cupsd.conf", sizeof(resource));
- -
- - digest_tries = 0;
- -
- - do
- - {
- - httpClearFields(cups_server);
- - httpSetField(cups_server, HTTP_FIELD_HOST, cupsServer());
- - httpSetField(cups_server, HTTP_FIELD_AUTHORIZATION, authstring);
- - httpSetField(cups_server, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
- -
- - if (httpPut(cups_server, resource))
- - {
- - if (httpReconnect(cups_server))
- - {
- - status = HTTP_ERROR;
- - break;
- - }
- - else
- - {
- - status = HTTP_UNAUTHORIZED;
- - continue;
- - }
- + cups_server = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
- + if (cups_server == NULL) {
- + last_error = IPP_SERVICE_UNAVAILABLE;
- + return 0;
- }
-
- - /* send the file now */
- - lseek(fd, 0, SEEK_SET);
- - status = HTTP_CONTINUE;
- - while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
- - if (httpCheck(cups_server))
- - {
- - if ((status = httpUpdate(cups_server)) != HTTP_CONTINUE)
- - break;
- - }
- - else
- - httpWrite(cups_server, buffer, bytes);
- -
- - if (status == HTTP_CONTINUE)
- - {
- - httpWrite(cups_server, buffer, 0);
- - while ((status = httpUpdate(cups_server)) == HTTP_CONTINUE);
- - }
- + /*
- + * Open the local config file...
- + */
-
- - if (status == HTTP_UNAUTHORIZED)
- - {
- - fprintf(stderr,"cupsPutConf: unauthorized...");
- -
- - /*
- - * Flush any error message...
- - */
- -
- - httpFlush(cups_server);
- -
- - /*
- - * See if we can do local authentication...
- - */
- -
- - if (cups_local_auth(cups_server))
- - continue;
- -
- - /*
- - * See if we should retry the current digest password...
- - */
- -
- - if (strncmp(cups_server->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5) == 0 ||
- - digest_tries > 1 || !pwdstring[0])
- - {
- - /*
- - * Nope - get a password from the user...
- - */
- -
- - snprintf(prompt, sizeof(prompt), "Password for %s on %s? ", cupsUser(),
- - cups_server->hostname);
- -
- - if ((password = cupsGetPassword(prompt)) == NULL)
- - break;
- - if (!password[0])
- - break;
- -
- - strncpy(pwdstring, password, sizeof(pwdstring) - 1);
- - pwdstring[sizeof(pwdstring) - 1] = '\0';
- -
- - digest_tries = 0;
- - }
- - else
- - digest_tries ++;
- -
- - /*
- - * Got a password; encode it for the server...
- - */
- -
- - if (strncmp(cups_server->fields[HTTP_FIELD_WWW_AUTHENTICATE], "Basic", 5) == 0)
- - {
- - /*
- - * Basic authentication...
- - */
- -
- - snprintf(plain, sizeof(plain), "%s:%s", cupsUser(), pwdstring);
- -#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2
- - httpEncode64_2(encode, sizeof(encode), plain, sizeof(plain));
- -#else
- - httpEncode64(encode, plain);
- -#endif
- - snprintf(authstring, sizeof(authstring), "Basic %s", encode);
- - }
- - else
- - {
- - /*
- - * Digest authentication...
- - */
- -
- - httpGetSubField(cups_server, HTTP_FIELD_WWW_AUTHENTICATE, "realm", realm);
- - httpGetSubField(cups_server, HTTP_FIELD_WWW_AUTHENTICATE, "nonce", nonce);
- -
- - httpMD5(cupsUser(), realm, pwdstring, encode);
- - httpMD5Final(nonce, "GET", resource, encode);
- - snprintf(authstring, sizeof(authstring),
- - "Digest username=\"%s\", realm=\"%s\", nonce=\"%s\", "
- - "response=\"%s\"", cupsUser(), realm, nonce, encode);
- - }
- + fd = open(name, O_RDONLY);
- + if (fd < 0) {
- + /*
- + * Can't open file; close the server connection and return NULL...
- + */
-
- - continue;
- + httpFlush(cups_server);
- + httpClose(cups_server);
- + cups_server = NULL;
- + return 0;
- }
- -#ifdef HAVE_LIBSSL
- - else if (status == HTTP_UPGRADE_REQUIRED)
- - {
- - /*
- - * Flush any error message...
- - */
- -
- - httpFlush(cups_server);
- -
- - /*
- - * Upgrade with encryption...
- - */
- -
- - httpEncryption(cups_server, HTTP_ENCRYPT_REQUIRED);
- -
- - /*
- - * Try again, this time with encryption enabled...
- - */
-
- - continue;
- - }
- -#endif /* HAVE_LIBSSL */
- - }
- - while (status == HTTP_UNAUTHORIZED || status == HTTP_UPGRADE_REQUIRED);
- -
- - /*
- - * See if we actually got the file or an error...
- - */
- + /*
- + * And send a request to the HTTP server...
- + */
- +
- + status = cupsPutFd(cups_server, "/admin/conf/cupsd.conf", fd);
-
- - if (status != HTTP_CREATED)
- - {
- httpFlush(cups_server);
- httpClose(cups_server);
- cups_server = NULL;
- close(fd);
- - return 0;
- - }
- -
- - close(fd);
- -
- - return 1;
- -}
- -
- -static int /* O - 1 if available, 0 if not */
- -cups_local_auth(http_t *http) /* I - Connection */
- -{
- - int pid; /* Current process ID */
- - FILE *fp; /* Certificate file */
- - char filename[1024], /* Certificate filename */
- - certificate[33];/* Certificate string */
- - const char *root; /* Server root directory */
- -
- -
- - /*
- - * See if we are accessing localhost...
- - the struct has changed in newer versions - PiggZ (adam@piggz.co.uk)
- - */
- -#if CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2
- - if (!httpAddrLocalhost(http))
- -#else
- - if (ntohl(*(int*)&http->hostaddr.sin_addr) != 0x7f000001 &&
- - strcasecmp(http->hostname, "localhost") != 0)
- -#endif
- - return (0);
- -
- - /*
- - * Try opening a certificate file for this PID. If that fails,
- - * try the root certificate...
- - */
- -
- - if ((root = getenv("CUPS_SERVERROOT")) == NULL)
- - root = CUPS_SERVERROOT;
- -
- - pid = getpid();
- - snprintf(filename, sizeof(filename), "%s/certs/%d", root, pid);
- - if ((fp = fopen(filename, "r")) == NULL && pid > 0)
- - {
- - snprintf(filename, sizeof(filename), "%s/certs/0", root);
- - fp = fopen(filename, "r");
- - }
- -
- - if (fp == NULL)
- - return (0);
- -
- - /*
- - * Read the certificate from the file...
- - */
- -
- - fgets(certificate, sizeof(certificate), fp);
- - fclose(fp);
- -
- - /*
- - * Set the authorization string and return...
- - */
- -
- - snprintf(authstring, sizeof(authstring), "Local %s", certificate);
-
- - return (1);
- + /*
- + * See if we actually got the file or an error...
- + */
- +
- + if (status != HTTP_CREATED)
- + return 0;
- + else
- + return 1;
- }
-
- --Boundary-00=_tTyAHs9qWLGFusu
- Content-Type: text/x-c++src;
- charset="us-ascii";
- name="patch-kdeprint_cups_ipprequest.cpp"
- Content-Transfer-Encoding: 7bit
- Content-Disposition: attachment;
- filename="patch-kdeprint_cups_ipprequest.cpp"
-
- --- kdeprint/cups/ipprequest.cpp-orig 2007-01-15 05:34:19.000000000 -0600
- +++ kdeprint/cups/ipprequest.cpp 2007-10-02 22:21:52.359893129 -0500
- @@ -310,7 +310,7 @@
- }
-
- #ifdef HAVE_CUPS_NO_PWD_CACHE
- - strncpy( HTTP->authstring, cups_authstring.data(), HTTP_MAX_VALUE );
- + httpSetAuthString( HTTP, NULL, cups_authstring.data() );
- #endif
-
- if (dump_ > 0)
- @@ -320,7 +320,7 @@
-
- request_ = cupsDoFileRequest(HTTP, request_, (res.isEmpty() ? "/" : res.latin1()), (filename.isEmpty() ? NULL : filename.latin1()));
- #ifdef HAVE_CUPS_NO_PWD_CACHE
- - cups_authstring = HTTP->authstring;
- + cups_authstring = httpGetAuthString( HTTP );
- #endif
- httpClose(HTTP);