/* $Id: syspost.c,v 1.18 2003/01/19 16:06:06 kcwu Exp $ */
#include "bbs.h"
int
post_msg(char *bname, char *title, char *msg, char *author)
{
FILE *fp;
int bid;
fileheader_t fhdr;
char genbuf[256];
/* 在 bname 板發表新文章 */
snprintf(genbuf, sizeof(genbuf), "boards/%c/%s", bname[0], bname);
stampfile(genbuf, &fhdr);
fp = fopen(genbuf, "w");
if (!fp)
return -1;
fprintf(fp, "作者: %s 看板: %s\n標題: %s \n", author, bname, title);
fprintf(fp, "時間: %s\n", ctime(&now));
/* 文章的內容 */
fprintf(fp, "%s", msg);
fclose(fp);
/* 將檔案加入列表 */
strlcpy(fhdr.title, title, sizeof(fhdr.title));
strlcpy(fhdr.owner, author, sizeof(fhdr.owner));
setbdir(genbuf, bname);
if (append_record(genbuf, &fhdr, sizeof(fhdr)) != -1)
if ((bid = getbnum(bname)) > 0)
setbtotal(bid);
return 0;
}
int
post_file(char *bname, char *title, char *filename, char *author)
{
int size = dashs(filename);
char *msg;
FILE *fp;
if (size <= 0)
return -1;
if (!(fp = fopen(filename, "r")))
return -1;
msg = (char *)malloc(size + 1);
size = fread(msg, 1, size, fp);
msg[size] = 0;
size = post_msg(bname, title, msg, author);
fclose(fp);
free(msg);
return size;
}
void
post_change_perm(int oldperm, int newperm, char *sysopid, char *userid)
{
FILE *fp;
fileheader_t fhdr;
char genbuf[200], reason[30];
int i, flag = 0;
strlcpy(genbuf, "boards/S/Security", sizeof(genbuf));
stampfile(genbuf, &fhdr);
if (!(fp = fopen(genbuf, "w")))
return;
fprintf(fp, "作者: [系統安全局] 看板: Security\n"
"標題: [公安報告] 站長修改權限報告\n"
"時間: %s\n", ctime(&now));
for (i = 5; i < NUMPERMS; i++) {
if (((oldperm >> i) & 1) != ((newperm >> i) & 1)) {
fprintf(fp, " 站長\033[1;32m%s%s%s%s\033[m的權限\n",
sysopid,
(((oldperm >> i) & 1) ? "\033[1;33m關閉" : "\033[1;33m開啟"),
userid, str_permid[i]);
flag++;
}
}
if (flag) {
clrtobot();
clear();
while (!getdata_str(5, 0, "請輸入理由以示負責:",
reason, sizeof(reason), DOECHO, "看板板主:"));
fprintf(fp, "\n \033[1;37m站長%s修改權限理由是:%s\033[m",
cuser.userid, reason);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title),
"[公安報告] 站長%s修改%s權限報告",
cuser.userid, userid);
strlcpy(fhdr.owner, "[系統安全局]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
} else
fclose(fp);
}
void
post_violatelaw(char *crime, char *police, char *reason, char *result)
{
char genbuf[200];
fileheader_t fhdr;
FILE *fp;
/*
strlcpy(genbuf, "boards/S/Security", sizeof(genbuf));
stampfile(genbuf, &fhdr);
if (!(fp = fopen(genbuf, "w")))
return;
fprintf(fp, "作者: [Ptt法院] 看板: Security\n"
"標題: [報告] %-20s 違法判決報告\n"
"時間: %s\n"
"\033[1;32m%s\033[m判決:\n \033[1;32m%s\033[m"
"因\033[1;35m%s\033[m行為,\n違反本站站規,處以\033[1;35m%s\033[m,特此公告",
crime, ctime(&now), police, crime, reason, result);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title),
"[報告] %-20s 違法判決報告", crime);
strlcpy(fhdr.owner, "[Ptt法院]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
*/
strlcpy(genbuf, "boards/V/ViolateLaw", sizeof(genbuf));
stampfile(genbuf, &fhdr);
if (!(fp = fopen(genbuf, "w")))
return;
fprintf(fp, "作者: [Ptt法院] 看板: ViolateLaw\n"
"標題: [報告] %-20s 違法判決報告\n"
"時間: %s\n"
"\033[1;32m%s\033[m判決:\n \033[1;32m%s\033[m"
"因\033[1;35m%s\033[m行為,\n違反本站站規,處以\033[1;35m%s\033[m,特此公告",
crime, ctime(&now), police, crime, reason, result);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title),
"[報告] %-20s 違法判決報告", crime);
strlcpy(fhdr.owner, "[Ptt法院]", sizeof(fhdr.owner));
append_record("boards/V/ViolateLaw/.DIR", &fhdr, sizeof(fhdr));
}
void
post_newboard(char *bgroup, char *bname, char *bms)
{
char genbuf[256], title[128];
snprintf(title, sizeof(title), "[新板成立] %s", bname);
snprintf(genbuf, sizeof(genbuf),
"%s 開了一個新板 %s : %s\n\n新任板主為 %s\n\n恭喜*^_^*\n",
cuser.userid, bname, bgroup, bms);
post_msg("Record", title, genbuf, "[系統]");
}
void
give_money_post(char *userid, int money)
{
FILE *fp;
fileheader_t fhdr;
time_t now = time(0);
char genbuf[200];
strlcpy(genbuf, "boards/S/Security", sizeof(genbuf));
stampfile(genbuf, &fhdr);
if (!(fp = fopen(genbuf, "w")))
return;
fprintf(fp, "作者: [系統安全局] 看板: Security\n"
"標題: [公安報告] 站長%s使用紅包機報告\n"
"時間: %s\n", cuser.userid, ctime(&now));
clrtobot();
clear();
fprintf(fp, "\n 站長\033[1;32m%s\033[m給\033[1;33m%s %d 元\033[m",
cuser.userid, userid, money);
fclose(fp);
snprintf(fhdr.title, sizeof(fhdr.title), "[公安報告] 站長%s使用紅包機報告",
cuser.userid);
strlcpy(fhdr.owner, "[系統安全局]", sizeof(fhdr.owner));
append_record("boards/S/Security/.DIR", &fhdr, sizeof(fhdr));
}