version 1.26, 2016/03/03 02:12:43 |
version 1.27, 2016/03/11 19:29:52 |
|
|
X cd /open/anoncvs |
X cd /open/anoncvs |
X touch .hushlogin |
X touch .hushlogin |
X touch .profile |
X touch .profile |
X |
|
XPut a message like the following in .plan: |
|
X To use anonymous CVS install the latest version of CVS on your local |
|
X machine. |
|
X Then set your CVSROOT environment variable to the following value: |
|
X anoncvs@anoncvs.openbsd.org:/cvs |
|
X |
|
X mkdir bin dev tmp usr var etc |
X mkdir bin dev tmp usr var etc |
X cp /bin/{cat,pwd,rm,sh} bin/ |
X cp /bin/{cat,pwd,rm,sh} bin/ |
X |
X |
|
|
X */ |
X */ |
X/* #define ANONCVS_USER USERNAME */ |
X/* #define ANONCVS_USER USERNAME */ |
X |
X |
X/* |
|
X * If you want to be able to run an alternate OpenCVS binary on your |
|
X * anoncvs server, define OPENCVS_USER as the user who will invoke it. |
|
X */ |
|
X#define OPENCVS_USER "opencvs" |
|
X |
|
Xint main __P((int, char *[])); |
Xint main __P((int, char *[])); |
X |
X |
Xchar * const env[] = { |
Xchar * const env[] = { |
|
|
X#ifdef DEBUG |
X#ifdef DEBUG |
X int i; |
X int i; |
X#endif /* DEBUG */ |
X#endif /* DEBUG */ |
X#if defined(OPENCVS_USER) |
|
X int opencvs; |
|
X#endif |
|
X |
X |
X pw = getpwuid(getuid()); |
X pw = getpwuid(getuid()); |
X if (pw == NULL) { |
X if (pw == NULL) { |
|
|
X chdir("/"); |
X chdir("/"); |
X setuid(pw->pw_uid); |
X setuid(pw->pw_uid); |
X |
X |
X#if defined(OPENCVS_USER) |
|
X if (!strcmp(pw->pw_name, OPENCVS_USER)) |
|
X opencvs = 1; |
|
X else |
|
X opencvs = 0; |
|
X#endif |
|
X |
|
X /* |
X /* |
X * program now "safe" |
X * program now "safe" |
X */ |
X */ |
|
|
X struct sockaddr_in my_sa, peer_sa; |
X struct sockaddr_in my_sa, peer_sa; |
X char *us, *them; |
X char *us, *them; |
X |
X |
X#if defined(OPENCVS_USER) |
|
X if (opencvs == 1) { |
|
X fprintf(stderr, "OpenCVS does not support pserver\n"); |
|
X sleep(10); |
|
X exit(1); |
|
X } |
|
X#endif |
|
X |
|
X slen = sizeof(my_sa); |
X slen = sizeof(my_sa); |
X if (getsockname(0, (struct sockaddr *) &my_sa, &slen) |
X if (getsockname(0, (struct sockaddr *) &my_sa, &slen) |
X != 0) { |
X != 0) { |
|
|
X fprintf(stderr,"version of CVS on your local machine.\n"); |
X fprintf(stderr,"version of CVS on your local machine.\n"); |
X fprintf(stderr,"Then set your CVSROOT environment variable "); |
X fprintf(stderr,"Then set your CVSROOT environment variable "); |
X fprintf(stderr,"to the following value:\n"); |
X fprintf(stderr,"to the following value:\n"); |
X#if defined(OPENCVS_USER) |
|
X fprintf(stderr, "\t%s@%s:%s for OpenCVS\n", OPENCVS_USER, |
|
X HOSTNAME, LOCALROOT); |
|
X#endif |
|
X fprintf(stderr,"\t%s\n\n", CVSROOT); |
X fprintf(stderr,"\t%s\n\n", CVSROOT); |
X#ifdef DEBUG |
X#ifdef DEBUG |
X fprintf(stderr, "argc = %d\n", argc); |
X fprintf(stderr, "argc = %d\n", argc); |
|
|
X exit(0); |
X exit(0); |
X } |
X } |
X |
X |
X#if defined(OPENCVS_USER) |
|
X if (opencvs == 1) { |
|
X execle("/usr/bin/opencvs", "opencvs", |
|
X "server", (char *)NULL, env); |
|
X } else { |
|
X#endif |
|
X execle("/usr/bin/cvs", "cvs", "server", (char *)NULL, env); |
X execle("/usr/bin/cvs", "cvs", "server", (char *)NULL, env); |
X#if defined(OPENCVS_USER) |
|
X } |
|
X#endif |
|
X |
X |
X perror("execle: cvs"); |
X perror("execle: cvs"); |
X fprintf(stderr, "unable to exec CVS server!\n"); |
X fprintf(stderr, "unable to exec CVS server!\n"); |