summaryrefslogtreecommitdiff
path: root/src/AuthConfig.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-03-18 15:42:34 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-03-18 15:42:34 +0000
commit7ff627079f6ed776dea1ce6fede1c1a07ef7f288 (patch)
tree8f7b7e5b763dc3841df03928fe2aa50abd35a810 /src/AuthConfig.h
parent58d4dde223e815b75a3bf6bfbd4169818faca3bd (diff)
2007-03-19 Tatsuhiro Tsujikawa <tujikawa at valkyrie dot rednoah com>
To integrate Netrc into exsiting classes: * src/Request.h (_userDefinedAuthConfig): New variable. (findNetrcAuthenticator): New function. (segment): Removed. (setUserDefinedAuthConfig): New function. (resolveHttpAuthConfigItem): New function. (resolveFtpAuthConfigItem): New function. (resolveHttpProxyAuthConfigItem): New function. * src/HttpRequest.h (authConfig): Removed. (proxyAuthConfig): Removed. (setAuthConfig): Removed. (setProxyAuthConfig): Removed. * src/UrlRequest.h (getHeadResult): Added a parameter: authConfigHandle * src/common.h (SingletonHolder.h): New include. * src/main.cc (Netrc.h): New include. (main): Removed initial values of PREF_FTP_USER, PREF_FTP_PASSWD. Added initial value of PREF_NETRC_PATH. Added the initialization of netrc. * src/AuthConfig.h: New class. * src/prefs.h (PREF_NETRC_PATH): New definition. * src/HttpAuthConfig.h: Removed. * src/Netrc.cc (getRequiredNextToken): New function. (skipMacdef): New function. (parse): Rewritten. * src/Netrc.h (getRequiredNextToken): New function. (skipMacdef): New function. * src/Util.h, src/Util.cc (getHomeDir): New function. * src/TrackerWatcherComand.cc (createRequestCommand): Use AuthConfig. * src/FtpConnection.cc (sendUser): Use Request::resolveFtpAuthConfigItem(). (sendPass): Use Request::resolveFtpAuthConfigItem(). * src/Request.cc (findNetrcAuthenticator): New function. (resolveHttpAuthConfigItem): New function. (resolveFtpAuthConfigItem): New function. (resolveHttpProxyAuthConfigItem): New function. * src/UrlRequestInfo.cc: Use AuthConfig. * src/HttpRequest.cc (createRequest): Use authConfig. (getProxyAuthString): Use authConfig. (configure): Removed PREF_HTTP_USER, PREF_HTTP_PASSWD, PREF_HTTP_PROXY_USER, PREF_HTTP_PROXY_PASSWD.
Diffstat (limited to 'src/AuthConfig.h')
-rw-r--r--src/AuthConfig.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/AuthConfig.h b/src/AuthConfig.h
new file mode 100644
index 00000000..580c4853
--- /dev/null
+++ b/src/AuthConfig.h
@@ -0,0 +1,106 @@
+/* <!-- copyright */
+/*
+ * aria2 - The high speed download utility
+ *
+ * Copyright (C) 2006 Tatsuhiro Tsujikawa
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the
+ * OpenSSL library under certain conditions as described in each
+ * individual source file, and distribute linked combinations
+ * including the two.
+ * You must obey the GNU General Public License in all respects
+ * for all of the code used other than OpenSSL. If you modify
+ * file(s) with this exception, you may extend this exception to your
+ * version of the file(s), but you are not obligated to do so. If you
+ * do not wish to do so, delete this exception statement from your
+ * version. If you delete this exception statement from all source
+ * files in the program, then also delete it here.
+ */
+/* copyright --> */
+#ifndef _D_AUTH_CONFIG_H_
+#define _D_AUTH_CONFIG_H_
+
+#include "common.h"
+#include "AuthConfigItem.h"
+#include "prefs.h"
+#include "Option.h"
+
+class AuthConfig {
+private:
+ AuthConfigItemHandle httpAuthConfigItem;
+ AuthConfigItemHandle ftpAuthConfigItem;
+ AuthConfigItemHandle httpProxyAuthConfigItem;
+
+ AuthConfigItemHandle createAuthConfigItem(const string& user, const string& password)
+ {
+ if(user.length() > 0) {
+ return new AuthConfigItem(user, password);
+ } else {
+ return 0;
+ }
+ }
+public:
+
+ AuthConfig():httpAuthConfigItem(0),
+ ftpAuthConfigItem(0),
+ httpProxyAuthConfigItem(0) {}
+
+ AuthConfigItemHandle getHttpAuthConfigItem() const
+ {
+ return httpAuthConfigItem;
+ }
+
+ void setHttpAuthConfigItem(const string& user, const string& password)
+ {
+ httpAuthConfigItem = createAuthConfigItem(user, password);
+ }
+
+ AuthConfigItemHandle getFtpAuthConfigItem() const
+ {
+ return ftpAuthConfigItem;
+ }
+
+ void setFtpAuthConfigItem(const string& user, const string& password)
+ {
+ ftpAuthConfigItem = createAuthConfigItem(user, password);
+ }
+
+ AuthConfigItemHandle getHttpProxyAuthConfigItem() const
+ {
+ return httpProxyAuthConfigItem;
+ }
+
+ void setHttpProxyAuthConfigItem(const string& user, const string& password)
+ {
+ httpProxyAuthConfigItem = createAuthConfigItem(user, password);
+ }
+
+ void configure(const Option* op)
+ {
+ setHttpAuthConfigItem(op->get(PREF_HTTP_USER),
+ op->get(PREF_HTTP_PASSWD));
+ setFtpAuthConfigItem(op->get(PREF_FTP_USER),
+ op->get(PREF_FTP_PASSWD));
+ setHttpProxyAuthConfigItem(op->get(PREF_HTTP_PROXY_USER),
+ op->get(PREF_HTTP_PROXY_PASSWD));
+ }
+};
+
+typedef SharedHandle<AuthConfig> AuthConfigHandle;
+
+#endif // _D_AUTH_CONFIG_H_