diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1ff94bb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# NEU-IPGW
+
+
+This is the program designed to easily pass NEU ip gateway.
+
+
+
diff --git a/ipgw_new.sln b/ipgw_new.sln
new file mode 100644
index 0000000..a73dc39
--- /dev/null
+++ b/ipgw_new.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.24720.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ipgw_new", "ipgw_new\ipgw_new.csproj", "{5D2ED149-E3E8-4C19-A46D-021867637EF9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5D2ED149-E3E8-4C19-A46D-021867637EF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5D2ED149-E3E8-4C19-A46D-021867637EF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5D2ED149-E3E8-4C19-A46D-021867637EF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5D2ED149-E3E8-4C19-A46D-021867637EF9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/ipgw_new/App.config b/ipgw_new/App.config
new file mode 100644
index 0000000..d0feca6
--- /dev/null
+++ b/ipgw_new/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ipgw_new/ConfigForm.Designer.cs b/ipgw_new/ConfigForm.Designer.cs
new file mode 100644
index 0000000..c17829b
--- /dev/null
+++ b/ipgw_new/ConfigForm.Designer.cs
@@ -0,0 +1,219 @@
+namespace ipgw_new
+{
+ partial class ConfigForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm));
+ this.label2 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.button1 = new System.Windows.Forms.Button();
+ this.pwdBox = new System.Windows.Forms.TextBox();
+ this.uidBox = new System.Windows.Forms.TextBox();
+ this.linkOnStartCheckBox = new System.Windows.Forms.CheckBox();
+ this.exitRadioButton = new System.Windows.Forms.RadioButton();
+ this.minimumRadioButton = new System.Windows.Forms.RadioButton();
+ this.label3 = new System.Windows.Forms.Label();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.noneRadioButton = new System.Windows.Forms.RadioButton();
+ this.cancelButton = new System.Windows.Forms.Button();
+ this.minOnStartCheckBox = new System.Windows.Forms.CheckBox();
+ this.panel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(33, 74);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(37, 15);
+ this.label2.TabIndex = 13;
+ this.label2.Text = "密码";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(18, 29);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(52, 15);
+ this.label1.TabIndex = 12;
+ this.label1.Text = "用户名";
+ //
+ // button1
+ //
+ this.button1.AutoSize = true;
+ this.button1.Location = new System.Drawing.Point(36, 298);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(77, 25);
+ this.button1.TabIndex = 11;
+ this.button1.Text = "保存配置";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // pwdBox
+ //
+ this.pwdBox.Location = new System.Drawing.Point(86, 69);
+ this.pwdBox.Name = "pwdBox";
+ this.pwdBox.PasswordChar = '*';
+ this.pwdBox.Size = new System.Drawing.Size(161, 25);
+ this.pwdBox.TabIndex = 10;
+ //
+ // uidBox
+ //
+ this.uidBox.Location = new System.Drawing.Point(86, 26);
+ this.uidBox.Name = "uidBox";
+ this.uidBox.Size = new System.Drawing.Size(161, 25);
+ this.uidBox.TabIndex = 9;
+ //
+ // linkOnStartCheckBox
+ //
+ this.linkOnStartCheckBox.AutoSize = true;
+ this.linkOnStartCheckBox.Location = new System.Drawing.Point(38, 114);
+ this.linkOnStartCheckBox.Name = "linkOnStartCheckBox";
+ this.linkOnStartCheckBox.Size = new System.Drawing.Size(164, 19);
+ this.linkOnStartCheckBox.TabIndex = 14;
+ this.linkOnStartCheckBox.Text = "启动程序时自动连接";
+ this.linkOnStartCheckBox.UseVisualStyleBackColor = true;
+ //
+ // exitRadioButton
+ //
+ this.exitRadioButton.AutoSize = true;
+ this.exitRadioButton.Location = new System.Drawing.Point(6, 61);
+ this.exitRadioButton.Name = "exitRadioButton";
+ this.exitRadioButton.Size = new System.Drawing.Size(88, 19);
+ this.exitRadioButton.TabIndex = 15;
+ this.exitRadioButton.TabStop = true;
+ this.exitRadioButton.Text = "退出程序";
+ this.exitRadioButton.UseVisualStyleBackColor = true;
+ //
+ // minimumRadioButton
+ //
+ this.minimumRadioButton.AutoSize = true;
+ this.minimumRadioButton.Location = new System.Drawing.Point(6, 36);
+ this.minimumRadioButton.Name = "minimumRadioButton";
+ this.minimumRadioButton.Size = new System.Drawing.Size(118, 19);
+ this.minimumRadioButton.TabIndex = 16;
+ this.minimumRadioButton.TabStop = true;
+ this.minimumRadioButton.Text = "最小化至托盘";
+ this.minimumRadioButton.UseVisualStyleBackColor = true;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(18, 174);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(127, 15);
+ this.label3.TabIndex = 17;
+ this.label3.Text = "单击关闭按钮时:";
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.noneRadioButton);
+ this.panel1.Controls.Add(this.minimumRadioButton);
+ this.panel1.Controls.Add(this.exitRadioButton);
+ this.panel1.Location = new System.Drawing.Point(83, 196);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(132, 96);
+ this.panel1.TabIndex = 18;
+ //
+ // noneRadioButton
+ //
+ this.noneRadioButton.AutoSize = true;
+ this.noneRadioButton.Location = new System.Drawing.Point(6, 11);
+ this.noneRadioButton.Name = "noneRadioButton";
+ this.noneRadioButton.Size = new System.Drawing.Size(88, 19);
+ this.noneRadioButton.TabIndex = 17;
+ this.noneRadioButton.TabStop = true;
+ this.noneRadioButton.Text = "始终询问";
+ this.noneRadioButton.UseVisualStyleBackColor = true;
+ //
+ // cancelButton
+ //
+ this.cancelButton.AutoSize = true;
+ this.cancelButton.Location = new System.Drawing.Point(170, 298);
+ this.cancelButton.Name = "cancelButton";
+ this.cancelButton.Size = new System.Drawing.Size(77, 25);
+ this.cancelButton.TabIndex = 19;
+ this.cancelButton.Text = "取消";
+ this.cancelButton.UseVisualStyleBackColor = true;
+ this.cancelButton.Click += new System.EventHandler(this.button2_Click);
+ //
+ // minOnStartCheckBox
+ //
+ this.minOnStartCheckBox.AutoSize = true;
+ this.minOnStartCheckBox.Location = new System.Drawing.Point(38, 141);
+ this.minOnStartCheckBox.Name = "minOnStartCheckBox";
+ this.minOnStartCheckBox.Size = new System.Drawing.Size(209, 19);
+ this.minOnStartCheckBox.TabIndex = 20;
+ this.minOnStartCheckBox.Text = "启动程序时自动隐藏至托盘";
+ this.minOnStartCheckBox.UseVisualStyleBackColor = true;
+ //
+ // ConfigForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(282, 381);
+ this.ControlBox = false;
+ this.Controls.Add(this.minOnStartCheckBox);
+ this.Controls.Add(this.cancelButton);
+ this.Controls.Add(this.panel1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.linkOnStartCheckBox);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.pwdBox);
+ this.Controls.Add(this.uidBox);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "ConfigForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "设置";
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.TextBox pwdBox;
+ private System.Windows.Forms.TextBox uidBox;
+ private System.Windows.Forms.CheckBox linkOnStartCheckBox;
+ private System.Windows.Forms.RadioButton exitRadioButton;
+ private System.Windows.Forms.RadioButton minimumRadioButton;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.RadioButton noneRadioButton;
+ private System.Windows.Forms.Button cancelButton;
+ private System.Windows.Forms.CheckBox minOnStartCheckBox;
+ }
+}
\ No newline at end of file
diff --git a/ipgw_new/ConfigForm.cs b/ipgw_new/ConfigForm.cs
new file mode 100644
index 0000000..ef0a306
--- /dev/null
+++ b/ipgw_new/ConfigForm.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ipgw_new
+{
+ public partial class ConfigForm : Form
+ {
+ private ConfigHelper ch;
+ private ipgwConfig myconfig;
+ ///
+ /// 配置更改参数类
+ ///
+ public class ConfigChangedEventArgs : EventArgs
+ {
+ public ipgwConfig myconfig { get; set; }
+ }
+ public delegate void ConfigChangedEventHandler(object sender, ConfigChangedEventArgs e);
+ public event ConfigChangedEventHandler ConfigChanged;
+ public ConfigForm()
+ {
+ InitializeComponent();
+ this.ch = new ConfigHelper();
+ //检查是否为首次启动
+ if (ch.Check())
+ {
+ this.myconfig = ch.LoadConfig();
+ this.cancelButton.Enabled = true;
+ this.uidBox.Text = myconfig.uid;
+ this.pwdBox.Text = myconfig.pwd;
+ this.linkOnStartCheckBox.Checked = (myconfig.linkOnStart == "true");
+ this.minOnStartCheckBox.Checked = (myconfig.minOnStart == "true");
+ switch (myconfig.onClosing)
+ {
+ case "none":
+ this.noneRadioButton.Checked = true;
+ break;
+ case "exit":
+ this.exitRadioButton.Checked = true;
+ break;
+ case "minimum":
+ this.minimumRadioButton.Checked = true;
+ break;
+ }
+ }
+ else
+ {
+ this.cancelButton.Enabled = false;
+ this.myconfig = new ipgwConfig();
+ }
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ this.myconfig.uid = this.uidBox.Text;
+ this.myconfig.pwd = this.pwdBox.Text;
+ this.myconfig.linkOnStart = this.linkOnStartCheckBox.Checked ? "true" : "false";
+ this.myconfig.minOnStart = this.minOnStartCheckBox.Checked ? "true" : "false";
+ if (this.exitRadioButton.Checked)
+ this.myconfig.onClosing = "exit";
+ else if (this.minimumRadioButton.Checked)
+ this.myconfig.onClosing = "minimum";
+ else
+ this.myconfig.onClosing = "none";
+
+ ConfigChangedEventArgs e1 = new ConfigChangedEventArgs();
+ e1.myconfig = this.myconfig;
+ //触发事件改变主窗体配置
+ OnConfigChanged(e1);
+ //保存配置到文件
+ ch.SaveConfig(this.myconfig);
+
+ MessageBox.Show("保存成功");
+ this.Close();
+ }
+ ///
+ /// 触发事件的方法
+ ///
+ ///
+ protected virtual void OnConfigChanged(ConfigChangedEventArgs e)
+ {
+ if (ConfigChanged != null)
+ ConfigChanged(this, e);
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ }
+}
diff --git a/ipgw_new/ConfigForm.resx b/ipgw_new/ConfigForm.resx
new file mode 100644
index 0000000..0d8165d
--- /dev/null
+++ b/ipgw_new/ConfigForm.resx
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/ipgw_new/ConfigHelper.cs b/ipgw_new/ConfigHelper.cs
new file mode 100644
index 0000000..b7d3bc4
--- /dev/null
+++ b/ipgw_new/ConfigHelper.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Xml;
+
+namespace ipgw_new
+{
+ ///
+ /// 读取或保存配置
+ ///
+ class ConfigHelper
+ {
+ private string appdata;
+ public ConfigHelper()
+ {
+ this.appdata = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
+ this.CreateDirectory();
+ }
+ private void CreateDirectory()
+ {
+ if (!Directory.Exists(appdata + "/2645"))//如果不存在就创建2645文件夹
+ {
+ Directory.CreateDirectory(appdata + "/2645");
+ }
+ if (!Directory.Exists(appdata + "/2645/ipgw_new"))//如果不存在就创建ipgw_new文件夹
+ {
+ Directory.CreateDirectory(appdata + "/2645/ipgw_new");
+ }
+ }
+ public bool Check()
+ {
+ return File.Exists(appdata + "/2645/ipgw_new/ipgw.config");
+ }
+ public bool SaveConfig(ipgwConfig myconfig)
+ {
+ XmlDocument xmldoc = new XmlDocument();
+ xmldoc.CreateXmlDeclaration("1.0", "utf-8", null);
+ XmlElement root = xmldoc.CreateElement("ipgw");
+ XmlElement node = xmldoc.CreateElement("uid");
+ node.InnerText = myconfig.uid;
+ root.AppendChild(node);
+ node = xmldoc.CreateElement("pwd");
+ node.InnerText = myconfig.pwd;
+ root.AppendChild(node);
+ node = xmldoc.CreateElement("linkOnStart");
+ node.InnerText = myconfig.linkOnStart;
+ root.AppendChild(node);
+ node = xmldoc.CreateElement("minOnStart");
+ node.InnerText = myconfig.minOnStart;
+ root.AppendChild(node);
+ node = xmldoc.CreateElement("onClosing");
+ node.InnerText = myconfig.onClosing;
+ root.AppendChild(node);
+
+ xmldoc.AppendChild(root);
+ try
+ {
+ xmldoc.Save(appdata + "/2645/ipgw_new/ipgw.config");
+ }
+ catch(Exception e)
+ {
+ return false;
+ }
+ return true;
+ }
+ public ipgwConfig LoadConfig()
+ {
+ XmlDocument xmldoc = new XmlDocument();
+ ipgwConfig myconfig = new ipgwConfig();
+ xmldoc.Load(appdata + "/2645/ipgw_new/ipgw.config");
+ XmlNode root = xmldoc.SelectSingleNode(xmldoc.DocumentElement.Name);
+ myconfig.uid = root.SelectSingleNode("uid").InnerText;
+ myconfig.pwd = root.SelectSingleNode("pwd").InnerText;
+ myconfig.linkOnStart = root.SelectSingleNode("linkOnStart").InnerText;
+ myconfig.minOnStart = root.SelectSingleNode("minOnStart").InnerText;
+ myconfig.onClosing = root.SelectSingleNode("onClosing").InnerText;
+ return myconfig;
+ }
+ }
+}
diff --git a/ipgw_new/MainForm.Designer.cs b/ipgw_new/MainForm.Designer.cs
new file mode 100644
index 0000000..350a785
--- /dev/null
+++ b/ipgw_new/MainForm.Designer.cs
@@ -0,0 +1,202 @@
+namespace ipgw_new
+{
+ partial class MainForm
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 窗体设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+ this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.断开网络ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.连接网络ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.获取信息ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.显示窗口ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.退出ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.infoLable = new System.Windows.Forms.Label();
+ this.button1 = new System.Windows.Forms.Button();
+ this.contextMenuStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // notifyIcon1
+ //
+ this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
+ this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
+ this.notifyIcon1.Text = "IP控制网关";
+ this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
+ //
+ // contextMenuStrip1
+ //
+ this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.断开网络ToolStripMenuItem,
+ this.连接网络ToolStripMenuItem,
+ this.获取信息ToolStripMenuItem,
+ this.toolStripSeparator1,
+ this.显示窗口ToolStripMenuItem,
+ this.退出ToolStripMenuItem});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(145, 140);
+ //
+ // 断开网络ToolStripMenuItem
+ //
+ this.断开网络ToolStripMenuItem.Name = "断开网络ToolStripMenuItem";
+ this.断开网络ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+ this.断开网络ToolStripMenuItem.Text = "断开网络";
+ this.断开网络ToolStripMenuItem.Click += new System.EventHandler(this.断开网络ToolStripMenuItem_Click);
+ //
+ // 连接网络ToolStripMenuItem
+ //
+ this.连接网络ToolStripMenuItem.Name = "连接网络ToolStripMenuItem";
+ this.连接网络ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+ this.连接网络ToolStripMenuItem.Text = "连接网络";
+ this.连接网络ToolStripMenuItem.Click += new System.EventHandler(this.连接网络ToolStripMenuItem_Click);
+ //
+ // 获取信息ToolStripMenuItem
+ //
+ this.获取信息ToolStripMenuItem.Name = "获取信息ToolStripMenuItem";
+ this.获取信息ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+ this.获取信息ToolStripMenuItem.Text = "获取信息";
+ this.获取信息ToolStripMenuItem.Click += new System.EventHandler(this.获取信息ToolStripMenuItem_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(141, 6);
+ //
+ // 显示窗口ToolStripMenuItem
+ //
+ this.显示窗口ToolStripMenuItem.Name = "显示窗口ToolStripMenuItem";
+ this.显示窗口ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+ this.显示窗口ToolStripMenuItem.Text = "显示窗口";
+ this.显示窗口ToolStripMenuItem.Click += new System.EventHandler(this.显示窗口ToolStripMenuItem_Click);
+ //
+ // 退出ToolStripMenuItem
+ //
+ this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem";
+ this.退出ToolStripMenuItem.Size = new System.Drawing.Size(144, 26);
+ this.退出ToolStripMenuItem.Text = "退出";
+ this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click);
+ //
+ // button2
+ //
+ this.button2.AutoSize = true;
+ this.button2.Location = new System.Drawing.Point(267, 70);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(77, 25);
+ this.button2.TabIndex = 4;
+ this.button2.Text = "断开网络";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.AutoSize = true;
+ this.button3.Location = new System.Drawing.Point(267, 113);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(77, 25);
+ this.button3.TabIndex = 5;
+ this.button3.Text = "连接网络";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button4
+ //
+ this.button4.AutoSize = true;
+ this.button4.Location = new System.Drawing.Point(267, 156);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(77, 25);
+ this.button4.TabIndex = 6;
+ this.button4.Text = "刷新信息";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // infoLable
+ //
+ this.infoLable.AutoSize = true;
+ this.infoLable.Font = new System.Drawing.Font("宋体", 10F);
+ this.infoLable.Location = new System.Drawing.Point(12, 70);
+ this.infoLable.Name = "infoLable";
+ this.infoLable.Size = new System.Drawing.Size(112, 17);
+ this.infoLable.TabIndex = 9;
+ this.infoLable.Text = "欢迎使用ipgw";
+ //
+ // button1
+ //
+ this.button1.AutoSize = true;
+ this.button1.Location = new System.Drawing.Point(267, 26);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(77, 25);
+ this.button1.TabIndex = 10;
+ this.button1.Text = "设置";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(366, 213);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.infoLable);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.Name = "MainForm";
+ this.Text = "ipgw";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
+ this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);
+ this.contextMenuStrip1.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.NotifyIcon notifyIcon1;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem 显示窗口ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 退出ToolStripMenuItem;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Label infoLable;
+ private System.Windows.Forms.ToolStripMenuItem 断开网络ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem 连接网络ToolStripMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripMenuItem 获取信息ToolStripMenuItem;
+ private System.Windows.Forms.Button button1;
+ }
+}
+
diff --git a/ipgw_new/MainForm.cs b/ipgw_new/MainForm.cs
new file mode 100644
index 0000000..1d6fb68
--- /dev/null
+++ b/ipgw_new/MainForm.cs
@@ -0,0 +1,245 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ipgw_new
+{
+ public partial class MainForm : Form
+ {
+ private ConfigHelper ch;
+ private ipgwConfig myconfig;
+ private httpHelper hh;
+ private onClosingForm.onClosingEventArgs tempE;
+ private bool onClosingShown = false;
+ ///
+ /// 相应设置窗口改变设置事件
+ ///
+ ///
+ ///
+ protected void ConfigChanged(object sender, ConfigForm.ConfigChangedEventArgs e)
+ {
+ this.myconfig = e.myconfig;
+ }
+ protected void onClosing(object sender, onClosingForm.onClosingEventArgs e)
+ {
+ this.tempE = e;
+ this.onClosingShown = true;
+ if(e.remember)
+ {
+ this.myconfig.onClosing = e.choice;
+ ch.SaveConfig(this.myconfig);
+ }
+ if (e.choice == "exit")
+ {
+ this.notifyIcon1.Visible = false;
+ this.Close();
+ }
+ else
+ {
+ this.WindowState = FormWindowState.Minimized;
+ this.Visible = false;
+ this.notifyIcon1.Visible = true;
+ }
+ }
+ public MainForm()
+ {
+ InitializeComponent();
+ this.ch = new ConfigHelper();
+ this.myconfig = new ipgwConfig();
+ this.hh = new httpHelper();
+ this.tempE = new onClosingForm.onClosingEventArgs();
+ //检查是否为首次启动
+ if(ch.Check())
+ {
+ this.myconfig = ch.LoadConfig();
+ }
+ else
+ {
+ MessageBox.Show("欢迎使用IP控制网关!在开始之前,请进行简单的配置。", "欢迎", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ this.button1_Click(new object(), new EventArgs());
+ }
+ //若需要,自动最小化
+ if(this.myconfig.minOnStart == "true")
+ {
+ this.Visible = false;
+ this.ShowInTaskbar = false;
+ this.WindowState = FormWindowState.Minimized;
+ this.notifyIcon1.Visible = true;
+ }
+ //若需要,进行自动连接
+ if(this.myconfig.linkOnStart == "true")
+ {
+ this.hh.Logout(this.myconfig.uid, this.myconfig.pwd);
+ this.连接网络ToolStripMenuItem_Click(new object(), new EventArgs());
+ this.获取信息ToolStripMenuItem_Click(new object(), new EventArgs());
+ }
+ }
+
+ ///
+ /// 退出前隐藏托盘图标防止残影
+ ///
+ ///
+ ///
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ //判断是否需要弹出确认框
+ if (!this.onClosingShown && this.myconfig.onClosing == "none")
+ {
+ onClosingForm f = new onClosingForm(this.myconfig);
+ f.onClosing += new onClosingForm.onClosingEventHandler(this.onClosing);
+ f.ShowDialog();
+ }
+ //记住了选项
+ if(this.myconfig.onClosing == "minimum")
+ {
+ this.WindowState = FormWindowState.Minimized;
+ this.Visible = false;
+ this.notifyIcon1.Visible = true;
+ e.Cancel = true;
+ return;
+ }
+ if (this.myconfig.onClosing == "exit")
+ {
+ e.Cancel = false;
+ return;
+ }
+
+ //没有记住选项
+ if (tempE.choice == "minimum")
+ {
+ this.onClosingShown = false;
+ e.Cancel = true;
+ }
+ else
+ e.Cancel = false;
+ }
+
+ private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ this.onClosingShown = true;
+ this.tempE.choice = "exit";
+ this.myconfig.onClosing = "exit";
+ this.Close();
+ }
+
+ private void 显示窗口ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ this.ShowInTaskbar = true;
+ this.Visible = true;
+ this.WindowState = FormWindowState.Normal;
+ this.notifyIcon1.Visible = false;
+ }
+
+ ///
+ /// 最小化隐藏窗口并显示托盘图标
+ ///
+ ///
+ ///
+ private void Form1_SizeChanged(object sender, EventArgs e)
+ {
+ if(this.WindowState == FormWindowState.Minimized)
+ {
+ this.Visible = false;
+ this.notifyIcon1.Visible = true;
+ }
+ }
+
+ private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
+ {
+ if(e.Button == MouseButtons.Left)
+ {
+ this.显示窗口ToolStripMenuItem_Click(new object(), new EventArgs());
+ }
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ this.notifyIcon1.Text = "IP控制网关-已断开";
+ if (this.hh.Logout(myconfig.uid, myconfig.pwd))
+ MessageBox.Show("网络已断开", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ else
+ MessageBox.Show("网络断开失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private void button3_Click(object sender, EventArgs e)
+ {
+ LoginResponse t = this.hh.Login(myconfig.uid, myconfig.pwd);
+ if (t.isSuccess)
+ {
+ MessageBox.Show("网络已连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ this.button4_Click(sender, e);
+ }
+ else
+ MessageBox.Show("网络连接失败," + t.info, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private void button4_Click(object sender, EventArgs e)
+ {
+ InfoResponse t = this.hh.GetInfo();
+ if (t.isSuccess)
+ {
+ string info = "已用流量:\t"
+ + (t.flowG == "0G" ? t.flowM : t.flowG + " " + t.flowM)
+ + "\r\n已用时长:\t" + t.time
+ + "\r\n账户余额:\t" + t.balance
+ + "\r\n当前IP地址:\t" + t.myip;
+ this.infoLable.Text = info;
+ this.notifyIcon1.Text = "IP控制网关-已用" + (t.flowG == "0G" ? t.flowM : t.flowG + " " + t.flowM);
+ }
+ else
+ MessageBox.Show("信息获取失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private void 断开网络ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ this.notifyIcon1.Text = "IP控制网关-已断开";
+ if (this.hh.Logout(myconfig.uid, myconfig.pwd))
+ this.notifyIcon1.ShowBalloonTip(5000, "网络已断开", "网络已断开", ToolTipIcon.Info);
+ else
+ this.notifyIcon1.ShowBalloonTip(5000, "网络断开失败", "网络断开失败", ToolTipIcon.Error);
+ }
+
+ private void 连接网络ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ LoginResponse t = this.hh.Login(myconfig.uid, myconfig.pwd);
+ if (t.isSuccess)
+ {
+ this.notifyIcon1.ShowBalloonTip(5000, "网络已连接", "网络已连接", ToolTipIcon.Info);
+ 获取信息ToolStripMenuItem_Click(sender, e);
+ }
+ else
+ this.notifyIcon1.ShowBalloonTip(5000, "网络连接失败", t.info, ToolTipIcon.Error);
+ }
+
+ private void 获取信息ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ InfoResponse t = this.hh.GetInfo();
+ if (t.isSuccess)
+ {
+ string info = "已用流量:\t"
+ + (t.flowG == "0G" ? t.flowM : t.flowG + " " + t.flowM)
+ + "\r\n已用时长:\t" + t.time
+ + "\r\n账户余额:\t" + t.balance
+ + "\r\n当前IP地址:\t" + t.myip;
+ this.infoLable.Text = info;
+ this.notifyIcon1.Text = "IP控制网关-已用" + (t.flowG == "0G" ? t.flowM : t.flowG + " " + t.flowM);
+ this.notifyIcon1.ShowBalloonTip(5000, "账号信息", info, ToolTipIcon.Info);
+ }
+ else
+ this.notifyIcon1.ShowBalloonTip(5000, "信息获取失败", "信息获取失败", ToolTipIcon.Error);
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ ConfigForm cf = new ConfigForm();
+ cf.ConfigChanged += new ConfigForm.ConfigChangedEventHandler(ConfigChanged);
+ cf.ShowDialog();
+ }
+ }
+}
diff --git a/ipgw_new/MainForm.resx b/ipgw_new/MainForm.resx
new file mode 100644
index 0000000..f85f8d3
--- /dev/null
+++ b/ipgw_new/MainForm.resx
@@ -0,0 +1,381 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 157, 17
+
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/ipgw_new/Program.cs b/ipgw_new/Program.cs
new file mode 100644
index 0000000..496958f
--- /dev/null
+++ b/ipgw_new/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ipgw_new
+{
+ static class Program
+ {
+ ///
+ /// 应用程序的主入口点。
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/ipgw_new/Properties/AssemblyInfo.cs b/ipgw_new/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..7ec3a4b
--- /dev/null
+++ b/ipgw_new/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("NEU-IPGW")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NEU-IPGW")]
+[assembly: AssemblyCopyright("Copyright © 2645 Studio 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//将 ComVisible 设置为 false 将使此程序集中的类型
+//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("5d2ed149-e3e8-4c19-a46d-021867637ef9")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("2.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ipgw_new/Properties/Resources.Designer.cs b/ipgw_new/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..7847eac
--- /dev/null
+++ b/ipgw_new/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace ipgw_new.Properties {
+ using System;
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 返回此类使用的缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ipgw_new.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 使用此强类型资源类,为所有资源查找
+ /// 重写当前线程的 CurrentUICulture 属性。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// 查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。
+ ///
+ internal static System.Drawing.Icon ipgw {
+ get {
+ object obj = ResourceManager.GetObject("ipgw", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+ }
+}
diff --git a/ipgw_new/Properties/Resources.resx b/ipgw_new/Properties/Resources.resx
new file mode 100644
index 0000000..62e1b11
--- /dev/null
+++ b/ipgw_new/Properties/Resources.resx
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\resources\ipgw.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/ipgw_new/Properties/Settings.Designer.cs b/ipgw_new/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..04c1df0
--- /dev/null
+++ b/ipgw_new/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace ipgw_new.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/ipgw_new/Properties/Settings.settings b/ipgw_new/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/ipgw_new/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ipgw_new/Resources/ipgw.ico b/ipgw_new/Resources/ipgw.ico
new file mode 100644
index 0000000..4afbb43
Binary files /dev/null and b/ipgw_new/Resources/ipgw.ico differ
diff --git a/ipgw_new/httpHelper.cs b/ipgw_new/httpHelper.cs
new file mode 100644
index 0000000..9a85871
--- /dev/null
+++ b/ipgw_new/httpHelper.cs
@@ -0,0 +1,216 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Diagnostics;
+using System.Text;
+using System.Threading.Tasks;
+using System.IO;
+
+namespace ipgw_new
+{
+ ///
+ /// 连接网络返回结构体
+ ///
+ struct LoginResponse
+ {
+ public bool isSuccess;
+ public string info;
+ public LoginResponse(bool isSuccess, string info)
+ {
+ this.isSuccess = isSuccess;
+ this.info = info;
+ }
+ };
+ ///
+ /// 查询信息返回结构体
+ ///
+ struct InfoResponse
+ {
+ public bool isSuccess;
+ public string flowG;
+ public string flowM;
+ public string time;
+ public string balance;
+ public string myip;
+ public InfoResponse(bool isSuccess = false)
+ {
+ this.isSuccess = isSuccess;
+ flowM = flowG = time = balance = myip = "";
+ }
+ public InfoResponse(bool isSuccess, string[] myinfo)
+ {
+ this.isSuccess = isSuccess;
+ //格式化流量
+ UInt64 flow = Convert.ToUInt64(myinfo[0]);
+ this.flowG = (flow / 1024 / 1024 / 1024).ToString() + "G";
+ UInt64 uflowG = flow / 1024 / 1024 / 1024;
+ flow -= uflowG * 1024 * 1024 * 1024;
+ this.flowM = (flow / 1024 / 1024).ToString() + "M";
+ //格式化时间
+ TimeSpan mytime = new TimeSpan(0, 0, Convert.ToInt32(myinfo[1]));
+ this.time = mytime.Hours + "时" + mytime.Minutes + "分" + mytime.Seconds + "秒";
+
+ this.balance = "¥" + myinfo[2];
+
+ this.myip = myinfo[5];
+ }
+ };
+ class httpHelper
+ {
+ private CookieContainer myCookieContainer;
+ private string loginurl = "http://ipgw.neu.edu.cn:801/srun_portal_pc.php";
+ private string logouturl = "http://ipgw.neu.edu.cn:801/include/auth_action.php";
+ private string infourl = "http://ipgw.neu.edu.cn:801/include/auth_action.php";
+ public httpHelper()
+ {
+ this.myCookieContainer = new CookieContainer();
+ }
+ ///
+ /// 断开网络
+ ///
+ /// 用户名
+ /// 密码
+ /// 是否成功
+ public bool Logout(string uid, string pwd)
+ {
+ string postString = "username=" + uid +
+ "&password=" + pwd + "&action=logout&ajax=1";
+ byte[] postData = Encoding.GetEncoding("GB2312").GetBytes(postString);
+
+ HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(logouturl);
+ myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
+ myHttpWebRequest.ContentLength = postData.Length;
+ myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36";
+ myHttpWebRequest.Accept = "*/*";
+ myHttpWebRequest.Method = "POST";
+
+ try
+ {
+ myHttpWebRequest.GetRequestStream().Write(postData, 0, postData.Length);
+ }
+ catch(Exception ex)
+ {
+ return false;
+ }
+
+ HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
+ StreamReader streamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
+ string responseContent = streamReader.ReadToEnd();
+ myHttpWebResponse.Close();
+ streamReader.Close();
+ Debug.WriteLine(responseContent);
+
+ if (responseContent.Contains("网络已断开"))
+ return true;
+ else
+ return false;
+ }
+
+ ///
+ /// 连接网络,获取信息,并保存Cookie
+ ///
+ ///
+ ///
+ /// 返回的信息
+ public LoginResponse Login(string uid, string pwd)
+ {
+ string postString = "username=" + uid + "&password=" + pwd
+ + "&action=login&ac_id=1&user_ip=&nas_ip=&user_mac=&url=&save_me=0";
+ byte[] postData = Encoding.GetEncoding("GB2312").GetBytes(postString);
+
+ HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(loginurl);
+ myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
+ myHttpWebRequest.ContentLength = postData.Length;
+ myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36";
+ myHttpWebRequest.Accept = "*/*";
+ myHttpWebRequest.Method = "POST";
+ myHttpWebRequest.CookieContainer = myCookieContainer;
+
+ try
+ {
+ myHttpWebRequest.GetRequestStream().Write(postData, 0, postData.Length);
+ }
+ catch (Exception ex)
+ {
+ LoginResponse t = new LoginResponse(false, ex.ToString());
+ return t;
+ }
+
+ HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
+ StreamReader streamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
+ string responseContent = streamReader.ReadToEnd();
+ myHttpWebResponse.Close();
+ streamReader.Close();
+ Debug.WriteLine(responseContent);
+ Debug.WriteLine(myCookieContainer.GetCookieHeader(myHttpWebRequest.RequestUri));
+
+ if (responseContent.Contains("网络已连接"))
+ {
+ LoginResponse t = new LoginResponse(true, "网络已连接");
+ return t;
+ }
+ else
+ {
+ string error = "";
+ if (responseContent.Contains("E2531"))
+ error = "用户不存在";
+ else if (responseContent.Contains("E2553"))
+ error = "密码错误";
+ else if (responseContent.Contains("E2620"))
+ error = "您已经在线了";
+ else if (responseContent.Contains("E2616"))
+ error = "您已欠费";
+ else
+ error = "未知错误";
+ LoginResponse t = new LoginResponse(false, error);
+ return t;
+ }
+ }
+
+ public InfoResponse GetInfo()
+ {
+ Random myRandom = new Random();
+ double k = myRandom.NextDouble() * (100000 + 1);
+ string postString = "k=" + k.ToString()
+ + "&action=get_online_info&key=" + k.ToString() + "&async=false";
+ byte[] postData = Encoding.GetEncoding("GB2312").GetBytes(postString);
+
+ HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(infourl);
+ myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
+ myHttpWebRequest.ContentLength = postData.Length;
+ myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36";
+ myHttpWebRequest.Accept = "*/*";
+ myHttpWebRequest.Method = "POST";
+ myHttpWebRequest.CookieContainer = myCookieContainer;
+
+ try
+ {
+ myHttpWebRequest.GetRequestStream().Write(postData, 0, postData.Length);
+ }
+ catch (Exception ex)
+ {
+ InfoResponse t1 = new InfoResponse(false);
+ return t1;
+ }
+
+ HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
+ StreamReader streamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
+ string responseContent = streamReader.ReadToEnd();
+ myHttpWebResponse.Close();
+ streamReader.Close();
+ Debug.WriteLine(responseContent);
+
+ if(responseContent == "not_online")
+ {
+ InfoResponse t1 = new InfoResponse(false);
+ return t1;
+ }
+ else
+ {
+ InfoResponse t = new InfoResponse(true, responseContent.Split(','));
+ return t;
+ }
+ }
+ }
+}
diff --git a/ipgw_new/ipgw.ico b/ipgw_new/ipgw.ico
new file mode 100644
index 0000000..4afbb43
Binary files /dev/null and b/ipgw_new/ipgw.ico differ
diff --git a/ipgw_new/ipgwConfig.cs b/ipgw_new/ipgwConfig.cs
new file mode 100644
index 0000000..bef113e
--- /dev/null
+++ b/ipgw_new/ipgwConfig.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ipgw_new
+{
+ ///
+ /// 配置类
+ ///
+ public class ipgwConfig
+ {
+ ///
+ /// 用户名
+ ///
+ public string uid { get; set; }
+ ///
+ /// 密码
+ ///
+ public string pwd { get; set; }
+ ///
+ /// 启动时连接,true或false
+ ///
+ public string linkOnStart { get; set; }
+ ///
+ /// 启动时最小化至托盘,true或false
+ ///
+ public string minOnStart { get; set; }
+ ///
+ /// 关闭按钮的动作,none,exit或minimum
+ ///
+ public string onClosing { get; set; }
+ ///
+ /// 空构造
+ ///
+ public ipgwConfig()
+ {
+ this.onClosing = "none";
+ }
+ }
+}
diff --git a/ipgw_new/ipgw_new.csproj b/ipgw_new/ipgw_new.csproj
new file mode 100644
index 0000000..2b0bd8d
--- /dev/null
+++ b/ipgw_new/ipgw_new.csproj
@@ -0,0 +1,122 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {5D2ED149-E3E8-4C19-A46D-021867637EF9}
+ WinExe
+ Properties
+ ipgw_new
+ ipgw_new
+ v4.5.1
+ 512
+ true
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+ ipgw.ico
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ ConfigForm.cs
+
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ Form
+
+
+ onClosingForm.cs
+
+
+
+
+ ConfigForm.cs
+
+
+ MainForm.cs
+
+
+ onClosingForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ipgw_new/onClosingForm.Designer.cs b/ipgw_new/onClosingForm.Designer.cs
new file mode 100644
index 0000000..76e462c
--- /dev/null
+++ b/ipgw_new/onClosingForm.Designer.cs
@@ -0,0 +1,94 @@
+namespace ipgw_new
+{
+ partial class onClosingForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(onClosingForm));
+ this.exitButton = new System.Windows.Forms.Button();
+ this.minimumButton = new System.Windows.Forms.Button();
+ this.rememberCheckBox = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ // exitButton
+ //
+ this.exitButton.AutoSize = true;
+ this.exitButton.Location = new System.Drawing.Point(24, 23);
+ this.exitButton.Name = "exitButton";
+ this.exitButton.Size = new System.Drawing.Size(77, 25);
+ this.exitButton.TabIndex = 0;
+ this.exitButton.Text = "直接关闭";
+ this.exitButton.UseVisualStyleBackColor = true;
+ this.exitButton.Click += new System.EventHandler(this.exitButton_Click);
+ //
+ // minimumButton
+ //
+ this.minimumButton.AutoSize = true;
+ this.minimumButton.Location = new System.Drawing.Point(151, 23);
+ this.minimumButton.Name = "minimumButton";
+ this.minimumButton.Size = new System.Drawing.Size(113, 25);
+ this.minimumButton.TabIndex = 1;
+ this.minimumButton.Text = "最小化至托盘";
+ this.minimumButton.UseVisualStyleBackColor = true;
+ this.minimumButton.Click += new System.EventHandler(this.minimumButton_Click);
+ //
+ // rememberCheckBox
+ //
+ this.rememberCheckBox.AutoSize = true;
+ this.rememberCheckBox.Location = new System.Drawing.Point(151, 69);
+ this.rememberCheckBox.Name = "rememberCheckBox";
+ this.rememberCheckBox.Size = new System.Drawing.Size(119, 19);
+ this.rememberCheckBox.TabIndex = 2;
+ this.rememberCheckBox.Text = "记住我的选择";
+ this.rememberCheckBox.UseVisualStyleBackColor = true;
+ //
+ // onClosingForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(320, 134);
+ this.ControlBox = false;
+ this.Controls.Add(this.rememberCheckBox);
+ this.Controls.Add(this.minimumButton);
+ this.Controls.Add(this.exitButton);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "onClosingForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "确认关闭吗?";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button exitButton;
+ private System.Windows.Forms.Button minimumButton;
+ private System.Windows.Forms.CheckBox rememberCheckBox;
+ }
+}
\ No newline at end of file
diff --git a/ipgw_new/onClosingForm.cs b/ipgw_new/onClosingForm.cs
new file mode 100644
index 0000000..1b0b3b1
--- /dev/null
+++ b/ipgw_new/onClosingForm.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ipgw_new
+{
+ public partial class onClosingForm : Form
+ {
+ private ipgwConfig myconfig;
+ public class onClosingEventArgs : EventArgs
+ {
+ public bool remember { get; set; }
+ public string choice { get; set; }
+ }
+ public delegate void onClosingEventHandler(object sender, onClosingEventArgs e);
+ public event onClosingEventHandler onClosing;
+ public onClosingForm(ipgwConfig myconfig)
+ {
+ InitializeComponent();
+ this.myconfig = myconfig;
+ }
+ ///
+ /// 触发事件的方法
+ ///
+ ///
+ protected virtual void OnonClosing(onClosingEventArgs e)
+ {
+ if (onClosing != null)
+ onClosing(this, e);
+ }
+
+ private void exitButton_Click(object sender, EventArgs e)
+ {
+ onClosingEventArgs e1 = new onClosingEventArgs();
+ e1.choice = "exit";
+ e1.remember = rememberCheckBox.Checked;
+ OnonClosing(e1);
+ this.Close();
+ }
+
+ private void minimumButton_Click(object sender, EventArgs e)
+ {
+ onClosingEventArgs e1 = new onClosingEventArgs();
+ e1.choice = "minimum";
+ e1.remember = rememberCheckBox.Checked;
+ OnonClosing(e1);
+ this.Close();
+ }
+ }
+}
diff --git a/ipgw_new/onClosingForm.resx b/ipgw_new/onClosingForm.resx
new file mode 100644
index 0000000..0d8165d
--- /dev/null
+++ b/ipgw_new/onClosingForm.resx
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+
+
+
\ No newline at end of file