/* --- WEBADMIN.CPP --- / / Written by Phil Himsworth, 2001-2002. / /*/ #include #include "types.h" #include "main.h" #include "html.h" #include "plugin.h" #include "resource.h" #include "op_winamp.h" extern char mp3root[MAX_PATH], playlistdir[MAX_PATH], logfiledir[MAX_PATH], filetypes[255]; extern int browse_enable, dl_wa_files, dl_other_files, show_other_files, frames, title_refresh, securepassword; extern char szAppVer[]; extern char pagetitle[255]; extern winampGeneralPurposePlugin plugin; // -------------------------------------------------------------------------------- // Returns Web Admin page int CControl::WebAdmin(connection * conn) { OpenHTTPHeader(conn,"text/html",0,NULL); if (conn->http.reqID == RID_HEAD) return ST_CLOSE; OpenHtmlHeader(conn); Style(conn); CloseHeader(conn); OpenPageBody(conn); prints(conn,"

\n\n... Wawi Remote Admin ...\n

\n"); prints(conn,"

"); Link(conn,"/user","[User Management]",T_MAIN); prints(conn,"

\n"); prints(conn,"
\n"); prints(conn,"\n\n"); prints(conn,"\n\n\n\n"); prints(conn,"\n\n\n\n"); prints(conn,"\n\n\n\n"); prints(conn,"\n\n\n\n\n\n\n"); // Frames mode radio buttons prints(conn,"\n\n\n\n\n\n\n\n\n\n\n\n"); prints(conn,"\n\n\n"); prints(conn,"\n\n\n"); prints(conn,"\n\n\n\n"); prints(conn,"\n\n\n"); prints(conn,"\n\n
Main Page Title
Loadable Filetypes
Music Root Directory
Playlists Directory
 
Frames:No Frames
 2
 3
Secure PasswordsWarning! Changing this will invalidate all user passwords.
 
Winamp FilesDownload
Other FilesDownload Show
"); prints(conn,"
\n"); if (frames == 1) LinkBar(conn); prints(conn,"

 

"); return ST_CLOSEBODY; } // Returns admin apply page and actually does the stuff int CControl::ApplyAdmin(connection * conn) { bool changed = false; OpenHTTPHeader(conn,"text/html",0,NULL); if (conn->http.reqID == RID_HEAD) return ST_CLOSE; OpenHtmlHeader(conn); Style(conn); CloseHeader(conn); OpenPageBody(conn); prints(conn,"

\n\n... Wawi Remote Admin ...\n

\n"); char instring[255]; // used for everything if (GetArgValue(conn,"title",instring,255)) { Unescape_url(instring); if (!StrComp(pagetitle,instring)) { lstrcpy(pagetitle,instring); prints(conn,"

Page title changed to "); prints(conn,pagetitle); prints(conn,"

\n"); changed = true; } } if (GetArgValue(conn,"filetypes",instring,255)) { Unescape_url(instring); if (!StrComp(filetypes,instring)) { lstrcpy(filetypes,instring); prints(conn,"

Filetypes changed to "); prints(conn,filetypes); prints(conn,"

\n"); changed = true; } } if (GetArgValue(conn,"root",instring,255)) { Unescape_url(instring); if (!StrComp(mp3root,instring)) { lstrcpy(mp3root,instring); prints(conn,"

Root music directory changed to "); prints(conn,mp3root); prints(conn,"

\n"); changed = true; } } if (GetArgValue(conn,"playlists",instring,255)) { Unescape_url(instring); if (!StrComp(playlistdir,instring)) { lstrcpy(playlistdir,instring); prints(conn,"

Playlist directory changed to "); prints(conn,playlistdir); prints(conn,"

\n"); changed = true; } } wsprintf(instring,"2"); GetArgValue(conn,"frames",instring,255); if (StrComp(instring,"1")) { if (frames != 1) { frames = 1; prints(conn,"

No Frames mode turned On

"); changed = true; } } else { if (StrComp(instring,"3")) { if (frames != 3) { frames = 3; prints(conn,"

Three Frames mode turned On

"); changed = true; } } else { if (frames != 2) { frames = 2; prints(conn,"

Two Frames mode turned On

"); changed = true; } } } wsprintf(instring,"off"); GetArgValue(conn,"securepassword",instring,255); if (StrComp(instring,"on")) { if (securepassword == 0) { securepassword = 1; prints(conn,"

Secure passwords turned On

"); changed = true; } } else { if (securepassword == 1) { securepassword = 0; prints(conn,"

Secure passwords turned Off

"); changed = true; } } wsprintf(instring,"off"); GetArgValue(conn,"dl_wa_files",instring,255); if (StrComp(instring,"on")) { if (dl_wa_files == 0) { dl_wa_files = 1; prints(conn,"

Downloading of Winamp files is Enabled

"); changed = true; } } else { if (dl_wa_files == 1) { dl_wa_files = 0; prints(conn,"

Downloading of Winamp files is Disabled

"); changed = true; } } wsprintf(instring,"off"); GetArgValue(conn,"dl_other_files",instring,255); if (StrComp(instring,"on")) { if (dl_other_files == 0) { dl_other_files = 1; prints(conn,"

Downloading other files is Enabled

"); changed = true; } } else { if (dl_other_files == 1) { dl_other_files = 0; prints(conn,"

Downloading other files is Disabled

"); changed = true; } } wsprintf(instring,"off"); GetArgValue(conn,"show_other_files",instring,255); if (StrComp(instring,"on")) { if (show_other_files == 0) { show_other_files = 1; prints(conn,"

Listing other files is Enabled

"); changed = true; } } else { if (show_other_files == 1) { show_other_files = 0; prints(conn,"

Listing other files is Disabled

"); changed = true; } } if (changed == false) prints(conn,"

No changes made.

\n"); config_write(); prints(conn,"

"); ImgLink(conn,"/",IDR_IMG_OK,"Return to Main Page",0,0,T_TOP); prints(conn,"

\n"); return ST_CLOSEBODY; } // -------------------------------------------------------------------------------- // User admin page int CControl::User(connection * conn) { char username[20]; char password[40]; int access; if (!GetArgValue(conn,"user",username,20)) wsprintf(username,"anon"); OpenHTTPHeader(conn,"text/html",0,NULL); if (conn->http.reqID == RID_HEAD) return ST_CLOSE; OpenHtmlHeader(conn); Style(conn); CloseHeader(conn); OpenPageBody(conn); prints(conn,"

\n\n... Wawi User Admin ...\n

\n"); prints(conn,"
\n

\n"); prints(conn,"\n\n\n\n\n
"); prints(conn,"Show User:\n"); prints(conn,"
\n

\n
\n"); if (!goodname) { prints(conn,"

User "); prints(conn,username); prints(conn," is not a user of this server.

"); return ST_CLOSEBODY; } else { char userkey[30]; wsprintf(userkey,"#%s_access",username); access = GetPrivateProfileInt("Users",userkey,AUTH_ANON,ini_file); GetPrivateProfileString("Users",username,"password",password,40,ini_file); prints(conn,"
\n

\n"); prints(conn,"\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n"); prints(conn,"\n\n\n\n\n
User
Password
 
ServerAdd files
PlayDownload
Remove filesBrowse
"); prints(conn,""); prints(conn,"\n
\n

\n
\n"); } if (frames == 1) LinkBar(conn); prints(conn,"

 

\n"); return ST_CLOSEBODY; } // -------------------------------------------------------------------------------- // Sets stuff from the user admin page int CControl::SetUser(connection * conn) { OpenHTTPHeader(conn,"text/html",0,NULL); if (conn->http.reqID == RID_HEAD) return ST_CLOSE; OpenHtmlHeader(conn); Style(conn); prints(conn,"

\n\n... Wawi User Admin ...\n

\n"); char username[20]; char password[40]; if (!GetArgValue(conn,"user",username,20) || StrComp(username,"")) { CloseHeader(conn); OpenPageBody(conn); prints(conn,"

No user selected.

\n"); ImgLink(conn,"/main",IDR_IMG_OK,"Return to main page",0,0,T_MAIN); return ST_CLOSEBODY; } char ini_file[MAX_PATH], *p; GetModuleFileName(plugin.hDllInstance,ini_file,sizeof(ini_file)); p=ini_file+lstrlen(ini_file); while (p >= ini_file && *p != '\\') p--; if (++p >= ini_file) *p = 0; lstrcat(ini_file,"gen_httpsrv.ini"); char whichbutton[20]; if (GetArgValue(conn,"delete",whichbutton,20)) { DeleteUser(ini_file,username); RefreshHeader(conn,"/user"); CloseHeader(conn); OpenPageBody(conn); prints(conn,"

Deleting user "); prints(conn,username); prints(conn,"

\n"); return ST_CLOSEBODY; } char refreshto[40]; wsprintf(refreshto,"/user?user=%s",username); RefreshHeader(conn,refreshto); CloseHeader(conn); OpenPageBody(conn); prints(conn,"

Updating user information for "); prints(conn,username); prints(conn,"

\n"); GetArgValue(conn,"p",password,40); //MessageBox(NULL,password,"password",MB_OK | MB_TOPMOST); int access = 0; char authstring[10]; if (GetArgValue(conn,"a_server",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_SERVER; if (GetArgValue(conn,"a_control",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_CONTROL; if (GetArgValue(conn,"a_clear",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_CLEAR; if (GetArgValue(conn,"a_playlist",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_PLAYLIST; if (GetArgValue(conn,"a_download",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_DOWNLOAD; if (GetArgValue(conn,"a_browse",authstring,10)) if (StrComp(authstring,"on")) access += AUTH_BROWSE; UpdateUser(ini_file,username,password,access); return ST_CLOSEBODY; }