📄 ckcpro.w
字号:
#ifndef NOSERVER char *n2;#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE DELETE", (char *)srvcmd);#endif /* CKSYSLOG */ if (!ENABLED(en_del)) { errpkt((CHAR *)"REMOTE DELETE disabled"); RESUME; } else { /* DELETE is enabled */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE DELETE", (char *)(srvcmd+2), "");#endif /* IKSDB */ if (!ENABLED(en_cwd)) { /* but CWD is disabled */ zstrip((char *)(srvcmd+2),&n2); /* and they included a pathname, */ if (strcmp((char *)(srvcmd+2),n2)) { /* so refuse. */ errpkt((CHAR *)"Access denied"); RESUME; /* Remember, this is not a goto! */ } } else if (isdir((char *)(srvcmd+2))) { /* A directory name? */ errpkt((CHAR *)"It's a directory"); RESUME; } if (state == generic) { /* It's OK to go ahead. */ int x; if ((x = snddel((char*)(srvcmd+2))) > 0) { BEGIN ssinit; /* If OK send results back */ } else { /* otherwise */ if (x < 0) errpkt((CHAR *)"File not found"); /* report failure */ else errpkt((CHAR *)"DELETE failed"); RESUME; /* & return to server command wait */ } } }#endif /* NOSERVER */}<generic>F { /* FINISH */#ifndef NOSERVER#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "FINISH", NULL);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"SERVER FINISH", "", "");#endif /* IKSDB */ if (!ENABLED(en_fin)) { errpkt((CHAR *)"FINISH disabled"); RESUME; } else { ack(); /* Acknowledge */ xxscreen(SCR_TC,0,0L,""); /* Display */ success = 1; return(0); /* Done */ }#endif /* NOSERVER */}<generic>X { /* EXIT */#ifndef NOSERVER#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE EXIT", NULL);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE EXIT", "", "");#endif /* IKSDB */ if (!ENABLED(en_xit)) { errpkt((CHAR *)"EXIT disabled"); RESUME; } else { ack(); /* Acknowledge */ xxscreen(SCR_TC,0,0L,""); /* Display */ doexit(GOOD_EXIT,xitsta); }#endif /* NOSERVER */}<generic>L { /* BYE (Logout) */#ifndef NOSERVER#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "BYE", NULL);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"SERVER BYE", "", "");#endif /* IKSDB */ if (!ENABLED(en_bye)) { errpkt((CHAR *)"BYE disabled"); RESUME; } else { ack(); /* Acknowledge */ success = 1; msleep(750); /* Give the ACK time to get out */ if (local) ttres(); /* Reset the terminal */ xxscreen(SCR_TC,0,0L,""); /* Display */ doclean(1); /* Clean up files, etc */#ifdef DEBUG debug(F100,"C-Kermit BYE - Loggin out...","",0); zclose(ZDFILE);#endif /* DEBUG */#ifdef IKSD#ifdef CK_LOGIN if (inserver) ckxlogout(); else#endif /* CK_LOGIN */#endif /* IKSD */#ifdef TCPSOCKET#ifndef NOLISTEN if (network && tcpsrfd > 0 && !inserver) doexit(GOOD_EXIT,xitsta); else#endif /* NOLISTEN */#endif /* TCPSOCKET */ return(zkself()); /* Try to log self out */ }#endif /* NOSERVER */}<generic>H { /* REMOTE HELP */#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE HELP", NULL);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE HELP", "", "");#endif /* IKSDB */#ifndef NOSERVER if (sndhlp(NULL)) { BEGIN ssinit; /* try to send it */ } else { /* If not ok, */ errpkt((CHAR *)"Can't send help"); /* send error message instead */ RESUME; /* and return to server command wait */ }#endif /* NOSERVER */}<generic>R { /* REMOTE RENAME */ rc = srv_rename(); debug(F101,"srv_rename","",rc); if (rc > -1) return(rc); /* (see below) */}<generic>K { /* REMOTE COPY */ rc = srv_copy(); debug(F101,"srv_copy","",rc); if (rc > -1) return(rc); /* (see below) */}<generic>S { /* REMOTE SET */#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE SET", (char *)srvcmd);#endif /* CKSYSLOG */#ifndef NOSERVER#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE SET", (char *)(srvcmd+1), "");#endif /* IKSDB */ if (!ENABLED(en_set)) { errpkt((CHAR *)"REMOTE SET disabled"); RESUME; } else { if (remset((char *)(srvcmd+1))) { /* Try to do what they ask */ success = 1; ack(); /* If OK, then acknowledge */ } else /* Otherwise */ errpkt((CHAR *)"Unknown REMOTE SET parameter"); /* give error msg */ RESUME; /* Return to server command wait */ }#endif /* NOSERVER */}<generic>T { /* REMOTE TYPE */#ifndef NOSERVER char *n2;#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE TYPE", (char *)srvcmd);#endif /* CKSYSLOG */ if (!ENABLED(en_typ)) { errpkt((CHAR *)"REMOTE TYPE disabled"); RESUME; } else {#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE TYPE", (char *)(srvcmd+2), "");#endif /* IKSDB */ if (!ENABLED(en_cwd)) { /* If CWD disabled */ zstrip((char *)(srvcmd+2),&n2); /* and they included a pathname, */ if (strcmp((char *)(srvcmd+2),n2)) { /* refuse. */ errpkt((CHAR *)"Access denied"); RESUME; /* Remember, this is not a goto! */ } } if (state == generic) { /* It's OK to go ahead. */ binary = XYFT_T; /* Use text mode for this. */ if ( /* (RESUME didn't change state) */#ifdef COMMENT syscmd(TYPCMD,(char *)(srvcmd+2)) /* Old way */#else sndtype((char *)(srvcmd+2)) /* New way */#endif /* COMMENT */ ) BEGIN ssinit; /* OK */ else { /* not OK */ errpkt((CHAR *)"Can't type file"); /* give error message */ RESUME; /* wait for next server command */ } } }#endif /* NOSERVER */}<generic>m { /* REMOTE MKDIR */#ifndef NOSERVER#ifdef CK_MKDIR#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE MKDIR", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE MKDIR", (char *)(srvcmd+2), "");#endif /* IKSDB */ if (!ENABLED(en_mkd)) { errpkt((CHAR *)"REMOTE MKDIR disabled"); RESUME; } else if (!ENABLED(en_cwd)) { /* If CWD disabled */ errpkt((CHAR *)"Directory access restricted"); RESUME; /* Remember, this is not a goto! */ } if (state == generic) { /* OK to go ahead. */ char *p = NULL; x = ckmkdir(0,(char *)(srvcmd+2),&p,0,1); /* Make the directory */ if (!p) p = ""; if (x > -1) { encstr((CHAR *)p); /* OK - encode the name */ ack1(data); /* Send short-form response */ success = 1; RESUME; } else { /* not OK */ if (!*p) p = "Directory creation failure"; errpkt((CHAR *)p); /* give error message */ RESUME; /* Wait for next server command */ } }#else errpkt((CHAR *)"REMOTE MKDIR not available"); RESUME;#endif /* CK_MKDIR */#endif /* NOSERVER */}<generic>d { /* REMOTE RMDIR */#ifndef NOSERVER#ifdef CK_MKDIR#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE RMDIR", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE RMDIR", (char *)(srvcmd+2), "");#endif /* IKSDB */ if (!ENABLED(en_rmd)) { errpkt((CHAR *)"REMOTE RMDIR disabled"); RESUME; } else if (!ENABLED(en_cwd)) { /* If CWD disabled */ errpkt((CHAR *)"Directory access restricted"); RESUME; /* Remember, this is not a goto! */ } if (state == generic) { /* OK to go ahead. */ char *p = NULL; x = ckmkdir(1,(char *)(srvcmd+2),&p,0,1); if (!p) p = ""; if (x > -1) { encstr((CHAR *)p); /* OK - encode the name */ ack1(data); /* Send short-form response */ success = 1; RESUME; } else { /* not OK */ if (!*p) p = "Directory removal failure"; errpkt((CHAR *)p); /* give error message */ RESUME; /* Wait for next server command */ } }#else errpkt((CHAR *)"REMOTE RMDIR not available"); RESUME;#endif /* CK_MKDIR */#endif /* NOSERVER */}<generic>U { /* REMOTE SPACE */#ifndef NOSERVER#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE SPACE", (char *)srvcmd);#endif /* CKSYSLOG */ if (!ENABLED(en_spa)) { errpkt((CHAR *)"REMOTE SPACE disabled"); RESUME; } else { x = srvcmd[1]; /* Get area to check */ x = ((x == NUL) || (x == SP)#ifdef OS2 || (x == '!') || (srvcmd[3] == ':')#endif /* OS2 */ );#ifdef IKSDB if (ikdbopen) slotstate(what, "REMOTE SPACE", (x ? "" : (char *)srvcmd), "" );#endif /* IKSDB */ if (!x && !ENABLED(en_cwd)) { /* CWD disabled */ errpkt((CHAR *)"Access denied"); /* and non-default area given, */ RESUME; /* refuse. */ } else {#ifdef OS2_PROTOTYP(int sndspace,(int)); if (sndspace(x ? toupper(srvcmd[2]) : 0)) { BEGIN ssinit; /* send the report. */ } else { /* If not ok, */ errpkt((CHAR *)"Can't send space"); /* send error message */ RESUME; /* and return to server command wait */ }#else if (nopush) x = 0; else x = (x ? syscmd(SPACMD,"") : syscmd(SPACM2,(char *)(srvcmd+2))); if (x) { /* If we got the info */ BEGIN ssinit; /* send it */ } else { /* otherwise */ errpkt((CHAR *)"Can't check space"); /* send error message */ RESUME; /* and await next server command */ }#endif /* OS2 */ } }#endif /* NOSERVER */}<generic>W { /* REMOTE WHO */#ifndef NOSERVER#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "REMOTE WHO", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB if (ikdbopen) slotstate(what,"REMOTE WHO", (char *)(srvcmd+2), "");#endif /* IKSDB */ if (!ENABLED(en_who)) { errpkt((CHAR *)"REMOTE WHO disabled"); RESUME; } else {#ifdef OS2_PROTOTYP(int sndwho,(char *)); if (sndwho((char *)(srvcmd+2))) { BEGIN ssinit; /* try to send it */ } else { /* If not ok, */ errpkt((CHAR *)"Can't do who command"); /* send error msg */ RESUME; /* and return to server command wait */ }#else if (syscmd(WHOCMD,(char *)(srvcmd+2))) { BEGIN ssinit; } else { errpkt((CHAR *)"Can't do who command"); RESUME; }#endif /* OS2 */ }#endif /* NOSERVER */}<generic>V { /* Variable query or set */ rc = srv_query(); debug(F101,"srv_query","",rc); if (rc > -1) return(rc);}<generic>q { /* Interrupted or connection lost */#ifndef NOSERVER if (fatalio) { /* Connection lost */#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "Interrupted", NULL);#endif /* CKSYSLOG */ success = 0; xitsta |= what; QUIT; } else if (interrupted) { if (!ENABLED(en_fin)) { /* Ctrl-C typed */ errpkt((CHAR *)"QUIT disabled"); RESUME; } else {#ifdef CKSYSLOG if (ckxsyslog >= SYSLG_PR && ckxlogging) cksyslog(SYSLG_PR, 1, "server", "Interrupted", NULL);#endif /* CKSYSLOG */ success = 0; xitsta |= what; QUIT; } } else { /* Shouldn't happen */ debug(F100,"SERVER (generic) GOT UNEXPECTED 'q'","",0); QUIT; }#endif /* NOSERVER */}<generic>. { /* Anything else in this state... */#ifndef NOSERVER errpkt((CHAR *)"Unimplemented REMOTE command"); /* Complain */ RESUME; /* and return to server command wait */#endif /* NOSERVER */}<rgen>q { /* Sent BYE and connection broken */ if (bye_active && ttchk() < 0) { msleep(500); bye_active = 0; ttclos(0); /* Close our end of the connection */ clsof(0); return(success = 1); } else { /* Other generic command */ return(success = 0); /* or connection not broken */ }}<rgen>Y { /* Short-Form reply */ rc = rcv_shortreply(); debug(F101,"<rgen>Y rcv_shortreply","",rc); if (rc > -1) return(rc);}<rgen,rfile>F { /* File header */ char *n2; extern int rsn; debug(F101,"<rfile>F winlo 1","",winlo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -