~ubuntu-branches/debian/lenny/italc/lenny

« back to all changes in this revision

Viewing changes to ica/x11/x11vnc/ssltools.h

  • Committer: Bazaar Package Importer
  • Author(s): Patrick Winnertz
  • Date: 2008-06-17 13:46:54 UTC
  • mfrom: (1.2.1 upstream) (4.1.1 gutsy)
  • Revision ID: james.westby@ubuntu.com-20080617134654-cl0gi4u524cv1ici
Tags: 1:1.0.9~rc3-1
* Package new upstream version
  - upstream ported the code to qt4.4 (Closes: #481974)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _SSLTOOLS_H
 
2
#define _SSLTOOLS_H
 
3
 
 
4
/* quoted scripts, edit source not this file. */
 
5
 
 
6
 
 
7
char genCA[] = 
 
8
"#!/bin/sh\n"
 
9
"\n"
 
10
"DIR=$BASE_DIR\n"
 
11
"if [ \"x$DIR\" = \"x\" ]; then\n"
 
12
"       DIR=\"$HOME/dotkjr_vnc/certs\"\n"
 
13
"       rm -rf \"$DIR\"\n"
 
14
"fi\n"
 
15
"if echo \"$DIR\" | grep '^/' > /dev/null; then\n"
 
16
"        :\n"
 
17
"else\n"
 
18
"        DIR=\"`pwd`/$DIR\"\n"
 
19
"fi\n"
 
20
"\n"
 
21
"PATH=/usr/bin:/bin:/usr/sbin:$PATH; export PATH\n"
 
22
"if [ \"x$OPENSSL\" = \"x\" ]; then\n"
 
23
"       OPENSSL=\"openssl\"\n"
 
24
"fi\n"
 
25
"\n"
 
26
"type \"$OPENSSL\" > /dev/null  || exit 1\n"
 
27
"\n"
 
28
"if [ -f \"$DIR/CA/cacert.pem\" ]; then\n"
 
29
"       echo \"Files will be overwritten in $DIR/CA\"\n"
 
30
"       printf \"Continue? [y]/n \"\n"
 
31
"       read x\n"
 
32
"       if [ \"x$x\" = \"xn\" ]; then\n"
 
33
"               exit 1;\n"
 
34
"       fi\n"
 
35
"fi\n"
 
36
"\n"
 
37
"#mkdir -p \"$DIR/HASH\"                || exit 1\n"
 
38
"mkdir -p \"$DIR/clients\"              || exit 1\n"
 
39
"#mkdir -p \"$DIR/clients/HASH\"        || exit 1\n"
 
40
"mkdir -p \"$DIR/CA/certs\"     || exit 1\n"
 
41
"mkdir -p \"$DIR/CA/crl\"               || exit 1\n"
 
42
"mkdir -p \"$DIR/CA/newcerts\"  || exit 1\n"
 
43
"mkdir -p \"$DIR/CA/private\"   || exit 1\n"
 
44
"chmod go-rwx \"$DIR/CA/private\"       || exit 1\n"
 
45
"mkdir -p \"$DIR/tmp\"          || exit 1\n"
 
46
"chmod go-rwx \"$DIR/tmp\"              || exit 1\n"
 
47
"touch \"$DIR/CA/index.txt\"    || exit 1\n"
 
48
"if [ ! -f \"$DIR/CA/serial\" ]; then\n"
 
49
"       echo \"01\" > \"$DIR/CA/serial\"        || exit 1\n"
 
50
"fi\n"
 
51
"\n"
 
52
"cnf='\n"
 
53
"HOME                   = .\n"
 
54
"RANDFILE               = $ENV::HOME/.rnd\n"
 
55
"\n"
 
56
"####################################################################\n"
 
57
"[ ca ]\n"
 
58
"default_ca     = CA_default            # The default ca section\n"
 
59
"\n"
 
60
"####################################################################\n"
 
61
"[ CA_default ]\n"
 
62
"\n"
 
63
"dir            = ./CA                  # Where everything is kept\n"
 
64
"certs          = $dir/certs            # Where the issued certs are kept\n"
 
65
"crl_dir                = $dir/crl              # Where the issued crl are kept\n"
 
66
"database       = $dir/index.txt        # database index file.\n"
 
67
"new_certs_dir  = $dir/newcerts         # default place for new certs.\n"
 
68
"certificate    = $dir/cacert.pem       # The CA certificate\n"
 
69
"serial         = $dir/serial           # The current serial number\n"
 
70
"crl            = $dir/crl.pem          # The current CRL\n"
 
71
"private_key    = $dir/private/cakey.pem # The private key\n"
 
72
"RANDFILE       = $dir/private/.rand    # private random number file\n"
 
73
"\n"
 
74
"x509_extensions        = usr_cert              # The extentions to add to the cert\n"
 
75
"\n"
 
76
"name_opt       = ca_default            # Subject Name options\n"
 
77
"cert_opt       = ca_default            # Certificate field options\n"
 
78
"\n"
 
79
"default_days   = 365                   # how long to certify for\n"
 
80
"default_crl_days= 30                   # how long before next CRL\n"
 
81
"default_md     = md5                   # which md to use.\n"
 
82
"preserve       = no                    # keep passed DN ordering\n"
 
83
"\n"
 
84
"policy         = policy_match\n"
 
85
"\n"
 
86
"# For the CA policy\n"
 
87
"[ policy_match ]\n"
 
88
"countryName            = match\n"
 
89
"stateOrProvinceName    = match\n"
 
90
"organizationName       = match\n"
 
91
"organizationalUnitName = optional\n"
 
92
"commonName             = supplied\n"
 
93
"emailAddress           = optional\n"
 
94
"\n"
 
95
"[ policy_anything ]\n"
 
96
"countryName            = optional\n"
 
97
"stateOrProvinceName    = optional\n"
 
98
"localityName           = optional\n"
 
99
"organizationName       = optional\n"
 
100
"organizationalUnitName = optional\n"
 
101
"commonName             = supplied\n"
 
102
"emailAddress           = optional\n"
 
103
"\n"
 
104
"####################################################################\n"
 
105
"[ req ]\n"
 
106
"default_bits           = 2048\n"
 
107
"default_keyfile        = privkey.pem\n"
 
108
"distinguished_name     = req_distinguished_name\n"
 
109
"attributes             = req_attributes\n"
 
110
"x509_extensions        = v3_ca # The extentions to add to the self signed cert\n"
 
111
"\n"
 
112
"string_mask = nombstr\n"
 
113
"\n"
 
114
"# req_extensions = v3_req # The extensions to add to a certificate request\n"
 
115
"\n"
 
116
"[ req_distinguished_name ]\n"
 
117
"countryName                    = Country Name (2 letter code)\n"
 
118
"countryName_default            = AU\n"
 
119
"countryName_min                        = 2\n"
 
120
"countryName_max                        = 2\n"
 
121
"\n"
 
122
"stateOrProvinceName            = State or Province Name (full name)\n"
 
123
"stateOrProvinceName_default    = mystate\n"
 
124
"\n"
 
125
"localityName                   = Locality Name (eg, city)\n"
 
126
"\n"
 
127
"0.organizationName             = Organization Name (eg, company)\n"
 
128
"0.organizationName_default     = x11vnc server CA\n"
 
129
"\n"
 
130
"organizationalUnitName         = Organizational Unit Name (eg, section)\n"
 
131
"\n"
 
132
"commonName                     = Common Name (eg, YOUR name)\n"
 
133
"commonName_default             = %USER x11vnc server CA\n"
 
134
"commonName_max                 = 64\n"
 
135
"\n"
 
136
"emailAddress                   = Email Address\n"
 
137
"emailAddress_default           = x11vnc@CA.nowhere\n"
 
138
"emailAddress_max               = 64\n"
 
139
"\n"
 
140
"[ req_attributes ]\n"
 
141
"challengePassword              = A challenge password\n"
 
142
"challengePassword_min          = 4\n"
 
143
"challengePassword_max          = 20\n"
 
144
"\n"
 
145
"unstructuredName               = An optional company name\n"
 
146
"\n"
 
147
"[ usr_cert ]\n"
 
148
"\n"
 
149
"basicConstraints=CA:FALSE\n"
 
150
"\n"
 
151
"nsComment                      = \"OpenSSL Generated Certificate\"\n"
 
152
"\n"
 
153
"subjectKeyIdentifier=hash\n"
 
154
"authorityKeyIdentifier=keyid,issuer:always\n"
 
155
"\n"
 
156
"[ v3_req ]\n"
 
157
"\n"
 
158
"basicConstraints = CA:FALSE\n"
 
159
"keyUsage = nonRepudiation, digitalSignature, keyEncipherment\n"
 
160
"\n"
 
161
"[ v3_ca ]\n"
 
162
"\n"
 
163
"subjectKeyIdentifier=hash\n"
 
164
"\n"
 
165
"authorityKeyIdentifier=keyid:always,issuer:always\n"
 
166
"\n"
 
167
"basicConstraints = CA:true\n"
 
168
"\n"
 
169
"[ crl_ext ]\n"
 
170
"\n"
 
171
"authorityKeyIdentifier=keyid:always,issuer:always\n"
 
172
"\n"
 
173
"'\n"
 
174
"selfcnf='\n"
 
175
"####################################################################\n"
 
176
"[ req ]\n"
 
177
"default_bits           = 2048\n"
 
178
"encrypt_key            = yes\n"
 
179
"distinguished_name     = req_distinguished_name\n"
 
180
"x509_extensions                = cert_type\n"
 
181
"\n"
 
182
"[ req_distinguished_name ]\n"
 
183
"countryName                    = Country Name (2 letter code)\n"
 
184
"countryName_default            = AU\n"
 
185
"countryName_min                        = 2\n"
 
186
"countryName_max                        = 2\n"
 
187
"\n"
 
188
"stateOrProvinceName            = State or Province Name (full name)\n"
 
189
"stateOrProvinceName_default    = mystate\n"
 
190
"\n"
 
191
"localityName                   = Locality Name (eg, city)\n"
 
192
"\n"
 
193
"0.organizationName             = Organization Name (eg, company)\n"
 
194
"0.organizationName_default     = x11vnc server self-signed\n"
 
195
"\n"
 
196
"organizationalUnitName         = Organizational Unit Name (eg, section)\n"
 
197
"\n"
 
198
"commonName                     = Common Name (eg, YOUR name)\n"
 
199
"commonName_default             = x11vnc server self-signed %NAME\n"
 
200
"commonName_max                 = 64\n"
 
201
"\n"
 
202
"emailAddress                   = Email Address\n"
 
203
"emailAddress_default           = x11vnc@self-signed.nowhere\n"
 
204
"emailAddress_max               = 64\n"
 
205
"\n"
 
206
"[ cert_type ]\n"
 
207
"nsCertType = server\n"
 
208
"\n"
 
209
"'\n"
 
210
"echo \"$cnf\" | sed -e \"s/%USER/$USER/\" \\\n"
 
211
"       > \"$DIR/CA/ssl.cnf\" || exit 1\n"
 
212
"echo \"$cnf\" | sed -e \"s/%USER *//\" -e 's/server CA/server %NAME/g' -e 's/@CA/@server/' \\\n"
 
213
"       > \"$DIR/CA/ssl.cnf.server\" || exit 1\n"
 
214
"echo \"$cnf\" | sed -e \"s/%USER *//\" -e 's/server CA/client %NAME/g' -e 's/@CA/@client/' \\\n"
 
215
"       > \"$DIR/CA/ssl.cnf.client\" || exit 1\n"
 
216
"\n"
 
217
"echo \"$selfcnf\" > \"$DIR/CA/self.cnf.server\" || exit 1\n"
 
218
"echo \"$selfcnf\" | sed -e 's/ server/ client/g' \\\n"
 
219
"       > \"$DIR/CA/self.cnf.client\" || exit 1\n"
 
220
"\n"
 
221
"cd \"$DIR\"    || exit 1\n"
 
222
"\n"
 
223
"echo \"\"\n"
 
224
"echo \"----------------------------------------------------------------------\"\n"
 
225
"echo \"Generating your x11vnc CA (certificate authority) key and certificate:\"\n"
 
226
"echo \"\"\n"
 
227
"echo \"Please supply a passphrase and any other information you care to.\"\n"
 
228
"echo \"----------------------------------------------------------------------\"\n"
 
229
"echo \"\"\n"
 
230
"\n"
 
231
"\"$OPENSSL\" req -config \"$DIR/CA/ssl.cnf\" -new -x509 \\\n"
 
232
"       -keyout \"$DIR/CA/private/cakey.pem\" \\\n"
 
233
"       -out \"$DIR/CA/cacert.pem\"\n"
 
234
"\n"
 
235
"chmod go-rwx \"$DIR/CA/private/cakey.pem\"\n"
 
236
"\n"
 
237
"if [ $? != 0 ]; then\n"
 
238
"       echo \"openssl failed.\"\n"
 
239
"       exit 1\n"
 
240
"fi\n"
 
241
"\n"
 
242
"echo \"\"\n"
 
243
"echo \"----------------------------------------------------------------------\"\n"
 
244
"echo \"Your public x11vnc CA cert is:\"\n"
 
245
"echo \"\"\n"
 
246
"echo \"        $DIR/CA/cacert.pem\"\n"
 
247
"echo \"\"\n"
 
248
"echo \"   It may be copied to other applications, e.g. Web browser, Java\"\n"
 
249
"echo \"   Applet keystore, or stunnel cfg, to use to verify signed server\"\n"
 
250
"echo \"   or client certs, etc.\"\n"
 
251
"echo \"\"\n"
 
252
"echo \"Your private x11vnc CA key is:\"\n"
 
253
"echo \"\"\n"
 
254
"echo \"        $DIR/CA/private/cakey.pem\"\n"
 
255
"echo \"\"\n"
 
256
"echo \"   It will be used to sign server or client certs, keep it secret.\"\n"
 
257
"echo \"----------------------------------------------------------------------\"\n"
 
258
"echo \"\"\n"
 
259
"printf \"Press Enter to print the cacert.pem certificate to the screen: \"\n"
 
260
"read x\n"
 
261
"echo \"\"\n"
 
262
"cat \"$DIR/CA/cacert.pem\"\n"
 
263
;
 
264
 
 
265
char genCert[] = 
 
266
"#!/bin/sh\n"
 
267
"\n"
 
268
"direrror() {\n"
 
269
"       echo \"\"\n"
 
270
"       echo \"You need first to run:\"\n"
 
271
"       echo \"\"\n"
 
272
"       if echo \"$DIR\" | grep '/\\.vnc/certs' > /dev/null; then\n"
 
273
"               echo \" x11vnc -sslGenCA\"\n"
 
274
"       else\n"
 
275
"               echo \" x11vnc -sslGenCA $DIR\"\n"
 
276
"       fi\n"
 
277
"       echo \"\"\n"
 
278
"       echo \"to create the CA cert file and other needed config files and directories.\"\n"
 
279
"       echo \"\"\n"
 
280
"       echo \"Then you can run: x11vnc -sslGenCert $type $name0\"\n"
 
281
"       echo \"\"\n"
 
282
"       if [ \"X$1\" != \"X\" ]; then\n"
 
283
"               echo \"(missing file/dir: $1)\"\n"
 
284
"               echo \"\"\n"
 
285
"       fi\n"
 
286
"       exit 1\n"
 
287
"}\n"
 
288
"\n"
 
289
"make_HASH() {\n"
 
290
"       crt=\"$1\"\n"
 
291
"       remove=\"$2\"\n"
 
292
"       if [ ! -f \"$crt\" ]; then\n"
 
293
"               return\n"
 
294
"       fi\n"
 
295
"       dirhash=`dirname \"$crt\"`/HASH\n"
 
296
"       bashash=`basename \"$crt\"`\n"
 
297
"       if [ ! -d \"$dirhash\" ]; then\n"
 
298
"               return\n"
 
299
"       fi\n"
 
300
"       hash=`\"$OPENSSL\" x509 -hash -noout -in \"$crt\" 2>/dev/null | head -1`\n"
 
301
"       if [ \"X$hash\" != \"X\" ]; then\n"
 
302
"               for i in 0 1 2 3 4 5 6 7 8 9\n"
 
303
"               do\n"
 
304
"                       lnk=\"$dirhash/$hash.$i\"\n"
 
305
"                       if [ \"X$remove\" = \"X1\" ]; then\n"
 
306
"                               if [ -h \"$lnk\" ]; then\n"
 
307
"                                       if cmp \"$lnk\" \"$crt\" > /dev/null 2>&1; then\n"
 
308
"                                               ls -l \"$lnk\"\n"
 
309
"                                               rm -i \"$lnk\"\n"
 
310
"                                       fi\n"
 
311
"                               fi\n"
 
312
"                       else\n"
 
313
"                               if [ -h \"$lnk\" ]; then\n"
 
314
"                                       if [ ! -f \"$lnk\" ]; then\n"
 
315
"                                               rm -f \"$lnk\" 1>/dev/null 2>&1\n"
 
316
"                                       else\n"
 
317
"                                               continue\n"
 
318
"                                       fi\n"
 
319
"                               fi\n"
 
320
"                               if [ \"x$HASH_verbose\" = \"x1\" ]; then\n"
 
321
"                                       echo \"creating: $lnk -> ../$bashash\"\n"
 
322
"                               fi\n"
 
323
"                               ln -s \"../$bashash\" \"$lnk\"\n"
 
324
"                               break\n"
 
325
"                       fi\n"
 
326
"               done\n"
 
327
"       fi\n"
 
328
"}\n"
 
329
"\n"
 
330
"create_key() {\n"
 
331
"       \n"
 
332
"       echo \"----------------------------------------------------------------------\"\n"
 
333
"       echo \"Creating new x11vnc certificate and key for name: $type $name0\"\n"
 
334
"       echo \"\"\n"
 
335
"\n"
 
336
"       cnf=\"$DIR/tmp/cnf.$$\"\n"
 
337
"       trap \"rm -f \\\"$cnf\\\"\" 0 1 2 15\n"
 
338
"\n"
 
339
"       rm -f \"$DIR/$dest.key\" \"$DIR/$dest.crt\" \"$DIR/$dest.req\"\n"
 
340
"\n"
 
341
"       if [ \"x$self\" = \"x1\" ]; then\n"
 
342
"               if [ ! -f \"$DIR/CA/self.cnf.$type\" ]; then\n"
 
343
"                       direrror \"$DIR/CA/self.cnf.$type\"\n"
 
344
"               fi\n"
 
345
"               cat \"$DIR/CA/self.cnf.$type\" | sed -e \"s/%NAME/$name0/\" > \"$cnf\" || exit 1\n"
 
346
"               \"$OPENSSL\" req -config \"$cnf\" -nodes -new -newkey rsa:2048 -x509 $REQ_ARGS \\\n"
 
347
"                       -keyout \"$DIR/$dest.key\" \\\n"
 
348
"                       -out    \"$DIR/$dest.crt\"\n"
 
349
"       else\n"
 
350
"               if [ ! -f \"$DIR/CA/ssl.cnf.$type\" ]; then\n"
 
351
"                       direrror \"$DIR/CA/ssl.cnf.$type\"\n"
 
352
"               fi\n"
 
353
"               cat \"$DIR/CA/ssl.cnf.$type\" | sed  -e \"s/%NAME/$name0/\" > \"$cnf\" || exit 1\n"
 
354
"               \"$OPENSSL\" req -config \"$cnf\" -nodes -new -newkey rsa:2048 $REQ_ARGS \\\n"
 
355
"                       -keyout \"$DIR/$dest.key\" \\\n"
 
356
"                       -out    \"$DIR/$dest.req\"\n"
 
357
"       fi\n"
 
358
"       rc=$?\n"
 
359
"       if [ -f \"$DIR/$dest.key\" ]; then\n"
 
360
"               chmod go-rwx \"$DIR/$dest.key\"\n"
 
361
"       fi\n"
 
362
"\n"
 
363
"\n"
 
364
"\n"
 
365
"       if [ $rc != 0 ]; then\n"
 
366
"               echo \"openssl 'req' command failed\"\n"
 
367
"               rm -f \"$DIR/$dest.key\" \"$DIR/$dest.crt\" \"$DIR/$dest.req\"\n"
 
368
"               exit 1\n"
 
369
"       fi\n"
 
370
"}\n"
 
371
"\n"
 
372
"enc_key() {\n"
 
373
"       \n"
 
374
"       echo \"\"\n"
 
375
"       echo \"----------------------------------------------------------------------\"\n"
 
376
"       echo \"Do you want to protect the generated private key with a passphrase?\"\n"
 
377
"       echo \"Doing so will significantly decrease the chances someone could steal\"\n"
 
378
"       if [ \"x$type\" = \"xserver\" ]; then\n"
 
379
"       echo \"the key and pretend to be your x11vnc server.  The downside is it is\"\n"
 
380
"       else\n"
 
381
"       echo \"the key and pretend to be your VNC client.  The downside is it is\"\n"
 
382
"       fi\n"
 
383
"       echo \"inconvenient because you will have to supply the passphrase every\"\n"
 
384
"       if [ \"x$type\" = \"xserver\" ]; then\n"
 
385
"       echo \"time you start x11vnc using this key.\"\n"
 
386
"       else\n"
 
387
"       echo \"time you start the VNC viewer SSL tunnel using this key.\"\n"
 
388
"       fi\n"
 
389
"       echo \"\"\n"
 
390
"       printf \"Protect key with a passphrase?  [y]/n \"\n"
 
391
"       read x\n"
 
392
"       estr=\" *unencrypted*\"\n"
 
393
"       if [ \"x$ENCRYPT_ONLY\" != \"x\" ]; then\n"
 
394
"               target=\"$ENCRYPT_ONLY\"\n"
 
395
"       else\n"
 
396
"               target=\"$DIR/$dest.key\"\n"
 
397
"               bdir=`dirname \"$DIR/$dest.key\"`\n"
 
398
"               if [ ! -d \"$bdir\" ]; then\n"
 
399
"                       direrror \"$bdir\"\n"
 
400
"               fi\n"
 
401
"       fi\n"
 
402
"       if [ \"x$x\" != \"xn\" ]; then\n"
 
403
"               \"$OPENSSL\" rsa -in \"$target\" -des3 -out \"$target\"\n"
 
404
"               if [ $? != 0 ]; then\n"
 
405
"                       echo \"openssl 'rsa' command failed\"\n"
 
406
"                       rm -f \"$DIR/$dest.key\" \"$DIR/$dest.crt\" \"$DIR/$dest.req\"\n"
 
407
"                       exit 1\n"
 
408
"               fi\n"
 
409
"               estr=\" encrypted\"\n"
 
410
"       fi\n"
 
411
"       echo \"\"\n"
 
412
"}\n"
 
413
"\n"
 
414
"sign_key() {\n"
 
415
"       cd \"$DIR\" || exit 1\n"
 
416
"\n"
 
417
"       if [ \"x$self\" = \"x1\" ]; then\n"
 
418
"               :\n"
 
419
"       else\n"
 
420
"               if echo \"$name0\" | grep '^req:' > /dev/null; then\n"
 
421
"                       echo \"\"\n"
 
422
"                       echo \"----------------------------------------------------------------------\"\n"
 
423
"                       echo \"Your x11vnc $type certificate request is:\"\n"
 
424
"                       echo \"\"\n"
 
425
"                       echo \"        $DIR/$dest.req\"\n"
 
426
"                       echo \"\"\n"
 
427
"                       echo \"   It may be sent to an external CA for signing, afterward you can\"\n"
 
428
"                       echo \"   save the cert they send you in:\"\n"
 
429
"                       echo \"\"\n"
 
430
"                       echo \"        $DIR/$dest.crt\"\n"
 
431
"                       echo \"\"\n"
 
432
"                       echo \"Your$estr private x11vnc $type key is:\"\n"
 
433
"                       echo \"\"\n"
 
434
"                       echo \"        $DIR/$dest.key\"\n"
 
435
"                       echo \"\"\n"
 
436
"                       echo \"   You should combine it and the received cert in the file:\"\n"
 
437
"                       echo \"\"\n"
 
438
"                       echo \"        $DIR/$dest.pem\"\n"
 
439
"                       echo \"\"\n"
 
440
"                       echo \"   It will be needed by applications to identify themselves.\"\n"
 
441
"                       echo \"   This file should be kept secret.\"\n"
 
442
"                       echo \"----------------------------------------------------------------------\"\n"
 
443
"                       echo \"\"\n"
 
444
"                       printf \"Press Enter to print the $dest.req cert request to the screen: \"\n"
 
445
"                       read x\n"
 
446
"                       echo \"\"\n"
 
447
"                       cat \"$DIR/$dest.req\"\n"
 
448
"                       exit 0\n"
 
449
"               fi\n"
 
450
"               echo \"\"\n"
 
451
"               echo \"\"\n"
 
452
"               echo \"----------------------------------------------------------------------\"\n"
 
453
"               echo \"Now signing the new key with CA private key.  You will need to supply\"\n"
 
454
"               echo \"the CA key passphrase and reply \\\"y\\\" to sign and commit the key.\"\n"
 
455
"               echo \"\"\n"
 
456
"               \"$OPENSSL\" ca -config \"$cnf\" -policy policy_anything -notext \\\n"
 
457
"                       -in  \"$DIR/$dest.req\" \\\n"
 
458
"                       -out \"$DIR/$dest.crt\"\n"
 
459
"               if [ $? != 0 ]; then\n"
 
460
"                       echo \"\"\n"
 
461
"                       echo \"openssl 'ca' command failed\"\n"
 
462
"                       echo \"\"\n"
 
463
"                       echo \"  You may have a duplicate DN entry for this name in:\"\n"
 
464
"                       echo \"\"\n"
 
465
"                       echo \"          $DIR/CA/index.txt\"\n"
 
466
"                       echo \"\"\n"
 
467
"                       echo \"  remove the duplicate in that file and try again.\"\n"
 
468
"                       echo \"\"\n"
 
469
"                       rm -f \"$DIR/$dest.key\" \"$DIR/$dest.crt\" \"$DIR/$dest.req\"\n"
 
470
"                       exit 1\n"
 
471
"               fi\n"
 
472
"       fi\n"
 
473
"\n"
 
474
"       cat  \"$DIR/$dest.key\"  \"$DIR/$dest.crt\" \\\n"
 
475
"               > \"$DIR/$dest.pem\" || exit 1 \n"
 
476
"\n"
 
477
"       make_HASH \"$DIR/$dest.crt\" 0\n"
 
478
"\n"
 
479
"       rm -f \"$DIR/$dest.key\" \"$DIR/$dest.req\" || exit 1\n"
 
480
"       chmod go-rwx \"$DIR/$dest.pem\" || exit 1\n"
 
481
"\n"
 
482
"       if [ \"x$type\" = \"xserver\" -o \"x$type\" = \"xclient\" ]; then\n"
 
483
"               echo \"\"\n"
 
484
"               echo \"----------------------------------------------------------------------\"\n"
 
485
"               echo \"Your public x11vnc $type cert is:\"\n"
 
486
"               echo \"\"\n"
 
487
"               echo \"        $DIR/$dest.crt\"\n"
 
488
"               echo \"\"\n"
 
489
"               echo \"   It may be copied to other machines / applications to be used for\"\n"
 
490
"               echo \"   authentication.  However, since it is signed with the x11vnc CA\"\n"
 
491
"               echo \"   key, all the applications need is the x11vnc CA certificate.\"\n"
 
492
"               echo \"\"\n"
 
493
"               echo \"Your$estr private x11vnc $type key is:\"\n"
 
494
"               echo \"\"\n"
 
495
"               echo \"        $DIR/$dest.pem\"\n"
 
496
"               echo \"\"\n"
 
497
"               echo \"   It will be needed by applications to identify themselves.\"\n"
 
498
"               echo \"   This file should be kept secret.\"\n"
 
499
"               echo \"----------------------------------------------------------------------\"\n"
 
500
"               echo \"\"\n"
 
501
"       fi\n"
 
502
"\n"
 
503
"       printf \"Press Enter to print the $dest.crt certificate to the screen: \"\n"
 
504
"       read x\n"
 
505
"       echo \"\"\n"
 
506
"       cat \"$DIR/$dest.crt\"\n"
 
507
"}\n"
 
508
"\n"
 
509
"DIR=$BASE_DIR\n"
 
510
"if [ \"x$DIR\" = \"x\" ]; then\n"
 
511
"        DIR=\"$HOME/dotkjr_vnc/certs\"\n"
 
512
"fi\n"
 
513
"if echo \"$DIR\" | grep '^/' > /dev/null; then\n"
 
514
"       :\n"
 
515
"else\n"
 
516
"       DIR=\"`pwd`/$DIR\"\n"
 
517
"fi\n"
 
518
"\n"
 
519
"if [ \"x$HASHON\" != \"x\" ]; then\n"
 
520
"       for dir in \"$DIR/HASH\" \"$DIR/clients/HASH\"\n"
 
521
"       do\n"
 
522
"               if [ -d \"$dir\" ]; then\n"
 
523
"                       rm -rf \"$dir\"\n"
 
524
"               fi\n"
 
525
"       done\n"
 
526
"       dir=\"$DIR/HASH\"\n"
 
527
"       mkdir -p \"$dir\" || exit 1\n"
 
528
"       dir=\"$DIR/clients/HASH\"\n"
 
529
"       mkdir -p \"$dir\" || exit 1\n"
 
530
"       HASH_verbose=1\n"
 
531
"       for f in \"$DIR\"/*.crt \"$DIR\"/clients/*.crt\n"
 
532
"       do\n"
 
533
"               if [ -f \"$f\" ]; then\n"
 
534
"                       make_HASH \"$f\" 0\n"
 
535
"               fi\n"
 
536
"       done\n"
 
537
"       exit\n"
 
538
"fi\n"
 
539
"if [ \"x$HASHOFF\" != \"x\" ]; then\n"
 
540
"       dir=\"$DIR/HASH\"\n"
 
541
"       for dir in \"$DIR/HASH\" \"$DIR/clients/HASH\"\n"
 
542
"       do\n"
 
543
"               if [ -d \"$dir\" ]; then\n"
 
544
"                       for f in \"$dir\"/*\n"
 
545
"                       do\n"
 
546
"                               if [ -f \"$f\" ]; then\n"
 
547
"                                       echo \"deleting: $f\"\n"
 
548
"                                       rm -f \"$f\"\n"
 
549
"                               fi\n"
 
550
"                       done\n"
 
551
"                       rm -rf \"$dir\"\n"
 
552
"               fi\n"
 
553
"       done\n"
 
554
"       exit\n"
 
555
"fi\n"
 
556
"\n"
 
557
"PATH=/usr/bin:/bin:/usr/sbin:$PATH; export PATH\n"
 
558
"if [ \"x$OPENSSL\" = \"x\" ]; then\n"
 
559
"        OPENSSL=\"openssl\"\n"
 
560
"fi\n"
 
561
"\n"
 
562
"type \"$OPENSSL\" > /dev/null  || exit 1\n"
 
563
"\n"
 
564
"self=\"\"\n"
 
565
"if [ \"x$SELF\" != \"x\" ]; then\n"
 
566
"       self=1\n"
 
567
"elif [ \"x$1\" = \"x-self\" ]; then\n"
 
568
"       shift\n"
 
569
"       self=1\n"
 
570
"fi\n"
 
571
"\n"
 
572
"if [ \"x$TYPE\" != \"x\" ]; then\n"
 
573
"       type=\"$TYPE\"\n"
 
574
"else\n"
 
575
"       if [ \"X$1\" != \"X\" ]; then\n"
 
576
"               type=\"$1\"\n"
 
577
"               shift\n"
 
578
"       fi\n"
 
579
"fi\n"
 
580
"if [ \"x$NAME\" != \"x\" ]; then\n"
 
581
"       name=\"$NAME\"\n"
 
582
"else\n"
 
583
"       if [ \"X$1\" != \"X\" ]; then\n"
 
584
"               name=\"$1\"\n"
 
585
"               shift\n"
 
586
"       fi\n"
 
587
"fi\n"
 
588
"\n"
 
589
"if echo \"$name\" | grep '^self:' > /dev/null; then\n"
 
590
"       self=1\n"
 
591
"fi\n"
 
592
"\n"
 
593
"if [ \"x$type\" = \"xserver\" ]; then\n"
 
594
"       name0=\"$name\"\n"
 
595
"       if echo \"$name\" | grep '^-' > /dev/null; then\n"
 
596
"               :\n"
 
597
"       elif [ \"x$name\" != \"x\" ]; then\n"
 
598
"               name=\"-$name\";\n"
 
599
"       fi\n"
 
600
"       dest=\"server$name\"\n"
 
601
"elif [ \"x$type\" = \"xclient\" ]; then\n"
 
602
"       if [ \"x$name\" = \"x\" ]; then\n"
 
603
"               name=\"nobody\"\n"
 
604
"       fi\n"
 
605
"       name0=\"$name\"\n"
 
606
"       dest=\"clients/$name\"\n"
 
607
"else\n"
 
608
"       exit 1\n"
 
609
"fi\n"
 
610
"\n"
 
611
"#set -xv\n"
 
612
"\n"
 
613
"if [ \"x$INFO_ONLY\" != \"x\" ]; then\n"
 
614
"       echo \"\"\n"
 
615
"       echo \"VNC Certificate file:\"\n"
 
616
"       echo \" $INFO_ONLY\"\n"
 
617
"       echo \"\"\n"
 
618
"       \"$OPENSSL\" x509 -text -in \"$INFO_ONLY\"\n"
 
619
"       exit \n"
 
620
"elif [ \"x$DELETE_ONLY\" != \"x\" ]; then\n"
 
621
"       echo \"\"\n"
 
622
"       echo \"VNC Certificate file:\"\n"
 
623
"       echo \" $DELETE_ONLY\"\n"
 
624
"       echo \"\"\n"
 
625
"       \n"
 
626
"       base=`echo \"$DELETE_ONLY\" | sed -e 's/\\....$//'`\n"
 
627
"       for suff in crt pem key req\n"
 
628
"       do\n"
 
629
"               try=\"$base.$suff\"\n"
 
630
"               if [ -f \"$try\" ]; then\n"
 
631
"                       make_HASH \"$try\" 1\n"
 
632
"                       rm -i \"$try\"\n"
 
633
"               fi\n"
 
634
"       done\n"
 
635
"       if echo \"$base\" | grep 'CA/cacert$' > /dev/null; then\n"
 
636
"               base2=`echo \"$base\" | sed -e 's,cacert$,private/cakey,'`\n"
 
637
"       else\n"
 
638
"               echo \"\"\n"
 
639
"               exit\n"
 
640
"       fi\n"
 
641
"       echo \"\"\n"
 
642
"       for suff in crt pem key req\n"
 
643
"       do\n"
 
644
"               try=\"$base2.$suff\"\n"
 
645
"               if [ -f \"$try\" ]; then\n"
 
646
"                       make_HASH \"$try\" 1\n"
 
647
"                       rm -i \"$try\"\n"
 
648
"               fi\n"
 
649
"       done\n"
 
650
"       echo \"\"\n"
 
651
"       exit \n"
 
652
"elif [ \"x$ENCRYPT_ONLY\" != \"x\" ]; then\n"
 
653
"       if [ \"x$type\" = \"x\" ]; then\n"
 
654
"               type=\"server\"\n"
 
655
"       fi\n"
 
656
"       echo \"\"\n"
 
657
"       echo \"Key PEM file:\"\n"
 
658
"       echo \" $ENCRYPT_ONLY\"\n"
 
659
"       enc_key\n"
 
660
"       exit\n"
 
661
"fi\n"
 
662
"\n"
 
663
"if [ ! -d \"$DIR/tmp\" ]; then\n"
 
664
"       direrror \"$DIR/tmp\"\n"
 
665
"fi\n"
 
666
"bdir=`dirname \"$DIR/$dest.key\"`\n"
 
667
"if [ ! -d \"$bdir\" ]; then\n"
 
668
"       direrror \"$bdir\"\n"
 
669
"fi\n"
 
670
"if [ ! -f \"$DIR/CA/cacert.pem\" ]; then\n"
 
671
"       direrror \"$DIR/CA/cacert.pem\"\n"
 
672
"fi\n"
 
673
"\n"
 
674
"create_key\n"
 
675
"enc_key\n"
 
676
"sign_key\n"
 
677
;
 
678
 
 
679
char find_display[] = 
 
680
"#!/bin/sh\n"
 
681
"#\n"
 
682
"# Script for use in -display WAIT:cmd=FINDDISPLAY -unixpw mode.\n"
 
683
"# Attempts to find 1) DISPLAY and 2) XAUTH data for the user and\n"
 
684
"# returns them to caller.\n"
 
685
"#\n"
 
686
"# The idea is this script is run via su - user -c ... and returns\n"
 
687
"# display + xauth info to caller (x11vnc running as root or nobody).\n"
 
688
"# x11vnc then uses the info to open the display.\n"
 
689
"#\n"
 
690
"\n"
 
691
"#FIND_DISPLAY_OUTPUT=/tmp/fdo.$USER.txt\n"
 
692
"if [ \"X$FIND_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
693
"       if [ \"X$FIND_DISPLAY_EXEC\" = \"X\" ]; then\n"
 
694
"               FIND_DISPLAY_EXEC=1\n"
 
695
"               export FIND_DISPLAY_EXEC\n"
 
696
"               if [ \"X$FIND_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
697
"                       /bin/sh $0 \"$@\" 2> $FIND_DISPLAY_OUTPUT\n"
 
698
"               else\n"
 
699
"                       /bin/sh $0 \"$@\" 2> /dev/null\n"
 
700
"               fi\n"
 
701
"               exit $?\n"
 
702
"       fi\n"
 
703
"fi\n"
 
704
"\n"
 
705
"if [ \"X$FIND_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
706
"       set -xv\n"
 
707
"fi\n"
 
708
"\n"
 
709
"#env; set -xv\n"
 
710
"PATH=$PATH:/bin:/usr/bin:/usr/X11R6/bin:/usr/bin/X11:/usr/openwin/bin:/usr/ucb\n"
 
711
"export PATH\n"
 
712
"\n"
 
713
"COLUMNS=256\n"
 
714
"export COLUMNS\n"
 
715
"\n"
 
716
"# -n means no xauth, -f prescribes file to use.\n"
 
717
"showxauth=1\n"
 
718
"if [ \"X$1\" = \"X-n\" ]; then\n"
 
719
"       showxauth=\"\"\n"
 
720
"       shift\n"
 
721
"fi\n"
 
722
"if [ \"X$1\" = \"X-f\" ]; then\n"
 
723
"       shift\n"
 
724
"       if [ ! -r $1 ]; then\n"
 
725
"               echo \"\"\n"
 
726
"               exit 1\n"
 
727
"       fi\n"
 
728
"       export XAUTHORITY=\"$1\"\n"
 
729
"       shift\n"
 
730
"fi\n"
 
731
"\n"
 
732
"user=\"$1\"                    # cmd line arg takes precedence\n"
 
733
"if [ \"X$user\" = \"X\" ]; then\n"
 
734
"       user=$X11VNC_USER       # then X11VNC_USER\n"
 
735
"fi\n"
 
736
"if [ \"X$user\" = \"X\" ]; then\n"
 
737
"       user=$USER              # then USER\n"
 
738
"fi\n"
 
739
"if [ \"X$user\" = \"X\" ]; then\n"
 
740
"       user=$LOGNAME           # then LOGNAME\n"
 
741
"fi\n"
 
742
"if [ \"X$user\" = \"X\" ]; then\n"
 
743
"       user=`whoami 2>/dev/null`       # desperation whoami\n"
 
744
"fi\n"
 
745
"if [ \"X$user\" = \"X\" ]; then\n"
 
746
"       echo \"\"               # failure\n"
 
747
"       exit 1\n"
 
748
"fi\n"
 
749
"\n"
 
750
"prdpy () {\n"
 
751
"       d1=$1\n"
 
752
"       chvt0=\"\"\n"
 
753
"       if [ \"X$uname\" = \"XLinux\" ]; then\n"
 
754
"               d2=$d1\n"
 
755
"               d3=`echo \"$d2\" | sed -e 's/^.*:/:/' -e 's/\\..*$//'`\n"
 
756
"               d4=\"($d2|$d3)\"\n"
 
757
"               vt=`ps wwwwwaux | grep X | egrep -v 'startx|xinit' | egrep \" $d4 \" | egrep ' vt([789]|[1-9][0-9][0-9]*) ' | grep -v grep | head -n 1`\n"
 
758
"               if [ \"X$vt\" != \"X\" ]; then\n"
 
759
"                       vt=`echo \"$vt\" | sed -e 's/^.* vt\\([0-9][0-9]*\\) .*$/\\1/'`\n"
 
760
"                       if echo \"$vt\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
761
"                               chvt0=\",VT=$vt\"\n"
 
762
"                       fi\n"
 
763
"               else\n"
 
764
"                       vt=`ps wwwwwaux | grep X | egrep \" $d4 \" | egrep ' tty([789]|[1-9][0-9][0-9]*) ' | grep -v grep | head -n 1`\n"
 
765
"                       if [ \"X$vt\" != \"X\" ]; then\n"
 
766
"                               vt=`echo \"$vt\" | sed -e 's/^.* tty\\([0-9][0-9]*\\) .*$/\\1/'`\n"
 
767
"                               if echo \"$vt\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
768
"                                       chvt0=\",VT=$vt\"\n"
 
769
"                               fi\n"
 
770
"                       else\n"
 
771
"                               pvt=`ps wwwwwaux | grep X | egrep -v 'startx|xinit' | egrep \" $d4 \" | head -n 1 | awk '{print $2}'`\n"
 
772
"                               if [ \"X$pvt\" != \"X\" ]; then\n"
 
773
"                                       vt=`lsof -p \"$pvt\" 2>/dev/null | egrep '/dev/tty([789]|[1-9][0-9][0-9]*)$' | grep -v grep | head -n 1 | awk '{print $NF}' | sed -e 's,/dev/tty,,'`\n"
 
774
"                                       if echo \"$vt\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
775
"                                               chvt0=\",VT=$vt\"\n"
 
776
"                                       else\n"
 
777
"                                               chvt0=\",XPID=$pvt\"\n"
 
778
"                                       fi\n"
 
779
"                               fi\n"
 
780
"                       fi\n"
 
781
"               fi\n"
 
782
"       fi\n"
 
783
"       echo \"$d1$chvt0\"\n"
 
784
"}\n"
 
785
"\n"
 
786
"uname=`uname`\n"
 
787
"nsout=`netstat -an`\n"
 
788
"if [ \"X$uname\" = \"XDarwin\" ]; then\n"
 
789
"       psout=`ps aux 2>/dev/null | grep -wv PID | grep -v grep`\n"
 
790
"       pslist=`echo \"$psout\" | awk '{print $2}'`\n"
 
791
"else\n"
 
792
"       psout=`ps -ef 2>/dev/null | grep -wv PID | grep -v grep`\n"
 
793
"       pslist=`echo \"$psout\" | awk '{print $2}'`\n"
 
794
"fi\n"
 
795
"\n"
 
796
"if [ \"X$FD_XDM\" != \"X\" ]; then\n"
 
797
"       list=\"\"\n"
 
798
"       for pair in `echo \"$psout\" | grep '/X.* :[0-9][0-9]* .*-auth' | egrep -v 'startx|xinit' | sed -e 's,^.*/X.* \\(:[0-9][0-9]*\\) .* -auth \\([^ ][^ ]*\\).*$,\\1\\,\\2,' | sort -u`\n"
 
799
"       do\n"
 
800
"               da=`echo \"$pair\" | awk -F, '{print $1}'`\n"
 
801
"               xa=`echo \"$pair\" | awk -F, '{print $2}'`\n"
 
802
"               if [ -f $xa -a -r $xa ]; then\n"
 
803
"                       env XAUTHORITY=\"$xa\" xdpyinfo -display \"$da\" >/dev/null 2>&1\n"
 
804
"                       if [ $? = 0 ]; then\n"
 
805
"                               env XAUTHORITY=/dev/null xdpyinfo -display \"$da\" >/dev/null 2>&1\n"
 
806
"                               if [ $? != 0 ]; then\n"
 
807
"                                       y=`prdpy $da`\n"
 
808
"                                       echo \"DISPLAY=$y\"\n"
 
809
"                                       if [ \"X$showxauth\" != \"X\" ]; then\n"
 
810
"                                               cook=`xauth -f \"$xa\" list | head -n 1 | awk '{print $NF}'`\n"
 
811
"                                               tf=$HOME/.xat.$$\n"
 
812
"                                               rm -f $tf\n"
 
813
"                                               if [ -f $tf ]; then\n"
 
814
"                                                       exit 1\n"
 
815
"                                               fi\n"
 
816
"                                               touch $tf 2>/dev/null\n"
 
817
"                                               chmod 600 $tf 2>/dev/null\n"
 
818
"                                               if [ ! -f $tf ]; then\n"
 
819
"                                                       tf=/tmp/.xat.$$\n"
 
820
"                                                       rm -f $tf\n"
 
821
"                                                       if [ -f $tf ]; then\n"
 
822
"                                                               exit 1\n"
 
823
"                                                       fi\n"
 
824
"                                                       touch $tf 2>/dev/null\n"
 
825
"                                                       chmod 600 $tf 2>/dev/null\n"
 
826
"                                                       if [ ! -f $tf ]; then\n"
 
827
"                                                               exit 1\n"
 
828
"                                                       fi\n"
 
829
"                                               fi\n"
 
830
"                                               xauth -f $tf add \"$da\" . $cook\n"
 
831
"                                               xauth -f $tf extract - \"$da\" 2>/dev/null\n"
 
832
"                                               rm -f $tf\n"
 
833
"                                       fi\n"
 
834
"                                       exit 0\n"
 
835
"                               fi\n"
 
836
"                       fi\n"
 
837
"               fi\n"
 
838
"       done\n"
 
839
"       echo \"\"               # failure\n"
 
840
"       if [ \"X$showxauth\" != \"X\" ]; then\n"
 
841
"               echo \"\"\n"
 
842
"       fi\n"
 
843
"       exit 1\n"
 
844
"fi\n"
 
845
"\n"
 
846
"# Now try to match X DISPLAY to user:\n"
 
847
"\n"
 
848
"# who(1) output column 2:\n"
 
849
"#gone=`last $user | grep 'gone.*no.logout' | awk '{print $2}' | grep '^:' | sed -e 's,/.*,,' | tr '\\n' '|'`\n"
 
850
"#gone=\"${gone}__quite_impossible__\"\n"
 
851
"#display=`who 2>/dev/null | grep \"^${user}[   ][      ]*:[0-9]\" | egrep -v \" ($gone)\\>\" | head -n 1 \\\n"
 
852
"#    | awk '{print $2}' | sed -e 's,/.*$,,'`\n"
 
853
"poss=\"\"\n"
 
854
"list=`who 2>/dev/null | grep \"^${user}[       ][      ]*:[0-9]\" | awk '{print $2}' | sed -e 's,/.*$,,'`\n"
 
855
"list=\"$list \"`w -h \"$user\" 2>/dev/null | grep \"^${user}[  ][      ]*:[0-9]\" | awk '{print $2}' | sed -e 's,/.*$,,'`\n"
 
856
"list=\"$list \"`who 2>/dev/null | grep \"^${user}[     ]\" | awk '{print $NF}' | grep '(:[0-9]' | sed -e 's/[()]//g'`\n"
 
857
"host=`hostname 2>/dev/null | sed -e 's/\\..*$//'`\n"
 
858
"if [ \"X$X11VNC_FINDDISPLAY_SKIP_XAUTH\" = \"X\" ]; then\n"
 
859
"       list=\"$list \"`xauth list | awk '{print $1}' | grep /unix | grep \"^${host}\" | sed -e 's/^.*:/:/' | sort -n | uniq`\n"
 
860
"fi\n"
 
861
"\n"
 
862
"if [ \"X$uname\" = \"XDarwin\" ]; then\n"
 
863
"       if who 2>/dev/null | grep -i \"^${user}[        ][      ]*console[      ]\" > /dev/null; then\n"
 
864
"               echo \"DISPLAY=console\"\n"
 
865
"               if [ \"X$FIND_DISPLAY_ALL\" = \"X\" ]; then\n"
 
866
"                       if [ \"X$showxauth\" != \"X\" ]; then\n"
 
867
"                               echo \"\"\n"
 
868
"                       fi\n"
 
869
"                       exit 0\n"
 
870
"               fi\n"
 
871
"       fi\n"
 
872
"fi\n"
 
873
"\n"
 
874
"for p in $list\n"
 
875
"do\n"
 
876
"       xa=`echo \"$p\" | awk -F, '{print $2}'`\n"
 
877
"       d=`echo \"$p\" | sed -e 's/,.*$//' -e 's/://' -e 's/\\..*$//'`\n"
 
878
"       ok=\"\"\n"
 
879
"       if [ \"X$X11VNC_SKIP_DISPLAY\" != \"X\" ]; then\n"
 
880
"               mat=\"\"\n"
 
881
"               for skip in `echo $X11VNC_SKIP_DISPLAY | tr ',' '\\n'`\n"
 
882
"               do\n"
 
883
"                       if echo \"$skip\" | grep \"^:\" > /dev/null; then\n"
 
884
"                               :\n"
 
885
"                       else\n"
 
886
"                               skip=\":$skip\"\n"
 
887
"                       fi\n"
 
888
"                       if echo \"$skip\" | grep \":$d\\>\" > /dev/null; then\n"
 
889
"                               mat=1\n"
 
890
"                               break\n"
 
891
"                               \n"
 
892
"                       fi\n"
 
893
"               done\n"
 
894
"               if [ \"X$mat\" = \"X1\" ]; then\n"
 
895
"                       continue\n"
 
896
"               fi\n"
 
897
"       fi\n"
 
898
"       xd=\"/tmp/.X11-unix/X$d\"\n"
 
899
"       if [ -r \"$xd\" -o -w \"$xd\" -o -x \"$xd\" ]; then\n"
 
900
"               if echo \"$nsout\" | grep \"/tmp/.X11-unix/X$d[  ]*\\$\" > /dev/null; then\n"
 
901
"                       ok=1\n"
 
902
"               fi\n"
 
903
"       fi\n"
 
904
"       if [ \"X$ok\" = \"X\" ]; then\n"
 
905
"               if [ -f \"/tmp/.X$d-lock\" ]; then\n"
 
906
"                       pid=`cat \"/tmp/.X$d-lock\" | sed -e 's/[       ]//g'`\n"
 
907
"                       if echo \"$pid\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
908
"                               if [ \"X$uname\" = \"XLinux\" -o \"X$uname\" = \"XSunOS\" ]; then\n"
 
909
"                                       if [ -d \"/proc/$pid\" ]; then\n"
 
910
"                                               ok=1\n"
 
911
"                                       fi\n"
 
912
"                               elif echo \"$pslist\" | grep -w \"$pid\" > /dev/null; then\n"
 
913
"                                       ok=1\n"
 
914
"                               fi\n"
 
915
"                       fi\n"
 
916
"               fi\n"
 
917
"       fi\n"
 
918
"       if [ \"X$ok\" = \"X1\" ]; then\n"
 
919
"               poss=\"$poss $p\"\n"
 
920
"       fi\n"
 
921
"done\n"
 
922
"\n"
 
923
"seenvalues=\"\"\n"
 
924
"\n"
 
925
"seen() {\n"
 
926
"       v=$1\n"
 
927
"       if [ \"X$seenvalues\" != \"X\" ]; then\n"
 
928
"               for v2 in $seenvalues\n"
 
929
"               do\n"
 
930
"                       if [ \"X$v\" = \"X$v2\" ]; then\n"
 
931
"                               seenret=1\n"
 
932
"                               return\n"
 
933
"                       fi\n"
 
934
"               done\n"
 
935
"       fi\n"
 
936
"       if [ \"X$seenvalues\" = \"X\" ]; then\n"
 
937
"               seenvalues=\"$v\"\n"
 
938
"       else\n"
 
939
"               seenvalues=\"$seenvalues $v\"\n"
 
940
"       fi\n"
 
941
"       seenret=0\n"
 
942
"}\n"
 
943
"\n"
 
944
"poss=`echo \"$poss\" | sed -e 's/^ *//' -e 's/ *$//'`\n"
 
945
"\n"
 
946
"if [ \"X$X11VNC_FINDDISPLAY_SKIP_XAUTH\" != \"X\" ]; then\n"
 
947
"       if [ \"X$FIND_DISPLAY_ALL\" != \"X\" ]; then\n"
 
948
"               for p in $poss\n"
 
949
"               do\n"
 
950
"                       if [ \"X$p\" = \"X\" ]; then\n"
 
951
"                               continue\n"
 
952
"                       fi\n"
 
953
"                       seen \"$p\"\n"
 
954
"                       if [ \"X$seenret\" = \"X1\" ]; then\n"
 
955
"                               continue\n"
 
956
"                       fi\n"
 
957
"                       y=`prdpy $p`\n"
 
958
"                       echo $y\n"
 
959
"               done\n"
 
960
"               exit 0\n"
 
961
"       fi\n"
 
962
"       display=`echo \"$poss\" | tr ' ' '\\n' | head -n 1`\n"
 
963
"else\n"
 
964
"       freebie=\"\"\n"
 
965
"       for p in $poss\n"
 
966
"       do\n"
 
967
"               if [ \"X$p\" = \"X\" ]; then\n"
 
968
"                       continue\n"
 
969
"               fi\n"
 
970
"               seen \"$p\"\n"
 
971
"               if [ \"X$seenret\" = \"X1\" ]; then\n"
 
972
"                       continue\n"
 
973
"               fi\n"
 
974
"               xdpyinfo -display \"$p\" >/dev/null 2>&1\n"
 
975
"               if [ $? = 0 ]; then\n"
 
976
"                       if [ \"X$FD_TAG\" != \"X\" ]; then\n"
 
977
"                               if xprop -display \"$p\" -root -len 128 FD_TAG | grep -iv no.such.atom \\\n"
 
978
"                                   | grep \"=[         ][      ]*\\\"$FD_TAG\\\"\" > /dev/null; then\n"
 
979
"                                       :\n"
 
980
"                               else\n"
 
981
"                                       continue\n"
 
982
"                               fi\n"
 
983
"                       fi\n"
 
984
"                       # try again with no authority:\n"
 
985
"                       env XAUTHORITY=/dev/null xdpyinfo -display \"$p\" >/dev/null 2>&1\n"
 
986
"                       # 0 means got in for free... skip it.\n"
 
987
"                       if [ $? != 0 ]; then\n"
 
988
"                               # keep it\n"
 
989
"                               display=\"$p\"\n"
 
990
"                               if [ \"X$FIND_DISPLAY_ALL\" != \"X\" ]; then\n"
 
991
"                                       y=`prdpy $p`\n"
 
992
"                                       echo \"DISPLAY=$y\"\n"
 
993
"                                       continue\n"
 
994
"                               fi\n"
 
995
"                               break\n"
 
996
"                       else\n"
 
997
"                               if [ \"X$FIND_DISPLAY_ALL\" != \"X\" ]; then\n"
 
998
"                                       y=`prdpy $p`\n"
 
999
"                                       echo \"$y,NOXAUTH\"\n"
 
1000
"                                       continue\n"
 
1001
"                               fi\n"
 
1002
"                               if [ \"X$freebie\" = \"X\" ]; then\n"
 
1003
"                                       freebie=\"$p\"\n"
 
1004
"                               fi\n"
 
1005
"                       fi\n"
 
1006
"               fi\n"
 
1007
"       done\n"
 
1008
"       if [ \"X$display\" = \"X\" -a \"X$freebie\" != \"X\" ]; then\n"
 
1009
"               display=\"$freebie\"\n"
 
1010
"       fi\n"
 
1011
"fi\n"
 
1012
"\n"
 
1013
"if [ \"X$FIND_DISPLAY_ALL\" != \"X\" ]; then\n"
 
1014
"       exit\n"
 
1015
"fi\n"
 
1016
"if [ \"X$display\" = \"X\" ]; then\n"
 
1017
"       if [ \"X$FINDDISPLAY_run\" = \"X\" ]; then\n"
 
1018
"               echo \"\"               # failure\n"
 
1019
"               if [ \"X$showxauth\" != \"X\" ]; then\n"
 
1020
"                       echo \"\"\n"
 
1021
"               fi\n"
 
1022
"       fi\n"
 
1023
"       exit 1\n"
 
1024
"fi\n"
 
1025
"\n"
 
1026
"dpy2=`prdpy \"$display\"`\n"
 
1027
"\n"
 
1028
"echo \"DISPLAY=$dpy2\"\n"
 
1029
"if [ \"X$showxauth\" != \"X\" ]; then\n"
 
1030
"       xauth extract - \"$display\" 2>/dev/null\n"
 
1031
"fi\n"
 
1032
"\n"
 
1033
"exit 0\n"
 
1034
;
 
1035
 
 
1036
char create_display[] = 
 
1037
"#!/bin/sh\n"
 
1038
"\n"
 
1039
"#CREATE_DISPLAY_OUTPUT=/tmp/cdo.txt\n"
 
1040
"\n"
 
1041
"if echo \"$USER\" | egrep 'runge' > /dev/null ; then\n"
 
1042
"       CREATE_DISPLAY_OUTPUT=/tmp/cdo.$USER.txt\n"
 
1043
"       if [ -f $CREATE_DISPLAY_OUTPUT -a ! -w $CREATE_DISPLAY_OUTPUT ]; then\n"
 
1044
"               CREATE_DISPLAY_OUTPUT=$CREATE_DISPLAY_OUTPUT.$$\n"
 
1045
"       fi\n"
 
1046
"fi\n"
 
1047
"if [ \"X$CREATE_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
1048
"       if [ \"X$CREATE_DISPLAY_EXEC\" = \"X\" ]; then\n"
 
1049
"               CREATE_DISPLAY_EXEC=1\n"
 
1050
"               export CREATE_DISPLAY_EXEC\n"
 
1051
"               if [ \"X$CREATE_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
1052
"                       /bin/sh $0 \"$@\" 2> $CREATE_DISPLAY_OUTPUT\n"
 
1053
"               else\n"
 
1054
"                       /bin/sh $0 \"$@\" 2> /dev/null\n"
 
1055
"               fi\n"
 
1056
"               exit $?\n"
 
1057
"       fi\n"
 
1058
"fi\n"
 
1059
"if [ \"X$CREATE_DISPLAY_PERL_SETPGRP\" = \"X\" ]; then\n"
 
1060
"       CREATE_DISPLAY_PERL_SETPGRP=1\n"
 
1061
"       export CREATE_DISPLAY_PERL_SETPGRP\n"
 
1062
"       if type perl >/dev/null 2>&1; then\n"
 
1063
"               perl -e \"setpgrp(0,0); exec '/bin/sh $0 $*'\";\n"
 
1064
"               exit $?\n"
 
1065
"       fi\n"
 
1066
"fi\n"
 
1067
"\n"
 
1068
"\n"
 
1069
"if [ \"X$CREATE_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
1070
"       set -xv\n"
 
1071
"fi\n"
 
1072
"\n"
 
1073
"COLUMNS=256\n"
 
1074
"export COLUMNS\n"
 
1075
"\n"
 
1076
"findfree() {\n"
 
1077
"       try=20\n"
 
1078
"       n=\"\"\n"
 
1079
"       nsout=\"\"\n"
 
1080
"       if [ \"X$have_netstat\" != \"X\" ]; then\n"
 
1081
"               nsout=`$have_netstat -an`\n"
 
1082
"       fi\n"
 
1083
"       while [ $try -lt 99 ]\n"
 
1084
"       do\n"
 
1085
"               if [ ! -f \"/tmp/.X${try}-lock\" ]; then\n"
 
1086
"                       if echo \"$nsout\" | grep \"/tmp/.X11-unix/X${try}[     ]*\\$\" > /dev/null; then\n"
 
1087
"                               :\n"
 
1088
"                       else\n"
 
1089
"                               n=$try\n"
 
1090
"                               break\n"
 
1091
"                       fi\n"
 
1092
"               fi\n"
 
1093
"               try=`expr $try + 1`\n"
 
1094
"       done\n"
 
1095
"       echo \"$n\"\n"
 
1096
"}\n"
 
1097
"\n"
 
1098
"random() {\n"
 
1099
"       if [ \"X$RANDOM\" != \"X\" ]; then\n"
 
1100
"               echo \"$RANDOM\"\n"
 
1101
"       else\n"
 
1102
"               r1=`bash -c 'echo $RANDOM' 2>/dev/null`\n"
 
1103
"               if echo \"$r1\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
1104
"                       echo \"$r1\"\n"
 
1105
"               else\n"
 
1106
"                       r2=`sh -c 'echo $$; date; ps -elf' 2>&1 | sum -r 2>/dev/null | awk '{print $1}'`\n"
 
1107
"                       if echo \"$r2\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
1108
"                               echo \"$r2\"\n"
 
1109
"                       else\n"
 
1110
"                               r3=`sh -c 'echo $$'`\n"
 
1111
"                               echo \"$r3\"\n"
 
1112
"                       fi\n"
 
1113
"               fi\n"
 
1114
"       fi\n"
 
1115
"}\n"
 
1116
"\n"
 
1117
"findsession() {\n"
 
1118
"       if [ \"X$FD_PROG\" != \"X\" ]; then\n"
 
1119
"               echo \"$FD_PROG\"\n"
 
1120
"               return\n"
 
1121
"       fi\n"
 
1122
"       if [ \"X$have_gnome_session\" != \"X\" -a \"X$FD_SESS\" = \"Xgnome\" ]; then\n"
 
1123
"               echo \"$have_gnome_session\"\n"
 
1124
"               return\n"
 
1125
"       elif [ \"X$have_startkde\" != \"X\"    -a \"X$FD_SESS\" = \"Xkde\" ]; then\n"
 
1126
"               echo \"$have_startkde\"\n"
 
1127
"               return\n"
 
1128
"       elif [ \"X$have_twm\" != \"X\"         -a \"X$FD_SESS\" = \"Xtwm\" ]; then\n"
 
1129
"               echo \"$have_twm\"\n"
 
1130
"               return\n"
 
1131
"       elif [ \"X$have_fvwm2\" != \"X\"       -a \"X$FD_SESS\" = \"Xfvwm\" ]; then\n"
 
1132
"               echo \"$have_fvwm2\"\n"
 
1133
"               return\n"
 
1134
"       elif [ \"X$have_mwm\" != \"X\"         -a \"X$FD_SESS\" = \"Xmwm\" ]; then\n"
 
1135
"               echo \"$have_mwm\"\n"
 
1136
"               return\n"
 
1137
"       elif [ \"X$have_dtwm\" != \"X\"        -a \"X$FD_SESS\" = \"Xdtwm\" ]; then\n"
 
1138
"               echo \"$have_dtwm\"\n"
 
1139
"               return\n"
 
1140
"       elif [ \"X$have_windowmaker\" != \"X\" -a \"X$FD_SESS\" = \"Xwmaker\" ]; then\n"
 
1141
"               echo \"$have_windowmaker\"\n"
 
1142
"               return\n"
 
1143
"       elif [ \"X$have_wmaker\" != \"X\"      -a \"X$FD_SESS\" = \"Xwmaker\" ]; then\n"
 
1144
"               echo \"$have_wmaker\"\n"
 
1145
"               return\n"
 
1146
"       elif [ \"X$have_startxfce\" != \"X\" -a \"X$FD_SESS\" = \"Xxfce\" ]; then\n"
 
1147
"               echo \"$have_startxfce\"\n"
 
1148
"               return\n"
 
1149
"       elif [ \"X$have_startxfce4\" != \"X\" -a \"X$FD_SESS\" = \"Xxfce\" ]; then\n"
 
1150
"               echo \"$have_startxfce4\"\n"
 
1151
"               return\n"
 
1152
"       elif [ \"X$have_enlightenment\" != \"X\" -a \"X$FD_SESS\" = \"Xenlightenment\" ]; then\n"
 
1153
"               echo \"$have_enlightenment\"\n"
 
1154
"               return\n"
 
1155
"       elif [ \"X$have_Xsession\" != \"X\"    -a \"X$FD_SESS\" = \"XXsession\" ]; then\n"
 
1156
"               echo \"$have_Xsession\"\n"
 
1157
"               return\n"
 
1158
"       elif [ \"X$have_Xsession\" != \"X\"    -a \"X$FD_SESS\" = \"Xcde\" ]; then\n"
 
1159
"               echo \"$have_Xsession\"\n"
 
1160
"               return\n"
 
1161
"       elif [ \"X$have_xterm\" != \"X\"       -a \"X$FD_SESS\" = \"Xfailsafe\" ]; then\n"
 
1162
"               echo \"$have_xterm\"\n"
 
1163
"               return\n"
 
1164
"       elif [ \"X$have_xterm\" != \"X\"       -a \"X$FD_SESS\" = \"Xxterm\" ]; then\n"
 
1165
"               echo \"$have_xterm\"\n"
 
1166
"               return\n"
 
1167
"       fi\n"
 
1168
"       if type csh > /dev/null 2>&1; then\n"
 
1169
"               home=`csh -f -c \"echo ~$USER\"`\n"
 
1170
"       elif type tcsh > /dev/null 2>&1; then\n"
 
1171
"               home=`tcsh -f -c \"echo ~$USER\"`\n"
 
1172
"       elif type bash > /dev/null 2>&1; then\n"
 
1173
"               home=`bash -c \"echo ~$USER\"`\n"
 
1174
"       else\n"
 
1175
"               home=\"\"\n"
 
1176
"       fi\n"
 
1177
"       if [ \"X$home\" = \"X\" -o ! -d \"$home\" ]; then\n"
 
1178
"               if [ \"X$have_root\" != \"X\" -a \"X$USER\" != \"Xroot\" ]; then\n"
 
1179
"                       home=`su - $USER -c 'echo $HOME'`\n"
 
1180
"               fi\n"
 
1181
"       fi\n"
 
1182
"       if [ \"X$home\" = \"X\" -o ! -d \"$home\" ]; then\n"
 
1183
"               if [ -d \"/home/$USER\" ]; then\n"
 
1184
"                       home=\"/home/$USER\"\n"
 
1185
"               else \n"
 
1186
"                       home=__noplace__\n"
 
1187
"               fi\n"
 
1188
"       fi\n"
 
1189
"       if [ -f \"$home/.dmrc\" ]; then\n"
 
1190
"               if [ \"X$have_startkde\" != \"X\" ]; then\n"
 
1191
"                       if egrep -i 'Session=(default|kde)' \"$home/.dmrc\" > /dev/null; then\n"
 
1192
"                               echo \"$have_startkde\"\n"
 
1193
"                               return\n"
 
1194
"                       fi\n"
 
1195
"               fi\n"
 
1196
"               if [ \"X$have_gnome_session\" != \"X\" ]; then\n"
 
1197
"                       if egrep -i 'Session=gnome' \"$home/.dmrc\" > /dev/null; then\n"
 
1198
"                               echo \"$have_gnome_session\"\n"
 
1199
"                               return\n"
 
1200
"                       fi\n"
 
1201
"               fi\n"
 
1202
"               for wm in blackbox fvwm icewm wmw openbox twm mwm windowmaker enlightenment metacity startxfce4 startxfce\n"
 
1203
"               do\n"
 
1204
"                       eval \"have=\\$have_$wm\"\n"
 
1205
"                       if [ \"X$have\" = \"X\" ]; then\n"
 
1206
"                               continue\n"
 
1207
"                       fi\n"
 
1208
"                       if grep -i \"Session=$wm\" \"$home/.dmrc\" > /dev/null; then\n"
 
1209
"                               echo \"$have\"\n"
 
1210
"                               return\n"
 
1211
"                       fi\n"
 
1212
"                       \n"
 
1213
"               done\n"
 
1214
"       fi\n"
 
1215
"       if [ -f \"$home/.xsession\" ]; then\n"
 
1216
"               echo \"$home/.xsession\"\n"
 
1217
"               return\n"
 
1218
"       elif [ -f \"$home/.xinitrc\" ]; then\n"
 
1219
"               echo \"$home/.xinitrc\"\n"
 
1220
"               return\n"
 
1221
"       fi\n"
 
1222
"       if [ \"X$have_xterm\" != \"X\" ]; then\n"
 
1223
"               echo $have_xterm\n"
 
1224
"               return\n"
 
1225
"       else\n"
 
1226
"               echo \".xinitrc\"\n"
 
1227
"       fi\n"
 
1228
"}\n"
 
1229
"\n"
 
1230
"check_redir_services() {\n"
 
1231
"       redir_daemon=\"\"\n"
 
1232
"       need_env=\"\"\n"
 
1233
"       if echo \"$sess\" | grep '^env ' > /dev/null; then\n"
 
1234
"               sess=`echo \"$sess\" | sed -e 's/^env //'`\n"
 
1235
"               need_env=1\n"
 
1236
"       fi\n"
 
1237
"       if [ \"X$FD_ESD\" != \"X\" -a \"X$have_esddsp\" != \"X\" ]; then\n"
 
1238
"               if echo \"$FD_ESD\" | grep '^DAEMON-' > /dev/null; then\n"
 
1239
"                       FD_ESD=`echo \"$FD_ESD\" | sed -e 's/DAEMON-//'`\n"
 
1240
"                       rport=`echo \"$FD_ESD\" | sed -e 's/^.*://'`\n"
 
1241
"                       dport=`expr $rport + 1`\n"
 
1242
"                       dport=`freeport $dport`\n"
 
1243
"                       FD_ESD=$dport\n"
 
1244
"                       redir_daemon=\"$redir_daemon,TS_ESD_REDIR:$dport:$rport\"\n"
 
1245
"               fi\n"
 
1246
"               if echo \"$FD_ESD\" | grep ':' > /dev/null; then\n"
 
1247
"                       :\n"
 
1248
"               else\n"
 
1249
"                       FD_ESD=\"localhost:$FD_ESD\"\n"
 
1250
"               fi\n"
 
1251
"               sess=\"ESPEAKER=$FD_ESD $have_esddsp -s $FD_ESD $sess\"\n"
 
1252
"               need_env=1\n"
 
1253
"       fi\n"
 
1254
"       if [ \"X$FD_CUPS\" != \"X\" ]; then\n"
 
1255
"               if echo \"$FD_CUPS\" | grep '^DAEMON-' > /dev/null; then\n"
 
1256
"                       FD_CUPS=`echo \"$FD_CUPS\" | sed -e 's/DAEMON-//'`\n"
 
1257
"                       rport=`echo \"$FD_CUPS\" | sed -e 's/^.*://'`\n"
 
1258
"                       dport=`expr $rport + 1`\n"
 
1259
"                       dport=`freeport $dport`\n"
 
1260
"                       FD_CUPS=$dport\n"
 
1261
"                       redir_daemon=\"$redir_daemon,TS_CUPS_REDIR:$dport:$rport\"\n"
 
1262
"               fi\n"
 
1263
"               if echo \"$FD_CUPS\" | grep ':' > /dev/null; then\n"
 
1264
"                       :\n"
 
1265
"               else\n"
 
1266
"                       FD_CUPS=\"localhost:$FD_CUPS\"\n"
 
1267
"               fi\n"
 
1268
"               csr=`echo \"$FD_CUPS\" | awk -F: '{print $1}'`\n"
 
1269
"               ipp=`echo \"$FD_CUPS\" | awk -F: '{print $2}'`\n"
 
1270
"               old=`strings -a /usr/sbin/cupsd 2>/dev/null | grep 'CUPS.v1\\.[01]'`\n"
 
1271
"               if [ \"X$old\" != \"X\" ]; then\n"
 
1272
"                       FD_CUPS=`echo \"$FD_CUPS\" | sed -e 's/:.*$//'`\n"
 
1273
"               fi\n"
 
1274
"               sess=\"CUPS_SERVER=$FD_CUPS IPP_PORT=$ipp $sess\"\n"
 
1275
"               need_env=1\n"
 
1276
"       fi\n"
 
1277
"\n"
 
1278
"       if [ \"X$FD_SMB\" != \"X\" ]; then\n"
 
1279
"               if echo \"$FD_SMB\" | grep '^DAEMON-' > /dev/null; then\n"
 
1280
"                       FD_SMB=`echo \"$FD_SMB\" | sed -e 's/DAEMON-//'`\n"
 
1281
"                       rport=`echo \"$FD_SMB\" | sed -e 's/^.*://'`\n"
 
1282
"                       dport=`expr $rport + 1`\n"
 
1283
"                       dport=`freeport $dport`\n"
 
1284
"                       FD_SMB=$dport\n"
 
1285
"                       redir_daemon=\"$redir_daemon,TS_SMB_REDIR:$dport:$rport\"\n"
 
1286
"               fi\n"
 
1287
"               if echo \"$FD_SMB\" | grep ':' > /dev/null; then\n"
 
1288
"                       :\n"
 
1289
"               else\n"
 
1290
"                       FD_SMB=\"localhost:$FD_SMB\"\n"
 
1291
"               fi\n"
 
1292
"               smh=`echo \"$FD_SMB\" | awk -F: '{print $1}'`\n"
 
1293
"               smp=`echo \"$FD_SMB\" | awk -F: '{print $2}'`\n"
 
1294
"               if [ \"X$smh\" = \"X\" ]; then\n"
 
1295
"                       smh=localhost\n"
 
1296
"               fi\n"
 
1297
"               sess=\"SMB_SERVER=$FD_SMB SMB_HOST=$smh SMB_PORT=$smp $sess\"\n"
 
1298
"               need_env=1\n"
 
1299
"       fi\n"
 
1300
"\n"
 
1301
"       if [ \"X$FD_NAS\" != \"X\" ]; then\n"
 
1302
"               if echo \"$FD_NAS\" | grep '^DAEMON-' > /dev/null; then\n"
 
1303
"                       FD_NAS=`echo \"$FD_NAS\" | sed -e 's/DAEMON-//'`\n"
 
1304
"                       rport=`echo \"$FD_NAS\" | sed -e 's/^.*://'`\n"
 
1305
"                       dport=`expr $rport + 1`\n"
 
1306
"                       dport=`freeport $dport`\n"
 
1307
"                       FD_NAS=$dport\n"
 
1308
"                       redir_daemon=\"$redir_daemon,TS_NAS_REDIR:$dport:$rport\"\n"
 
1309
"               fi\n"
 
1310
"               if echo \"$FD_NAS\" | grep ':' > /dev/null; then\n"
 
1311
"                       :\n"
 
1312
"               else\n"
 
1313
"                       FD_NAS=\"tcp/localhost:$FD_NAS\"\n"
 
1314
"               fi\n"
 
1315
"               sess=\"AUDIOSERVER=$FD_NAS $sess\"\n"
 
1316
"               need_env=1\n"
 
1317
"       fi\n"
 
1318
"       if [ \"X$need_env\" != \"X\" ]; then\n"
 
1319
"               sess=\"env $sess\"\n"
 
1320
"       fi\n"
 
1321
"       redir_daemon=`echo \"$redir_daemon\" | sed -e 's/^,*//'`\n"
 
1322
"}\n"
 
1323
"\n"
 
1324
"server() {\n"
 
1325
"       authfile=`auth`\n"
 
1326
"       sess=`findsession`\n"
 
1327
"       DISPLAY=:$N\n"
 
1328
"       export DISPLAY\n"
 
1329
"       stmp=\"\"\n"
 
1330
"       if [ \"X$have_root\" != \"X\" -a \"X$USER\" != \"Xroot\" ]; then\n"
 
1331
"               sess=\"env DISPLAY=:$N $sess\"\n"
 
1332
"       fi\n"
 
1333
"\n"
 
1334
"       redir_daemon=\"\"\n"
 
1335
"       check_redir_services\n"
 
1336
"\n"
 
1337
"       rmf=\"/nosuch\"\n"
 
1338
"       if echo \"$sess\" | grep '[     ]' > /dev/null; then\n"
 
1339
"               stmp=/tmp/.cd$$`random`\n"
 
1340
"               rm -f $stmp\n"
 
1341
"               if [ -f $stmp ]; then\n"
 
1342
"                       exit 1\n"
 
1343
"               fi\n"
 
1344
"               touch $stmp\n"
 
1345
"               chmod 755 $stmp || exit 1\n"
 
1346
"               echo \"#!/bin/sh\" > $stmp\n"
 
1347
"               echo \"$sess\"   >> $stmp\n"
 
1348
"               echo \"sleep 1\"   >> $stmp\n"
 
1349
"               echo \"rm -f $stmp\" >> $stmp\n"
 
1350
"               sess=$stmp\n"
 
1351
"               rmf=\"$stmp\"\n"
 
1352
"       fi\n"
 
1353
"       if [ \"X$have_root\" != \"X\" -a \"X$USER\" != \"Xroot\" ]; then\n"
 
1354
"               ctmp=/tmp/.xat$$`random`\n"
 
1355
"               rm -f $ctmp\n"
 
1356
"               if [ -f $ctmp ]; then\n"
 
1357
"                       exit 1\n"
 
1358
"               fi\n"
 
1359
"               touch $ctmp\n"
 
1360
"               chmod 644 $ctmp || exit 1\n"
 
1361
"               $have_xauth -f $authfile nextract - :$N > $ctmp\n"
 
1362
"               su - $USER -c \"$have_xauth nmerge - < $ctmp\" 1>&2\n"
 
1363
"               $have_xauth -f $authfile nextract - `hostname`:$N > $ctmp\n"
 
1364
"               su - $USER -c \"$have_xauth nmerge - < $ctmp\" 1>&2\n"
 
1365
"               rm -f $ctmp\n"
 
1366
"               XAUTHORITY=$authfile\n"
 
1367
"               export XAUTHORITY\n"
 
1368
"               sess=\"/bin/su - $USER -c $sess\"\n"
 
1369
"       else\n"
 
1370
"               $have_xauth -f $authfile nextract - :$N | $have_xauth nmerge -\n"
 
1371
"               $have_xauth -f $authfile nextract - `hostname`:$N | $have_xauth nmerge -\n"
 
1372
"       fi\n"
 
1373
"\n"
 
1374
"       result=0\n"
 
1375
"       #ns=4\n"
 
1376
"       ns=0\n"
 
1377
"       ns2=1\n"
 
1378
"       #if uname | grep SunOS > /dev/null; then\n"
 
1379
"       #       ns=2\n"
 
1380
"       #fi\n"
 
1381
"\n"
 
1382
"       if [ \"X$use_xdmcp_query\" = \"X1\" ]; then\n"
 
1383
"               # we cannot use -nolisten tcp\n"
 
1384
"               echo \"$* -once -query localhost $FD_OPTS\" 1>&2\n"
 
1385
"               if [ \"X$have_root\" != \"X\" ]; then\n"
 
1386
"                       $have_nohup $* -once -query localhost $FD_OPTS 1>&2 &\n"
 
1387
"               else\n"
 
1388
"                       if [ \"X$ns\" = \"X0\" ]; then\n"
 
1389
"                               $have_nohup sh -c \"$* -once -query localhost -auth $authfile $FD_OPTS\" 1>&2 &\n"
 
1390
"                       else\n"
 
1391
"                               $have_nohup sh -c \"(sleep $ns; $* -once -query localhost -auth $authfile $FD_OPTS)\" 1>&2 &\n"
 
1392
"                               #result=1\n"
 
1393
"                       fi\n"
 
1394
"               fi\n"
 
1395
"               pid=$!\n"
 
1396
"               sleep 10\n"
 
1397
"       elif [ \"X$have_startx\" != \"X\" -o \"X$have_xinit\" != \"X\" ]; then\n"
 
1398
"               if [ \"X$have_startx\" != \"X\" ]; then\n"
 
1399
"                       sxcmd=$have_startx\n"
 
1400
"               else\n"
 
1401
"                       sxcmd=$have_xinit\n"
 
1402
"               fi\n"
 
1403
"               echo \"$sxcmd $sess -- $* -nolisten tcp -auth $authfile $FD_OPTS\" 1>&2\n"
 
1404
"               if [ \"X$have_root\" != \"X\" ]; then\n"
 
1405
"                       $sxcmd $sess -- $* -nolisten tcp -auth $authfile $FD_OPTS 1>&2 &\n"
 
1406
"               else\n"
 
1407
"                       if [ \"X$ns\" = \"X0\" ]; then\n"
 
1408
"                               $have_nohup sh -c \"$sxcmd $sess -- $* -nolisten tcp -auth $authfile $FD_OPTS\" 1>&2 &\n"
 
1409
"                       else\n"
 
1410
"                               # Why did we ever sleep before starting the server??\n"
 
1411
"                               $have_nohup sh -c \"(sleep $ns; $sxcmd $sess -- $* -nolisten tcp -auth $authfile $FD_OPTS)\" 1>&2 &\n"
 
1412
"                               #result=1\n"
 
1413
"                       fi\n"
 
1414
"               fi\n"
 
1415
"               pid=$!\n"
 
1416
"       else\n"
 
1417
"               # need to emulate startx/xinit ourselves...\n"
 
1418
"               echo \"$* -nolisten tcp -auth $authfile $FD_OPTS\" 1>&2\n"
 
1419
"               if [ \"X$have_root\" != \"X\" ]; then\n"
 
1420
"                       $have_nohup $* -nolisten tcp -auth $authfile $FD_OPTS 1>&2 &\n"
 
1421
"                       pid=$!\n"
 
1422
"                       sleep 3\n"
 
1423
"                       $have_nohup $sess 1>&2 &\n"
 
1424
"               else\n"
 
1425
"                       if [ \"X$ns\" = \"X0\" ]; then\n"
 
1426
"                               $have_nohup sh -c \"$* -nolisten tcp -auth $authfile $FD_OPTS\" 1>&2 &\n"
 
1427
"                       else\n"
 
1428
"                               $have_nohup sh -c \"(sleep $ns; $* -nolisten tcp -auth $authfile $FD_OPTS)\" 1>&2 &\n"
 
1429
"                               #result=1\n"
 
1430
"                       fi\n"
 
1431
"                       pid=$!\n"
 
1432
"                       sleep 3\n"
 
1433
"                       $have_nohup sh -c \"(sleep 3; $sess)\" 1>&2 &\n"
 
1434
"               fi\n"
 
1435
"       fi\n"
 
1436
"       if uname | grep SunOS > /dev/null; then\n"
 
1437
"               $have_nohup sh -c \"(sleep 60; rm -f $rmf)\" 1>&2 &\n"
 
1438
"       else\n"
 
1439
"               $have_nohup sh -c \"(sleep 60; rm -f $rmf $authfile)\" 1>&2 &\n"
 
1440
"       fi\n"
 
1441
"\n"
 
1442
"       t=0\n"
 
1443
"       tmax=5\n"
 
1444
"       while [ $t -lt $tmax ]\n"
 
1445
"       do\n"
 
1446
"               t=`expr $t + 1`\n"
 
1447
"               sleep $ns2\n"
 
1448
"               pid2=`head -n 1 \"/tmp/.X$N-lock\" 2>/dev/null | sed -e 's/[    ]//g' | grep '^[0-9][0-9]*$'`\n"
 
1449
"               if [ \"X$pid2\" = \"X\" ]; then\n"
 
1450
"                       pid2=9999999\n"
 
1451
"               fi\n"
 
1452
"               if [ \"X$result\" = \"X1\" ]; then\n"
 
1453
"                       break\n"
 
1454
"               elif [ -d /proc/$pid2 ]; then\n"
 
1455
"                       result=1\n"
 
1456
"                       break\n"
 
1457
"               elif kill -0 $pid2 2>/dev/null; then\n"
 
1458
"                       result=1\n"
 
1459
"                       break\n"
 
1460
"               elif [ -d /proc/$pid ]; then\n"
 
1461
"                       result=1\n"
 
1462
"                       break\n"
 
1463
"               elif kill -0 $pid 2>/dev/null; then\n"
 
1464
"                       result=1\n"
 
1465
"                       break\n"
 
1466
"               else\n"
 
1467
"                       result=0\n"
 
1468
"               fi\n"
 
1469
"               if [ \"X$have_netstat\" != \"X\" ]; then\n"
 
1470
"                       if $have_netstat -an | grep \"/tmp/.X11-unix/X$N\\$\" > /dev/null; then\n"
 
1471
"                               result=1\n"
 
1472
"                       fi\n"
 
1473
"               fi\n"
 
1474
"       done\n"
 
1475
"\n"
 
1476
"#      if [ \"X$result\" = \"X1\" ]; then\n"
 
1477
"#              if [ \"X$use_xdmcp_query\" = \"X0\" -a \"X$have_xdpyinfo\" != \"X\" ]; then\n"
 
1478
"#                      ok=0\n"
 
1479
"#                      for t in 1 2 3 4\n"
 
1480
"#                      do\n"
 
1481
"#                              $have_xdpyinfo >/dev/null 2>&1\n"
 
1482
"#                              if [ $? != 0 ]; then\n"
 
1483
"#                                      sleep 1\n"
 
1484
"#                              else\n"
 
1485
"#                                      ok=1\n"
 
1486
"#                                      break;\n"
 
1487
"#                              fi\n"
 
1488
"#                      done\n"
 
1489
"#                      if [ \"X$ok\" = \"X0\" ]; then\n"
 
1490
"#                              result=0\n"
 
1491
"#                      fi\n"
 
1492
"#              fi\n"
 
1493
"#      fi\n"
 
1494
"\n"
 
1495
"       if [ \"X$redir_daemon\" != \"X\" -a \"X$result\" = \"X1\" ]; then\n"
 
1496
"               redir_daemon=`echo \"$redir_daemon\" | sed -e 's|[^A-z0-9:,/]||g'`\n"
 
1497
"               xprog=$X11VNC_PROG\n"
 
1498
"               if [ \"X$xprog\" = \"X\" ]; then\n"
 
1499
"                       xprog=x11vnc\n"
 
1500
"               fi\n"
 
1501
"               $have_nohup sh -c \"$xprog -sleepin 10 -auth $authfile -tsd $redir_daemon\" 2>.tsd.log.$USER 1>&2 &\n"
 
1502
"       fi\n"
 
1503
"}\n"
 
1504
"\n"
 
1505
"try_X() {\n"
 
1506
"       if [ \"X$use_xdmcp_query\" = \"X1\" ]; then\n"
 
1507
"               if [ \"X$have_X\" != \"X\" ]; then\n"
 
1508
"                       server $have_X :$N\n"
 
1509
"               elif [ \"X$have_Xorg\" != \"X\" ]; then\n"
 
1510
"                       server $have_Xorg :$N\n"
 
1511
"               elif [ \"X$have_XFree86\" != \"X\" ]; then\n"
 
1512
"                       server $have_XFree86 :$N\n"
 
1513
"               elif [ \"X$have_Xsun\" != \"X\" ]; then\n"
 
1514
"                       server $have_Xsun :$N\n"
 
1515
"               fi\n"
 
1516
"       elif [ \"X$have_xinit\" != \"X\" ]; then\n"
 
1517
"               save_have_startx=$have_startx\n"
 
1518
"               have_startx=\"\"\n"
 
1519
"               server :$N\n"
 
1520
"               have_startx=$save_have_startx\n"
 
1521
"       else\n"
 
1522
"               server :$N\n"
 
1523
"       fi\n"
 
1524
"}\n"
 
1525
"\n"
 
1526
"try_Xdummy() {\n"
 
1527
"       if [ \"X$have_Xdummy\" = \"X\" ]; then\n"
 
1528
"               return\n"
 
1529
"       fi\n"
 
1530
"       if [ \"X$FD_XDUMMY_NOROOT\" != \"X\" ]; then\n"
 
1531
"               :\n"
 
1532
"       elif [ \"X$have_root\" = \"X\" ]; then\n"
 
1533
"               return\n"
 
1534
"       fi\n"
 
1535
"\n"
 
1536
"       server $have_Xdummy :$N -geometry $geom -depth $depth\n"
 
1537
"}\n"
 
1538
"\n"
 
1539
"try_Xvnc() {\n"
 
1540
"       if [ \"X$have_Xvnc\" = \"X\" ]; then\n"
 
1541
"               return\n"
 
1542
"       fi\n"
 
1543
"\n"
 
1544
"       server $have_Xvnc :$N -geometry $geom -depth $depth\n"
 
1545
"}\n"
 
1546
"\n"
 
1547
"try_Xsrv() {\n"
 
1548
"       if [ \"X$FD_XSRV\" = \"X\" ]; then\n"
 
1549
"               return\n"
 
1550
"       fi\n"
 
1551
"\n"
 
1552
"       server $FD_XSRV :$N -geometry $geom -depth $depth\n"
 
1553
"}\n"
 
1554
"\n"
 
1555
"\n"
 
1556
"try_Xvfb() {\n"
 
1557
"       if [ \"X$have_Xvfb\" = \"X\" ]; then\n"
 
1558
"               return\n"
 
1559
"       fi\n"
 
1560
"\n"
 
1561
"       sarg=\"-screen\"\n"
 
1562
"       if uname | grep SunOS > /dev/null; then\n"
 
1563
"               if grep /usr/openwin/bin/Xsun $have_Xvfb > /dev/null; then\n"
 
1564
"                       sarg=\"screen\"\n"
 
1565
"               fi\n"
 
1566
"       fi\n"
 
1567
"       # remember to put server args after sarg ... to work on Solaris 9 and 10.\n"
 
1568
"       if [ $depth -ge 16 ]; then\n"
 
1569
"               server $have_Xvfb :$N $sarg 0 ${geom}x${depth} +kb -cc 4\n"
 
1570
"       else\n"
 
1571
"               server $have_Xvfb :$N $sarg 0 ${geom}x${depth} +kb\n"
 
1572
"       fi\n"
 
1573
"\n"
 
1574
"       if [ \"X$result\" = \"X1\" -a \"X$have_xmodmap\" != \"X\" ]; then\n"
 
1575
"               if [ \"X$have_root\" = \"X\" ]; then\n"
 
1576
"                   $have_nohup sh -c \"(\n"
 
1577
"                       sleep 10;\n"
 
1578
"                       $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
 
1579
"                               -e 'add Shift = Shift_L Shift_R' \\\n"
 
1580
"                               -e 'keycode any = Control_R' \\\n"
 
1581
"                               -e 'add Control = Control_L Control_R' \\\n"
 
1582
"                               -e 'keycode any = Alt_L' \\\n"
 
1583
"                               -e 'keycode any = Alt_R' \\\n"
 
1584
"                               -e 'keycode any = Meta_L' \\\n"
 
1585
"                               -e 'clear Mod1' \\\n"
 
1586
"                               -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
 
1587
"                       if uname | grep SunOS > /dev/null; then\n"
 
1588
"                               for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
 
1589
"                               do\n"
 
1590
"                                       if $have_xmodmap -pk | grep -w \\$sym > /dev/null; then\n"
 
1591
"                                               :\n"
 
1592
"                                       else\n"
 
1593
"                                               $have_xmodmap -e \\\"keycode any = \\$sym\\\"\n"
 
1594
"                                       fi\n"
 
1595
"                               done\n"
 
1596
"                       fi\n"
 
1597
"\n"
 
1598
"                   )\" 1>&2 &\n"
 
1599
"               else\n"
 
1600
"                   (\n"
 
1601
"                       sleep 6;\n"
 
1602
"                       $have_xmodmap -display :$N -e 'keycode any = Shift_R' \\\n"
 
1603
"                               -e 'add Shift = Shift_L Shift_R' \\\n"
 
1604
"                               -e 'keycode any = Control_R' \\\n"
 
1605
"                               -e 'add Control = Control_L Control_R' \\\n"
 
1606
"                               -e 'keycode any = Alt_L' \\\n"
 
1607
"                               -e 'keycode any = Alt_R' \\\n"
 
1608
"                               -e 'keycode any = Meta_L' \\\n"
 
1609
"                               -e 'clear Mod1' \\\n"
 
1610
"                               -e 'add Mod1 = Alt_L Alt_R Meta_L';\n"
 
1611
"                       # this is to workaround a bug with JDS Solaris 10 gnome-session-daemon.\n"
 
1612
"                       if uname | grep SunOS > /dev/null; then\n"
 
1613
"                               for sym in SunAudioMute SunAudioLowerVolume SunAudioRaiseVolume\n"
 
1614
"                               do\n"
 
1615
"                                       if $have_xmodmap -pk | grep -w $sym > /dev/null; then\n"
 
1616
"                                               :\n"
 
1617
"                                       else\n"
 
1618
"                                               $have_xmodmap -e \"keycode any = $sym\"\n"
 
1619
"                                       fi\n"
 
1620
"                               done\n"
 
1621
"                       fi\n"
 
1622
"                   ) 1>&2 &\n"
 
1623
"               fi\n"
 
1624
"       fi\n"
 
1625
"}\n"
 
1626
"\n"
 
1627
"cookie() {\n"
 
1628
"       cookie=\"\"\n"
 
1629
"       if [ \"X$have_mcookie\" != \"X\" ]; then\n"
 
1630
"               cookie=`mcookie`\n"
 
1631
"       elif [ \"X$have_md5sum\" != \"X\" ]; then\n"
 
1632
"               if [ -c /dev/urandom ]; then\n"
 
1633
"                       cookie=`dd if=/dev/urandom count=32 2>/dev/null | md5sum | awk '{print $1}'`\n"
 
1634
"               elif [ -c /dev/random ]; then\n"
 
1635
"                       cookie=`dd if=/dev/random count=32 2>/dev/null | md5sum | awk '{print $1}'`\n"
 
1636
"               fi\n"
 
1637
"               if [ \"X$cookie\" = \"X\" ]; then\n"
 
1638
"                       r=`random`\n"
 
1639
"                       cookie=`(echo $r; date; uptime; ps -ealf 2>&1) | md5sum | awk '{print $1}'`\n"
 
1640
"               fi\n"
 
1641
"       elif [ \"X$have_xauth\" != \"X\" ]; then\n"
 
1642
"               if uname | grep SunOS > /dev/null; then\n"
 
1643
"                       cookie=`$have_xauth list | awk '{print $NF}' | tail -1`\n"
 
1644
"               else\n"
 
1645
"                       cookie=`$have_xauth list | awk '{print $NF}' | tail -n 1`\n"
 
1646
"               fi\n"
 
1647
"       fi\n"
 
1648
"       if [ \"X$cookie\" = \"X\" ]; then\n"
 
1649
"               # oh well..\n"
 
1650
"               for k in 1 2 3 4\n"
 
1651
"               do\n"
 
1652
"                       r=`random`\n"
 
1653
"                       cookie=$cookie`printf \"%08x\" \"${r}$$\"`\n"
 
1654
"               done\n"
 
1655
"       fi\n"
 
1656
"       echo \"$cookie\"\n"
 
1657
"}\n"
 
1658
"\n"
 
1659
"auth() {\n"
 
1660
"       if [ \"X$have_xauth\" = \"X\" ]; then\n"
 
1661
"               exit 1\n"
 
1662
"       fi\n"
 
1663
"       tmp=/tmp/.xas$$`random`\n"
 
1664
"       rm -f $tmp\n"
 
1665
"       if [ -f $tmp ]; then\n"
 
1666
"               exit 1\n"
 
1667
"       fi\n"
 
1668
"       touch $tmp\n"
 
1669
"       chmod 600 $tmp || exit 1\n"
 
1670
"       if [ ! -f $tmp ]; then\n"
 
1671
"               exit 1\n"
 
1672
"       fi\n"
 
1673
"       cook=`cookie`\n"
 
1674
"       $have_xauth -f $tmp add :$N . $cook  1>&2\n"
 
1675
"       $have_xauth -f $tmp add `hostname`:$N . $cook  1>&2\n"
 
1676
"       echo \"$tmp\"\n"
 
1677
"}\n"
 
1678
"\n"
 
1679
"freeport() {\n"
 
1680
"       base=$1\n"
 
1681
"       if [ \"X$have_uname\" != \"X\" -a \"X$have_netstat\" != \"X\" ]; then\n"
 
1682
"               inuse=\"\"\n"
 
1683
"               if $have_uname | grep Linux > /dev/null; then\n"
 
1684
"                       inuse=`$have_netstat -ant | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*://'`\n"
 
1685
"               elif $have_uname | grep SunOS > /dev/null; then\n"
 
1686
"                       inuse=`$have_netstat -an -f inet -P tcp | grep LISTEN | awk '{print $1}' | sed 's/^.*\\.//'`\n"
 
1687
"               elif $have_uname | grep -i bsd > /dev/null; then\n"
 
1688
"                       inuse=`$have_netstat -ant -f inet | grep LISTEN | awk '{print $4}' | sed 's/^.*\\.//'`\n"
 
1689
"               # add others...\n"
 
1690
"               fi\n"
 
1691
"       fi\n"
 
1692
"       i=0\n"
 
1693
"       ok=\"\"\n"
 
1694
"       while [ $i -lt 500 ]\n"
 
1695
"       do\n"
 
1696
"               tryp=`expr $base + $i`\n"
 
1697
"               if echo \"$inuse\" | grep -w \"$tryp\" > /dev/null; then\n"
 
1698
"                       :\n"
 
1699
"               elif echo \"$palloc\" | tr ' ' '\\n' | grep -w \"$tryp\" > /dev/null; then\n"
 
1700
"                       :\n"
 
1701
"               else\n"
 
1702
"                       ok=$tryp\n"
 
1703
"                       break\n"
 
1704
"               fi\n"
 
1705
"               i=`expr $i + 1`\n"
 
1706
"       done\n"
 
1707
"       if [ \"X$ok\" != \"X\" ]; then\n"
 
1708
"               base=$ok\n"
 
1709
"       fi\n"
 
1710
"       if [ \"X$palloc\" = \"X\" ]; then\n"
 
1711
"               palloc=\"$base\"\n"
 
1712
"       else\n"
 
1713
"               palloc=\"$palloc $base\"\n"
 
1714
"       fi\n"
 
1715
"       echo \"$base\"\n"
 
1716
"}\n"
 
1717
"\n"
 
1718
"\n"
 
1719
"depth=${depth:-16}\n"
 
1720
"geom=${geom:-1280x1024}\n"
 
1721
"\n"
 
1722
"if [ \"X$X11VNC_CREATE_GEOM\" != \"X\" -a \"X$FD_GEOM\" = \"X\" ]; then\n"
 
1723
"       FD_GEOM=$X11VNC_CREATE_GEOM\n"
 
1724
"fi\n"
 
1725
"\n"
 
1726
"if [ \"X$FD_GEOM\" != \"X\" -a \"X$FD_GEOM\" != \"XNONE\" ]; then\n"
 
1727
"       x1=`echo \"$FD_GEOM\" | awk -Fx '{print $1}'`\n"
 
1728
"       y1=`echo \"$FD_GEOM\" | awk -Fx '{print $2}'`\n"
 
1729
"       d1=`echo \"$FD_GEOM\" | awk -Fx '{print $3}'`\n"
 
1730
"       if [ \"X$x1\" != \"X\" -a \"X$y1\" != \"X\" ]; then\n"
 
1731
"               geom=\"${x1}x${y1}\"\n"
 
1732
"       fi\n"
 
1733
"       if [ \"X$d1\" != \"X\" ]; then\n"
 
1734
"               depth=\"${d1}\"\n"
 
1735
"       fi\n"
 
1736
"fi\n"
 
1737
"\n"
 
1738
"depth=`echo \"$depth\" | head -n 1`\n"
 
1739
"geom=`echo \"$geom\" | head -n 1`\n"
 
1740
"\n"
 
1741
"if echo \"$depth\" | grep '^[0-9][0-9]*$' > /dev/null; then\n"
 
1742
"       :\n"
 
1743
"else\n"
 
1744
"       depth=16\n"
 
1745
"fi\n"
 
1746
"if echo \"$geom\" | grep '^[0-9][0-9]*x[0-9][0-9]*$' > /dev/null; then\n"
 
1747
"       :\n"
 
1748
"else\n"
 
1749
"       geom=1280x1024\n"
 
1750
"fi\n"
 
1751
"\n"
 
1752
"if [ \"X$USER\" = \"X\" ]; then\n"
 
1753
"       USER=$LOGNAME\n"
 
1754
"fi\n"
 
1755
"if [ \"X$USER\" = \"X\" ]; then\n"
 
1756
"       USER=`whoami`\n"
 
1757
"fi\n"
 
1758
"\n"
 
1759
"PATH=$PATH:/usr/X11R6/bin:/usr/bin/X11:/usr/openwin/bin:/usr/dt/bin:/opt/kde3/bin:/opt/gnome/bin:/usr/bin:/bin:/usr/sfw/bin\n"
 
1760
"\n"
 
1761
"have_root=\"\"\n"
 
1762
"id0=`id`\n"
 
1763
"if id | sed -e 's/ gid.*$//' | grep -w root > /dev/null; then\n"
 
1764
"       have_root=\"1\"\n"
 
1765
"fi\n"
 
1766
"\n"
 
1767
"p_ok=0\n"
 
1768
"if [ \"`type -p /bin/sh`\" = \"/bin/sh\" ]; then\n"
 
1769
"       p_ok=1\n"
 
1770
"fi\n"
 
1771
"\n"
 
1772
"for prog in startx xinit xdm gdm kdm xterm Xdummy Xvfb Xvnc xauth xdpyinfo mcookie md5sum xmodmap startkde gnome-session blackbox fvwm2 mwm openbox twm windowmaker wmaker enlightenment metacity X Xorg XFree86 Xsun Xsession dtwm netstat nohup esddsp konsole gnome-terminal perl startxfce4 startxfce\n"
 
1773
"do\n"
 
1774
"       p2=`echo \"$prog\" | sed -e 's/-/_/g'`\n"
 
1775
"       eval \"have_$p2=''\"\n"
 
1776
"       if type $prog > /dev/null 2>&1; then\n"
 
1777
"               bpath=`which $prog | awk '{print $NF}'`\n"
 
1778
"               if [ ! -x \"$bpath\" -o -d \"$bpath\" ]; then\n"
 
1779
"                       if [ \"X$p_ok\" = \"X1\" ]; then\n"
 
1780
"                               bpath=`type -p $prog | awk '{print $NF}'`\n"
 
1781
"                       fi\n"
 
1782
"                       if [ ! -x \"$bpath\" -o -d \"$bpath\" ]; then\n"
 
1783
"                               bpath=`type $prog | awk '{print $NF}'`\n"
 
1784
"                       fi\n"
 
1785
"               fi\n"
 
1786
"               eval \"have_$p2=$bpath\"\n"
 
1787
"       fi\n"
 
1788
"done\n"
 
1789
"if [ \"X$have_xterm\" = \"X\" ]; then\n"
 
1790
"       if [ \"X$have_konsole\" != \"X\" ]; then\n"
 
1791
"               have_xterm=$have_konsole\n"
 
1792
"       elif [ \"X$have_gnome_terminal\" != \"X\" ]; then\n"
 
1793
"               have_xterm=$have_gnome_terminal\n"
 
1794
"       fi\n"
 
1795
"fi\n"
 
1796
"\n"
 
1797
"if [ \"X$have_nohup\" = \"X\" ]; then\n"
 
1798
"       have_nohup=\"nohup\"\n"
 
1799
"fi\n"
 
1800
"\n"
 
1801
"N=`findfree`\n"
 
1802
"\n"
 
1803
"if [ \"X$N\" = \"X\" ]; then\n"
 
1804
"       exit 1\n"
 
1805
"fi\n"
 
1806
"echo \"trying N=$N ...\" 1>&2\n"
 
1807
"\n"
 
1808
"if [ \"X$CREATE_DISPLAY_OUTPUT\" != \"X\" ]; then\n"
 
1809
"       set | grep \"^have_\" 1>&2\n"
 
1810
"fi\n"
 
1811
"\n"
 
1812
"TRY=\"$1\"\n"
 
1813
"if [ \"X$TRY\" = \"X\" ]; then\n"
 
1814
"       TRY=Xdummy,Xvfb\n"
 
1815
"fi\n"
 
1816
"\n"
 
1817
"for curr_try in `echo \"$TRY\" | tr ',' ' '`\n"
 
1818
"do\n"
 
1819
"       result=0\n"
 
1820
"       use_xdmcp_query=0\n"
 
1821
"       if echo \"$curr_try\" | egrep '[+.-]xdmcp' > /dev/null; then\n"
 
1822
"               use_xdmcp_query=1\n"
 
1823
"       fi\n"
 
1824
"       curr_try=`echo \"$curr_try\" | sed -e  's/[+.-]xdmcp//'`\n"
 
1825
"       curr_try=`echo \"$curr_try\" | sed -e  's/[+.-]redirect//'`\n"
 
1826
"       \n"
 
1827
"       if echo \"$curr_try\"   | grep -i '^Xdummy\\>' > /dev/null; then\n"
 
1828
"               try_Xdummy\n"
 
1829
"       elif echo \"$curr_try\" | grep -i '^Xvfb\\>'   > /dev/null; then\n"
 
1830
"               try_Xvfb\n"
 
1831
"       elif echo \"$curr_try\" | grep -i '^Xvnc\\>'   > /dev/null; then\n"
 
1832
"               try_Xvnc\n"
 
1833
"       elif echo \"$curr_try\" | grep -i '^Xsrv\\>'   > /dev/null; then\n"
 
1834
"               try_Xsrv\n"
 
1835
"       elif echo \"$curr_try\" | grep -i '^X\\>'      > /dev/null; then\n"
 
1836
"               try_X\n"
 
1837
"       fi\n"
 
1838
"       if [ \"X$result\" = \"X1\" ]; then\n"
 
1839
"               echo \"DISPLAY=:$N\"\n"
 
1840
"               $have_xauth -f $authfile extract - :$N\n"
 
1841
"               exit 0\n"
 
1842
"       fi\n"
 
1843
"done\n"
 
1844
"\n"
 
1845
"exit 1\n"
 
1846
;
 
1847
 
 
1848
#endif /* _SSLTOOLS_H */