forked from PowerShell/openssh-portable
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- (bal) Starting the Unicossmk merger. File merged TODO, configure.in,
myproposal.h, ssh_prng_cmds.in, and openbsd-compat/Makefile.in. Added openbsd-compat/bsd-cray.c. Rest will be merged after approval. Selective patches from William L. Jones <[email protected]>
- Loading branch information
Showing
7 changed files
with
260 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,10 @@ | ||
20010722 | ||
- (bal) Starting the Unicossmk merger. File merged TODO, configure.in, | ||
myproposal.h, ssh_prng_cmds.in, and openbsd-compat/Makefile.in. | ||
Added openbsd-compat/bsd-cray.c. Rest will be merged after | ||
approval. Selective patches from William L. Jones | ||
<[email protected]> | ||
|
||
20010719 | ||
- (tim) [configure.in] put inet_aton back in AC_CHECK_FUNCS. | ||
report from Mark Miller <[email protected]> | ||
|
@@ -6070,4 +6077,4 @@ | |
- Wrote replacements for strlcpy and mkdtemp | ||
- Released 1.0pre1 | ||
|
||
$Id: ChangeLog,v 1.1415 2001/07/20 03:33:46 tim Exp $ | ||
$Id: ChangeLog,v 1.1416 2001/07/22 19:32:00 mouring Exp $ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,6 +55,8 @@ Programming: | |
- utmp/wtmp get corrupted (something in loginrec?) | ||
- can't build with PAM (no 64-bit libpam yet) | ||
|
||
- Modify rijndael to support Cray 64bit machines. | ||
|
||
Documentation: | ||
- More and better | ||
|
||
|
@@ -87,4 +89,4 @@ Packaging: | |
- HP-UX: Provide DEPOT package scripts. | ||
([email protected]) | ||
|
||
$Id: TODO,v 1.41 2001/06/15 04:23:13 stevesk Exp $ | ||
$Id: TODO,v 1.42 2001/07/22 19:32:01 mouring Exp $ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,11 +25,17 @@ | |
*/ | ||
#define KEX_DEFAULT_KEX "diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1" | ||
#define KEX_DEFAULT_PK_ALG "ssh-rsa,ssh-dss" | ||
#ifdef _CRAY | ||
/*Temporary hack until rijndael is ported to CRAY word addressable machines */ | ||
#define KEX_DEFAULT_ENCRYPT \ | ||
"3des-cbc,blowfish-cbc,cast128-cbc,arcfour" | ||
#else | ||
#define KEX_DEFAULT_ENCRYPT \ | ||
"aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour," \ | ||
"aes192-cbc,aes256-cbc," \ | ||
"rijndael128-cbc,rijndael192-cbc,rijndael256-cbc," \ | ||
"[email protected]" | ||
#endif | ||
#define KEX_DEFAULT_MAC \ | ||
"hmac-md5,hmac-sha1,hmac-ripemd160," \ | ||
"[email protected]," \ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,223 @@ | ||
/* | ||
* The modules contains code to support cray t3e and sv1 computers. | ||
* It is here to minimize the modifcations to the openssh base code. | ||
*/ | ||
|
||
#ifdef _CRAY | ||
|
||
#include <udb.h> | ||
#include <tmpdir.h> | ||
#include <unistd.h> | ||
#include <sys/category.h> | ||
#include <utmp.h> | ||
#include <sys/jtab.h> | ||
#include <signal.h> | ||
#include <sys/stat.h> | ||
#include <stdlib.h> | ||
#include <pwd.h> | ||
#include <fcntl.h> | ||
#include <errno.h> | ||
|
||
char cray_tmpdir[TPATHSIZ+1]; /* job TMPDIR path */ | ||
|
||
/* | ||
* Functions. | ||
*/ | ||
int cray_setup(uid_t, char *); | ||
void cray_retain_utmp(struct utmp *, int); | ||
void cray_create_tmpdir(int, uid_t, gid_t); | ||
void cray_delete_tmpdir(char *, int , uid_t); | ||
void cray_job_termination_handler (int); | ||
void cray_init_job(struct passwd *); | ||
void cray_set_tmpdir(struct utmp *); | ||
|
||
/* | ||
* Orignal written by: | ||
* Wayne Schroeder | ||
* San Diego Supercomputer Center | ||
* [email protected] | ||
*/ | ||
int | ||
cray_setup(uid_t uid, char *username) | ||
{ | ||
struct udb *p; | ||
extern struct udb *getudb(); | ||
extern char *setlimits(); | ||
int i, j; | ||
int accts[MAXVIDS]; | ||
int naccts; | ||
int err; | ||
char *sr; | ||
int pid; | ||
struct jtab jbuf; | ||
int jid; | ||
|
||
if ((jid = getjtab (&jbuf)) < 0) { | ||
debug("getjtab"); | ||
return -1; | ||
} | ||
|
||
/* Find all of the accounts for a particular user */ | ||
err = setudb(); /* open and rewind the Cray User DataBase */ | ||
if(err != 0) { | ||
debug("UDB open failure"); | ||
return -1; | ||
} | ||
naccts = 0; | ||
while ((p = getudb()) != UDB_NULL) { | ||
if (p->ue_uid == -1) break; | ||
if(uid == p->ue_uid) { | ||
for(j = 0; p->ue_acids[j] != -1 && j < MAXVIDS; j++) { | ||
accts[naccts] = p->ue_acids[j]; | ||
naccts++; | ||
} | ||
} | ||
} | ||
endudb(); /* close the udb */ | ||
if (naccts == 0 || accts[0] == 0) { | ||
debug("No Cray accounts found"); | ||
return -1; | ||
} | ||
|
||
/* Perhaps someday we'll prompt users who have multiple accounts | ||
to let them pick one (like CRI's login does), but for now just set | ||
the account to the first entry. */ | ||
if (acctid(0, accts[0]) < 0) { | ||
debug("System call acctid failed, accts[0]=%d",accts[0]); | ||
return -1; | ||
} | ||
|
||
/* Now set limits, including CPU time for the (interactive) job and process, | ||
and set up permissions (for chown etc), etc. This is via an internal CRI | ||
routine, setlimits, used by CRI's login. */ | ||
|
||
pid = getpid(); | ||
sr = setlimits(username, C_PROC, pid, UDBRC_INTER); | ||
if (sr != NULL) { | ||
debug("%.200s", sr); | ||
return -1; | ||
} | ||
sr = setlimits(username, C_JOB, jid, UDBRC_INTER); | ||
if (sr != NULL) { | ||
debug("%.200s", sr); | ||
return -1; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
|
||
/* | ||
* Retain utmp/wtmp information - used by cray accounting. | ||
*/ | ||
void | ||
cray_retain_utmp(struct utmp *ut, int pid) | ||
{ | ||
int fd; | ||
struct utmp utmp; | ||
|
||
if ((fd = open(UTMP_FILE, O_RDONLY)) >= 0) { | ||
while (read(fd, (char *)&utmp, sizeof(utmp)) == sizeof(utmp)) { | ||
if (pid == utmp.ut_pid) { | ||
ut->ut_jid = utmp.ut_jid; | ||
strncpy(ut->ut_tpath, utmp.ut_tpath, TPATHSIZ); | ||
strncpy(ut->ut_host, utmp.ut_host, strlen(utmp.ut_host)); | ||
strncpy(ut->ut_name, utmp.ut_name, strlen(utmp.ut_name)); | ||
break; | ||
} | ||
} | ||
close(fd); | ||
} | ||
} | ||
|
||
/* | ||
* tmpdir support. | ||
*/ | ||
|
||
/* | ||
* find and delete jobs tmpdir. | ||
*/ | ||
void | ||
cray_delete_tmpdir(char *login, int jid, uid_t uid) | ||
{ | ||
int child; | ||
static char jtmp[TPATHSIZ]; | ||
struct stat statbuf; | ||
int c; | ||
int wstat; | ||
|
||
for (c = 'a'; c <= 'z'; c++) { | ||
snprintf(jtmp, TPATHSIZ, "%s/jtmp.%06d%c", JTMPDIR, jid, c); | ||
if (stat(jtmp, &statbuf) == 0 && statbuf.st_uid == uid) break; | ||
} | ||
|
||
if (c > 'z') return; | ||
|
||
if ((child = fork()) == 0) { | ||
execl(CLEANTMPCMD, CLEANTMPCMD, login, jtmp, 0); | ||
fatal("ssh_cray_rmtmpdir: execl of CLEANTMPCMD failed"); | ||
} | ||
|
||
while (waitpid (child, &wstat, 0) == -1 && errno == EINTR); | ||
} | ||
|
||
/* | ||
* Remove tmpdir on job termination. | ||
*/ | ||
void | ||
cray_job_termination_handler (int sig) | ||
{ | ||
int jid; | ||
char *login = NULL; | ||
struct jtab jtab; | ||
|
||
debug("Received SIG JOB."); | ||
|
||
if ((jid = waitjob(&jtab)) == -1 || | ||
(login = uid2nam(jtab.j_uid)) == NULL) return; | ||
|
||
cray_delete_tmpdir(login, jid, jtab.j_uid); | ||
} | ||
|
||
|
||
/* | ||
* Set job id and create tmpdir directory. | ||
*/ | ||
void | ||
cray_init_job(struct passwd *pw) | ||
{ | ||
int jid; | ||
int c; | ||
|
||
jid = setjob(pw->pw_uid, WJSIGNAL); | ||
if (jid < 0) fatal("System call setjob failure"); | ||
|
||
for (c = 'a'; c <= 'z'; c++) { | ||
snprintf(cray_tmpdir, TPATHSIZ, "%s/jtmp.%06d%c", JTMPDIR, jid, c); | ||
if (mkdir(cray_tmpdir, JTMPMODE) != 0) continue; | ||
if (chown(cray_tmpdir, pw->pw_uid, pw->pw_gid) != 0) { | ||
rmdir(cray_tmpdir); | ||
continue; | ||
} | ||
break; | ||
} | ||
|
||
if (c > 'z') cray_tmpdir[0] = '\0'; | ||
} | ||
|
||
void | ||
cray_set_tmpdir(struct utmp *ut) | ||
{ | ||
int jid; | ||
struct jtab jbuf; | ||
|
||
if ((jid = getjtab (&jbuf)) < 0) return; | ||
|
||
/* | ||
* Set jid and tmpdir in utmp record. | ||
*/ | ||
ut->ut_jid = jid; | ||
strncpy(ut->ut_tpath, cray_tmpdir, TPATHSIZ); | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters