mirror of
https://github.com/xCryptic/MegaKeep.git
synced 2024-11-21 17:42:30 +01:00
v2
see README for changes
This commit is contained in:
parent
2a696c57df
commit
8a37cc9fdc
@ -52,6 +52,77 @@ namespace MegaKeep
|
||||
await Task.Run(() => Work(lines));
|
||||
}
|
||||
|
||||
private string Login(string user, string pass)
|
||||
{
|
||||
Process login = new Process
|
||||
{
|
||||
StartInfo =
|
||||
{
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true,
|
||||
FileName = _local + "\\MEGAcmd\\mega-login.bat",
|
||||
Arguments = user + " \"" + pass + "\""
|
||||
}
|
||||
};
|
||||
|
||||
Log("Logging in to " + user + "...");
|
||||
|
||||
login.Start();
|
||||
var result = login.StandardOutput.ReadToEnd();
|
||||
login.WaitForExit();
|
||||
|
||||
if (login.HasExited)
|
||||
return result;
|
||||
else
|
||||
return "Unable to exit the process";
|
||||
}
|
||||
|
||||
private string Logout()
|
||||
{
|
||||
Process logout = new Process
|
||||
{
|
||||
StartInfo =
|
||||
{
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true,
|
||||
FileName = _local + "\\MEGAcmd\\mega-logout.bat"
|
||||
}
|
||||
};
|
||||
|
||||
// the process doesn't exit, just return failed
|
||||
var result = "Failed to exit the process";
|
||||
|
||||
// 10 attempts to logout
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
logout.Start();
|
||||
logout.WaitForExit();
|
||||
|
||||
if (logout.HasExited)
|
||||
{
|
||||
var res = logout.StandardOutput.ReadToEnd();
|
||||
|
||||
if (res == "Logging out..." + Environment.NewLine)
|
||||
{
|
||||
// success
|
||||
result = "Success";
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log("Unable to log out (Attempt #" + (i + 1) + ")");
|
||||
result = res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void Work(string[] lines)
|
||||
{
|
||||
// loop through every line
|
||||
@ -61,69 +132,59 @@ namespace MegaKeep
|
||||
var user = info[0];
|
||||
var pass = info[1];
|
||||
|
||||
var restart = false;
|
||||
/* NOTE
|
||||
* the for loop's purpose is in case the account is already
|
||||
* logged into mega. this can happen if the user closes out
|
||||
* of megakeep before the cycle ends or because the user
|
||||
* is actively using megacmd
|
||||
*/
|
||||
|
||||
Log("Logging in to " + user + "...");
|
||||
|
||||
Process login = new Process
|
||||
for (var i = 0; i < 2; i++)
|
||||
{
|
||||
StartInfo =
|
||||
var loginResult = Login(user, pass);
|
||||
|
||||
if (loginResult == "")
|
||||
{
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true,
|
||||
FileName = _local + "\\MEGAcmd\\mega-login.bat",
|
||||
Arguments = user + " \"" + pass + "\""
|
||||
// login was successful
|
||||
Log("Login succeeded. Logging out...");
|
||||
}
|
||||
};
|
||||
|
||||
login.Start();
|
||||
var result = login.StandardOutput.ReadToEnd();
|
||||
login.WaitForExit();
|
||||
|
||||
if (login.HasExited)
|
||||
{
|
||||
if (result.Contains("Login failed"))
|
||||
else if (loginResult.Contains("Login failed"))
|
||||
{
|
||||
Log("Failed: " + result);
|
||||
continue; // just move on to the next account
|
||||
Log("Failed: " + loginResult);
|
||||
break; // just move on to the next account
|
||||
}
|
||||
else if (result.Contains("Already logged in"))
|
||||
else if (loginResult.Contains("Already logged in"))
|
||||
{
|
||||
Log("Already logged in. Logging out and restarting...");
|
||||
restart = true;
|
||||
Log("Already logged in. Logging out...");
|
||||
}
|
||||
}
|
||||
|
||||
// wait a sec
|
||||
Thread.Sleep(1500);
|
||||
Thread.Sleep(2000);
|
||||
|
||||
Process logout = new Process
|
||||
{
|
||||
StartInfo =
|
||||
var logout = Logout();
|
||||
|
||||
if (logout == "Success")
|
||||
{
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true,
|
||||
FileName = _local + "\\MEGAcmd\\mega-logout.bat"
|
||||
Log("Logged out");
|
||||
|
||||
Thread.Sleep(2000);
|
||||
|
||||
// we don't want to login to the same account again
|
||||
// so we're going to break out of the loop
|
||||
if (loginResult == "")
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
logout.Start();
|
||||
logout.WaitForExit();
|
||||
|
||||
if (logout.HasExited)
|
||||
Log(logout.StandardOutput.ReadToEnd());
|
||||
|
||||
if (restart)
|
||||
{
|
||||
this.Invoke((MethodInvoker) delegate
|
||||
else
|
||||
{
|
||||
btnRun.PerformClick();
|
||||
});
|
||||
return;
|
||||
/* NOTE
|
||||
* I've never had this happen before.
|
||||
* however if this done happen,
|
||||
* the loop will be ended since there's no
|
||||
* point in continuing if logging out doesn't work
|
||||
*/
|
||||
|
||||
Log("Unable to logout. Error: " + logout);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,7 +212,7 @@ namespace MegaKeep
|
||||
{
|
||||
var time = "[" + DateTime.Now.ToString("hh:mm:ss tt") + "] ";
|
||||
|
||||
txtLog.Text += time + txt + Environment.NewLine;
|
||||
txtLog.AppendText(time + txt + Environment.NewLine);
|
||||
});
|
||||
}
|
||||
|
||||
|
10
README.md
10
README.md
@ -1,7 +1,7 @@
|
||||
MegaKeep
|
||||
========
|
||||
|
||||
![MegaKeep](https://i.imgur.com/jnLYBvm.png)
|
||||
![MegaKeep](https://i.imgur.com/43lLYFx.png)
|
||||
|
||||
This program will allow you to login to all of your mega accounts to avoid deletion due to inactivity.
|
||||
|
||||
@ -22,9 +22,17 @@ When making a pull request, please provide a thorough explanation of what you ad
|
||||
## Version History
|
||||
|
||||
v1.0
|
||||
|
||||
- Initial Release
|
||||
|
||||
v1.1
|
||||
|
||||
- Fixed the UI freezing (via Task)
|
||||
- Added timestamps to logging
|
||||
- Added log saving
|
||||
|
||||
v2.0
|
||||
|
||||
- Rewrote the base code for the program
|
||||
- The program will no longer completely restart if an account is already logged in
|
||||
- The log now automatically scrolls down with the log instead of jumping to the top
|
||||
|
Loading…
Reference in New Issue
Block a user